Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure Functions adalah pengalaman berbasis peristiwa sesuai permintaan yang memperluas platform aplikasi Azure App Service yang ada dengan kemampuan untuk menerapkan kode yang dipicu oleh peristiwa yang terjadi di Azure, dalam layanan mitra, dan dalam sistem lokal. Functions memungkinkan Anda membangun solusi dengan menyambungkan ke sumber data atau solusi Olahpesan, yang memudahkan proses dan reaksi terhadap peristiwa. Functions berjalan pada pusat data Azure, yang bersifat kompleks dengan banyak komponen yang terintegrasi. Di lingkungan cloud yang dihosting, diharapkan VM dapat kadang-kadang restart atau dipindahkan, dan peningkatan sistem dilakukan. Aplikasi fungsi Anda juga mungkin bergantung pada API eksternal, Layanan Azure, dan database lainnya, yang juga rentan terhadap masalah keandalan berkala.
Artikel ini merinci beberapa praktik terbaik untuk merancang dan menyebarkan aplikasi fungsi efisien yang tetap sehat dan memiliki performa yang baik di lingkungan berbasis cloud.
Pilih paket hosting yang tepat
Saat membuat aplikasi fungsi di Azure, Anda harus memilih paket hosting untuk aplikasi Anda. Paket yang Anda pilih akan berdampak pada performa, keandalan, dan biaya. Opsi ini adalah paket hosting yang disediakan oleh Azure Functions:
Paket Konsumsi Flex umumnya direkomendasikan untuk menghosting aplikasi skala dinamis Anda.
Dalam konteks platform App Service, paket Premium yang digunakan untuk menghosting fungsi Anda secara dinamis adalah paket Elastic Premium (EP). Ada paket Khusus (App Service) lainnya yang disebut Premium. Untuk informasi selengkapnya, lihat Paket Azure Functions Premium.
Paket hosting yang Anda pilih menentukan perilaku berikut:
- Bagaimana aplikasi fungsi Anda diskalakan berdasarkan permintaan dan bagaimana alokasi instans dikelola.
- Sumber daya yang tersedia untuk setiap instans aplikasi fungsi.
- Dukungan untuk fungsionalitas tingkat lanjut, seperti konektivitas Microsoft Azure Virtual Network.
Untuk mempelajari selengkapnya tentang memilih paket hosting yang tepat dan untuk perbandingan detail antara paket, lihat Opsi hosting Azure Functions.
Sangat penting bahwa Anda memilih paket yang tepat ketika Anda membuat aplikasi fungsi Anda. Functions menyediakan kemampuan terbatas untuk mengubah paket hosting Anda, terutama antara paket Konsumsi dan Elastic Premium. Untuk informasi lebih selengkapnya, lihat Migrasi paket.
Mengonfigurasi penyimpanan dengan benar
Functions mengharuskan akun penyimpanan terkait dengan aplikasi fungsi Anda. Koneksi akun penyimpanan digunakan oleh host Functions untuk operasi seperti mengelola pemicu dan mencatat eksekusi fungsi. Ini juga digunakan saat menyesuaikan aplikasi fungsi secara dinamis. Untuk informasi selengkapnya, lihat Pertimbangan penyimpanan untuk Azure Functions.
Konfigurasi sistem file atau akun penyimpanan yang salah di aplikasi fungsi Anda dapat memengaruhi performa dan ketersediaan fungsi Anda. Untuk bantuan pemecahan masalah akun penyimpanan yang konfigurasinya salah, lihat artikel pemecahan masalah penyimpanan.
Pengaturan koneksi penyimpanan
Aplikasi fungsi yang mampu menyesuaikan secara dinamis, dapat berjalan baik dari titik akhir Azure Files di akun penyimpanan Anda atau dari server file yang terkait dengan instans Anda yang skalanya diperluas. Perilaku ini dikontrol oleh pengaturan aplikasi berikut:
Pengaturan ini hanya didukung saat Anda menjalankan paket Premium atau dalam paket Konsumsi di Windows. Mereka tidak diperlukan oleh paket Konsumsi Flex, yang menggunakan kontainer penyimpanan Blob untuk menghosting paket penyebaran alih-alih berbagi Azure Files.
Saat Anda membuat aplikasi fungsi baik di portal Microsoft Azure atau dengan menggunakan Azure CLI atau Azure PowerShell, pengaturan ini dibuat untuk aplikasi fungsi Anda bila diperlukan. Saat Anda membuat sumber daya dari templat Azure Resource Manager (templat ARM), Anda juga perlu menyertakan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
dalam templat.
Pada penyebaran pertama Anda menggunakan templat ARM, jangan sertakan WEBSITE_CONTENTSHARE
, yang dihasilkan untuk Anda.
Anda dapat menggunakan contoh templat ARM berikut untuk membantu mengonfigurasi pengaturan ini dengan benar:
- Paket Konsumsi
- Paket khusus
- Paket Premium dengan integrasi VNET
- Paket konsumsi dengan slot penyebaran
Penting
Layanan Azure Files saat ini tidak mendukung koneksi berbasis identitas. Paket Konsumsi Flex sepenuhnya mendukung identitas terkelola. Untuk informasi selengkapnya, lihat Membuat aplikasi tanpa Azure Files.
Konfigurasi akun penyimpanan
Saat membuat aplikasi fungsi, Anda harus membuat atau menautkan ke akun Azure Storage umum yang mendukung penyimpanan Blob, Antrean, dan Tabel. Functions mengandalkan Azure Storage untuk operasi seperti mengelola pemicu dan mencatat eksekusi fungsi. String koneksi akun penyimpanan untuk aplikasi fungsi Anda ditemukan di pengaturan aplikasi AzureWebJobsStorage
dan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
.
Pertimbangan berikut perlu diingat saat membuat akun penyimpanan ini:
Untuk mengurangi latensi, buat akun penyimpanan di wilayah yang sama dengan aplikasi fungsi.
Untuk meningkatkan performa produksi, gunakan akun penyimpanan terpisah untuk setiap aplikasi fungsi. Aspek ini terutama berlaku untuk fungsi yang dipicu oleh Durable Functions dan Event Hubs.
Untuk fungsi yang dipicu Azure Event Hubs, jangan gunakan akun dengan Data Lake Storage diaktifkan.
Menangani himpunan data besar
Saat berjalan di Linux, Anda dapat menambahkan penyimpanan tambahan dengan memasang berbagi. Memasang berbagi adalah cara yang baik bagi fungsi untuk memproses himpunan data besar yang ada. Untuk informasi lebih lanjut, lihat Memasang berbagi file.
Mengatur fungsi Anda
Sebagai bagian dari solusi Anda, Anda kemungkinan mengembangkan dan menerbitkan beberapa fungsi. Fungsi-fungsi ini sering digabungkan ke dalam satu aplikasi fungsi, tetapi mereka juga dapat berjalan di aplikasi fungsi terpisah. Dalam paket hosting Premium dan Khusus (App Service), beberapa aplikasi fungsi juga dapat berbagi sumber daya yang sama dengan berjalan dalam paket yang sama. Cara Anda mengelompokkan fungsi dan aplikasi fungsi dapat memengaruhi performa, penskalaan, konfigurasi, penyebaran, dan keamanan solusi Anda secara keseluruhan.
Untuk paket Konsumsi dan Premium, semua fungsi dalam aplikasi fungsi diskalakan secara dinamis bersama.
Untuk informasi selengkapnya tentang cara mengatur fungsi Anda, lihat Praktik terbaik organisasi fungsi.
Optimalkan penyebaran
Saat menyebarkan aplikasi fungsi, penting untuk diingat bahwa unit penyebaran untuk fungsi di Azure adalah aplikasi fungsi. Semua fungsi dalam aplikasi fungsi disebarkan pada saat yang sama, biasanya dari paket penyebaran yang sama.
Pertimbangkan opsi ini untuk penyebaran yang berhasil:
Jalankan fungsi Anda dari paket penyebaran. Pendekatan jalankan dari paket ini memberikan manfaat berikut:
- Mengurangi risiko masalah penguncian salinan file.
- Dapat disebarkan langsung ke aplikasi produksi, yang memicu hidupkan ulang.
- Ketahui bahwa semua file dalam paket tersedia untuk aplikasi Anda.
- Meningkatkan performa penyebaran templat ARM.
- Mungkin mengurangi waktu pemanasan awal, terutama untuk fungsi JavaScript dengan pohon paket npm yang besar.
Pertimbangkan untuk menggunakan penyebaran berkelanjutan untuk menyambungkan penyebaran ke solusi kontrol sumber Anda. Penyebaran berkelanjutan juga memungkinkan Anda menjalankan dari paket penyebaran.
Untuk Hosting paket premium, pertimbangkan untuk menambahkan pemicu pemanasan untuk mengurangi latensi saat instans baru ditambahkan. Untuk informasi selengkapnya, lihat Pemicu pemanasan Azure Functions.
Untuk meminimalkan waktu henti penyebaran dan untuk dapat mengembalikan penyebaran, pertimbangkan untuk menggunakan slot penyebaran. Untuk informasi selengkapnya, lihat Slot penyebaran Azure Functions.
Tulis fungsi yang tangguh
Ada beberapa prinsip desain yang dapat Anda ikuti saat menulis kode fungsi Anda yang membantu performa umum dan ketersediaan fungsi Anda. Prinsip-prinsip ini meliputi:
- Hindari fungsi yang memerlukan waktu eksekusi lama
- Merencanakan komunikasi lintas fungsi
- Tulis fungsi agar tetap stateless
- Menulis fungsi defensif
Karena kegagalan sementara umum terjadi dalam komputasi cloud, Anda harus menggunakan pola percobaan ulang saat mengakses sumber daya berbasis cloud. Banyak pemicu dan pengikatan yang sudah menerapkan mencoba kembali.
Desain untuk keamanan
Keamanan paling baik dipertimbangkan selama fase perencanaan dan bukan setelah fungsi Anda siap untuk dijalankan. Untuk Mempelajari cara mengembangkan dan menyebarkan fungsi dengan aman, lihat Mengamankan Azure Functions.
Pertimbangkan konkurensi
Karena permintaan dibangun di aplikasi fungsi Anda sebagai akibat dari peristiwa yang masuk, aplikasi fungsi yang berjalan di paket Konsumsi dan Premium mengalami peluasan skala. Penting untuk memahami cara aplikasi fungsi Anda merespons pemuatan dan cara pemicu dapat dikonfigurasi untuk menangani peristiwa yang masuk. Untuk gambaran umum, lihat Penskalaan yang digerakkan oleh kejadian di Azure Functions.
Paket Khusus (App Service) mengharuskan Anda untuk memenuhi peluasan skala aplikasi fungsi Anda.
Jumlah proses pekerja
Dalam beberapa kasus, lebih efisien untuk menangani muatan dengan membuat beberapa proses, yang disebut proses pekerja bahasa pemrogram, dalam instans sebelum peluasan skala. Jumlah maksimum proses pekerja bahasa pemrogram yang diizinkan dikontrol oleh pengaturan FUNCTIONS_WORKER_PROCESS_COUNT. Default untuk pengaturan ini adalah 1
, yang berarti bahwa beberapa proses tidak digunakan. Setelah jumlah maksimum proses tercapai, aplikasi fungsi mengalami peluasan skala ke lebih banyak instans untuk menangani beban. Pengaturan ini tidak berlaku untuk fungsi pustaka kelas C #, yang berjalan dalam proses host.
Saat menggunakan FUNCTIONS_WORKER_PROCESS_COUNT
pada paket Premium atau paket Khusus (App Service), ingat jumlah inti yang disediakan oleh paket Anda. Misalnya, paket Premium EP2
menyediakan dua inti, maka Anda harus mulai dengan nilai 2
dan bertambah sebanyak dua sesuai kebutuhan, hingga mencapai jumlah maksimum.
Konfigurasi pemicu
Ketika merencanakan throughput dan penyesuaian, penting untuk memahami cara berbagai jenis pemicu memproses peristiwa. Beberapa pemicu memungkinkan Anda untuk mengontrol perilaku batching dan mengelola konkurensi. Seringkali menyesuaikan nilai dalam opsi ini dapat membantu setiap instans menskalakan dengan tepat untuk tuntutan fungsi yang dipanggil. Opsi konfigurasi ini diterapkan pada semua pemicu dalam aplikasi fungsi, dan dipelihara dalam file host.json untuk aplikasi. Lihat bagian Konfigurasi dari referensi pemicu spesifik untuk detail pengaturan.
Untuk mempelajari selengkapnya tentang cara Fungsi memproses aliran pesan, lihat Pemrosesan peristiwa yang andal Azure Functions.
Merencanakan koneksi
Aplikasi fungsi yang berjalan dalam Paket Konsumsi tunduk pada batas koneksi. Batas-batas ini diberlakukan dengan dasar per-instans. Karena batas-batas ini dan sebagai praktik terbaik umum, Anda harus mengoptimalkan koneksi keluar dari kode fungsi Anda. Untuk informasi selengkapnya, lihat Mengelola koneksi di Azure Functions.
Pertimbangan khusus bahasa pemrogram
Untuk bahasa pemrogram pilihan Anda, perlu diingat pertimbangan berikut:
Gunakan token pembatalan (hanya dalam proses).
Memaksimalkan ketersediaan
Cold start adalah pertimbangan utama untuk arsitektur tanpa server. Untuk informasi selengkapnya, lihat Cold starts. Jika cold start menjadi perhatian dalam skenario Anda, temukan pembahasannya lebih lanjut dalam artikel Memahami cold start tanpa server.
Paket premium adalah rencana yang direkomendasikan untuk mengurangi cold start sambil memelihara skala yang dinamis. Anda dapat menggunakan panduan berikut untuk mengurangi cold starts dan meningkatkan ketersediaan di ketiga paket hosting.
Paket | Panduan |
---|---|
Paket premium | • Menerapkan pemicu Pemanasan di aplikasi fungsi Anda • Atur nilai untuk instans Always-Ready dan batas Max Burst • Gunakan dukungan pemicu jaringan virtual saat menggunakan pemicu non-HTTP pada jaringan virtual |
Paket khusus | • Jalankan setidaknya dua instans dengan mengaktifkan Azure App Service Health Check • Menerapkan penyesuaian otomatis |
Paket Konsumsi | • Tinjau penggunaan pola Singleton dan pengaturan konkurensi untuk pengikatan dan pemicu untuk menghindari menempatkan batasan secara artifisial pada cara menyesuaikan aplikasi fungsi Anda. • Tinjau pengaturan functionAppScaleLimit , yang dapat membatasi peluasan skala• Periksa batas Kuota Penggunaan Harian (GB-Sec) yang ditetapkan selama pengembangan dan pengujian. Pertimbangkan untuk menghapus batas ini di lingkungan produksi. |
Memantau secara efektif
Azure Functions menawarkan integrasi bawaan dengan Azure Application Insights untuk memantau eksekusi fungsi Anda dan jejak yang ditulis dari kode Anda. Untuk informasi selengkapnya, lihat Memantau eksekusi di Azure Functions. Azure Monitor juga menyediakan fasilitas untuk memantau kesehatan aplikasi fungsi itu sendiri. Untuk informasi lebih lanjut, lihat Monitor Azure Functions.
Anda harus mengetahui pertimbangan berikut saat menggunakan integrasi Application Insights untuk memantau fungsi Anda:
Pastikan pengaturan aplikasi AzureWebJobsDashboard dihapus. Pengaturan ini didukung dalam versi Fungsi yang lebih lama. Jika ada, menghapus
AzureWebJobsDashboard
meningkatkan performa fungsi Anda.Tinjau Log Application Insights. Jika data yang seharusnya ada ternyata hilang, pertimbangkan untuk menyesuaikan pengaturan pengambilan sampel untuk menangkap skenario pemantauan Anda dengan lebih baik. Anda dapat menggunakan pengaturan
excludedTypes
untuk mengecualikan jenis tertentu dari pengambilan sampel, sepertiRequest
atauException
. Untuk informasi selengkapnya, lihat Mengonfigurasi pengambilan sampel.
Azure Functions juga memungkinkan Anda untuk mengirim log yang dihasilkan sistem dan buatan pengguna ke Log Azure Monitor. Integrasi dengan Azure Monitor Logs saat ini sedang dalam pratinjau publik.
Membangun redundansi
Kebutuhan bisnis Anda mungkin mengharuskan fungsi Anda selalu tersedia, bahkan selama pemadaman pusat data. Untuk mempelajari cara menggunakan pendekatan multi-regional agar fungsi penting Anda selalu berjalan, lihat Keandalan di Azure Functions.