Opsi hosting Azure Functions
Saat membuat aplikasi fungsi di Azure, Anda harus memilih opsi hosting untuk aplikasi Anda. Azure memberi Anda opsi hosting ini untuk kode fungsi Anda:
Opsi Hosting | Layanan | Ketersediaan | Dukungan kontainer |
---|---|---|---|
Paket Konsumsi | Azure Functions | Tersedia secara umum (GA) | Tidak |
Paket Konsumsi Flex | Azure Functions | Pratinjau | Tidak |
Paket premium | Azure Functions | GA | Linux |
Paket khusus | Azure Functions | GA | Linux |
Aplikasi Kontainer | Azure Container Apps | GA | Linux |
Opsi hosting Azure Functions difasilitasi oleh infrastruktur Azure App Service pada komputer virtual Linux dan Windows. Opsi hosting yang Anda pilih menentukan perilaku berikut:
- Cara penskalaan aplikasi fungsi Anda.
- Sumber daya yang tersedia untuk setiap instans aplikasi fungsi.
- Dukungan untuk fungsionalitas tingkat lanjut, seperti konektivitas Microsoft Azure Virtual Network.
- Dukungan untuk kontainer Linux.
Paket yang Anda pilih juga berdampak pada biaya untuk menjalankan kode fungsi Anda. Untuk mengetahui informasi lebih lanjut, lihat Penagihan.
Artikel ini menyediakan perbandingan terperinci antara berbagai opsi hosting. Untuk mempelajari selengkapnya tentang menjalankan dan mengelola kode fungsi Anda di kontainer Linux, lihat Dukungan kontainer Linux di Azure Functions.
Gambaran umum paket
Berikut ini adalah ringkasan manfaat berbagai opsi untuk hosting Azure Functions:
Opsi | Keuntungan |
---|---|
Paket Konsumsi | Bayar untuk sumber daya komputasi hanya ketika fungsi Anda berjalan (bayar sesuai penggunaan) dengan skala otomatis. Pada paket Konsumsi, instans dari host Azure Functions ditambahkan dan dihapus secara dinamis berdasarkan jumlah peristiwa yang masuk. ✔ Paket hosting default yang menyediakan hosting tanpa server sejati. ✔ Bayar hanya saat fungsi Anda berjalan. ✔ Menskalakan secara otomatis, bahkan selama periode beban tinggi. |
Paket Konsumsi Flex | Dapatkan skalabilitas tinggi dengan pilihan komputasi, jaringan virtual, dan penagihan prabayar. Pada paket Konsumsi Flex, instans host Functions ditambahkan dan dihapus secara dinamis berdasarkan konkurensi per instans yang dikonfigurasi dan jumlah peristiwa masuk. ✔ Kurangi cold start dengan menentukan sejumlah instans yang telah disediakan sebelumnya (selalu siap). ✔ Mendukung jaringan virtual untuk keamanan tambahan. ✔ Bayar saat fungsi Anda berjalan. ✔ Menskalakan secara otomatis, bahkan selama periode beban tinggi. |
Paket premium | Secara otomatis menskalakan berdasarkan permintaan menggunakan pekerja yang sudah ada sebelumnya, yang menjalankan aplikasi tanpa penundaan setelah diam, berjalan pada instans yang lebih kuat, dan terhubung ke jaringan virtual. Pertimbangkan paket Azure Functions Premium dalam situasi berikut: ✔ Aplikasi fungsi Anda berjalan terus menerus, atau hampir terus menerus. ✔ Anda menginginkan kontrol instans yang lebih baik dan ingin menyebarkan beberapa aplikasi fungsi pada paket yang sama dengan penskalaan berbasis peristiwa. ✔ Anda memiliki jumlah eksekusi kecil yang tinggi dan tagihan eksekusi yang tinggi, tetapi detik GB rendah seperti paket Konsumsi. ✔ Anda memerlukan lebih banyak opsi CPU atau memori daripada yang disediakan oleh paket konsumsi. ✔ Kode Anda perlu berjalan lebih lama dari waktu eksekusi maksimum yang diizinkan pada paket Konsumsi. ✔ Anda memerlukan konektivitas jaringan virtual. ✔ Anda ingin menyediakan gambar Linux kustom untuk menjalankan fungsi Anda. |
Paket khusus | Jalankan fungsi Anda dalam paket Azure App Service dengan tarif paket Azure App Service reguler. Terbaik untuk skenario jangka panjang di mana Durable Functions tidak dapat digunakan. Pertimbangkan paket Azure App Service dalam situasi berikut: ✔ Anda memiliki komputer virtual yang sudah ada dan kurang digunakan yang sudah menjalankan instans App Service lainnya. ✔ Anda harus memiliki penagihan yang dapat diprediksi sepenuhnya, atau Anda perlu menskalakan instans secara manual. ✔ Anda ingin menjalankan beberapa aplikasi web dan aplikasi fungsi pada paket yang sama ✔ Anda memerlukan akses ke pilihan ukuran komputasi yang lebih besar. ✔ Isolasi komputasi penuh dan akses jaringan aman yang disediakan oleh App Service Environment (ASE). ✔ Penggunaan memori yang sangat tinggi dan skala tinggi (ASE). |
Aplikasi Kontainer | Membuat dan menyebarkan aplikasi fungsi dalam kontainer di lingkungan yang dikelola sepenuhnya yang dihosting oleh Azure Container Apps. Gunakan model pemrograman Azure Functions untuk membangun aplikasi fungsi asli cloud berbasis peristiwa, tanpa server. Jalankan fungsi Anda bersama layanan mikro, API, situs web, dan alur kerja lainnya sebagai program yang dihosting kontainer. Pertimbangkan untuk menghosting fungsi Anda di Container Apps dalam situasi berikut: ✔ Anda ingin mengemas pustaka kustom dengan kode fungsi Anda untuk mendukung aplikasi lini bisnis. ✔ Anda perlu memigrasikan eksekusi kode dari aplikasi lokal atau lama ke layanan mikro asli cloud yang berjalan dalam kontainer. ✔ Ketika Anda ingin menghindari overhead dan kompleksitas pengelolaan kluster Kubernetes dan komputasi khusus. ✔ Fungsi Anda memerlukan daya pemrosesan kelas atas yang disediakan oleh sumber daya komputasi GPU khusus. |
Tabel yang tersisa dalam artikel ini membandingkan opsi hosting berdasarkan berbagai fitur dan perilaku.
Dukungan sistem operasi
Tabel ini menunjukkan dukungan sistem operasi untuk opsi hosting.
Hosting | Penyebaran Linux1 | Penyebaran Windows2 |
---|---|---|
Paket Konsumsi | ✅ Khusus kode ❌ Kontainer (tidak didukung) |
✅ Khusus kode |
Paket Konsumsi Flex | ✅ Khusus kode ❌ Kontainer (tidak didukung) |
❌ Tidak didukung |
Paket premium | ✅ Khusus kode ✅ Wadah |
✅ Khusus kode |
Paket khusus | ✅ Khusus kode ✅ Wadah |
✅ Khusus kode |
Aplikasi Kontainer | ✅ Hanya kontainer | ❌ Tidak didukung |
- Linux adalah satu-satunya sistem operasi yang didukung untuk tumpukan runtime Python.
- Penyebaran Windows hanya kode. Functions saat ini tidak mendukung kontainer Windows.
Durasi batas waktu aplikasi fungsi
Durasi batas waktu untuk fungsi dalam aplikasi fungsi ditentukan oleh functionTimeout
properti dalam file proyek host.json . Properti ini berlaku khusus untuk eksekusi fungsi. Setelah pemicu memulai eksekusi fungsi, fungsi perlu mengembalikan/merespons dalam durasi batas waktu. Untuk menghindari batas waktu, penting untuk menulis fungsi yang kuat. Untuk informasi selengkapnya, lihat Meningkatkan performa dan keandalan Azure Functions.
Tabel berikut menampilkan nilai default dan maksimum (dalam menit) untuk paket tertentu:
Paket | Default | Maximum1 |
---|---|---|
Paket Konsumsi | 5 | 10 |
Paket Konsumsi Flex | 30 | Tidak terikat2 |
Paket premium | 304 | Tidak terikat2 |
Paket khusus | 304 | Tidak terikat3 |
Aplikasi Kontainer | 30 | Tidak terikat5 |
- Terlepas dari pengaturan batas waktu aplikasi fungsi, 230 detik adalah jumlah waktu maksimum yang dapat diambil oleh fungsi yang dipicu HTTP untuk menanggapi permintaan. Ini karena batas waktu menganggur default Azure Load Balancer. Untuk waktu pemrosesan yang lebih lama, pertimbangkan untuk menggunakan pola asinkron Durable Functions atau tangguhkan pekerjaan aktual dan kembalikan respons segera.
- Tidak ada durasi batas waktu eksekusi maksimum yang diberlakukan. Namun, masa tenggang yang diberikan untuk eksekusi fungsi adalah 60 menit selama penskalaan untuk paket Konsumsi Flex dan Premium, dan masa tenggang 10 menit diberikan selama pembaruan platform.
- Mengharuskan paket App Service diatur ke Always On. Masa tenggang 10 menit diberikan selama pembaruan platform.
- Batas waktu default untuk runtime host Functions versi 1.x tidak terbatas.
- Ketika jumlah minimum replika diatur ke nol, batas waktu default bergantung pada pemicu tertentu yang digunakan dalam aplikasi.
Dukungan bahasa
Untuk detail tentang dukungan tumpukan bahasa asli saat ini di Functions, lihat Bahasa yang didukung di Azure Functions.
Sisik
Tabel berikut membandingkan perilaku penskalaan dari berbagai paket hosting.
Instans maksimum diberikan berdasarkan aplikasi per fungsi (Konsumsi) atau per paket (Premium/Khusus), kecuali dinyatakan lain.
Paket | Peluasan skala | Maks # instans |
---|---|---|
Paket Konsumsi | Digerakkan oleh peristiwa. Peluasan skala secara otomatis, bahkan selama periode beban tinggi. Infrastruktur Functions menskalakan sumber daya CPU dan memori dengan menambahkan lebih banyak instans host Functions, berdasarkan jumlah peristiwa pemicu masuk. | Jendela: 200 Linux: 1001 |
Paket Konsumsi Flex | Penskalakan per fungsi. Keputusan penskalaan berbasis peristiwa dihitung per fungsi, yang menyediakan cara yang lebih deterministik untuk menskalakan fungsi di aplikasi Anda. Dengan pengecualian HTTP, penyimpanan Blob (Event Grid), dan Durable Functions, semua jenis pemicu fungsi lainnya dalam skala aplikasi Anda pada instans independen. Semua pemicu HTTP dalam aplikasi Anda menskalakan bersama-sama sebagai grup pada instans yang sama, seperti halnya semua pemicu penyimpanan Blob (Event Grid). Semua pemicu Durable Functions juga berbagi instans dan menskalakan bersama-sama. | Hanya dibatasi oleh total penggunaan memori semua instans di seluruh wilayah tertentu. Untuk informasi selengkapnya, lihat Memori instans. |
Paket premium | Digerakkan oleh peristiwa. Peluasan skala secara otomatis, bahkan selama periode beban tinggi. Infrastruktur Azure Functions menskalakan sumber daya CPU dan memori dengan menambahkan lebih banyak instans host Functions, berdasarkan jumlah peristiwa yang dipicu fungsinya. | Jendela: 100 Linux: 20-1002 |
Paket khusus3 | Manual/skala otomatis | 10-30 100 (ASE) |
Aplikasi Kontainer | Digerakkan oleh peristiwa. Peluasan skala secara otomatis, bahkan selama periode beban tinggi. Infrastruktur Azure Functions menskalakan sumber daya CPU dan memori dengan menambahkan lebih banyak instans host Functions, berdasarkan jumlah peristiwa yang dipicu fungsinya. | 300-10004 |
- Selama peluasan skala, saat ini ada batas 500 instans per langganan per jam untuk aplikasi Linux pada paket Konsumsi.
- Di beberapa wilayah, aplikasi Linux pada paket Premium dapat menskalakan ke 100 instans. Untuk informasi selengkapnya, lihat artikel paket Premium.
- Untuk batas tertentu untuk berbagai opsi paket App Service, lihat batas paket App Service.
- Pada Container Apps, defaultnya adalah 10 instans, tetapi Anda dapat mengatur jumlah maksimum replika, yang memiliki maksimum keseluruhan 1000. Pengaturan ini dihormati selama ada cukup kuota inti yang tersedia. Saat membuat aplikasi fungsi dari portal Azure Anda dibatasi hingga 300 instans.
Perilaku cold start
Paket | Detail |
---|---|
Paket Konsumsi | Aplikasi dapat menskalakan ke nol saat diam, yang berarti beberapa permintaan mungkin memiliki lebih banyak latensi saat startup. Rencana konsumsi memang memiliki beberapa pengoptimalan untuk membantu mengurangi waktu mulai dingin, termasuk menarik dari fungsi tempat penampung yang sudah memiliki proses host dan bahasa yang berjalan. |
Paket Konsumsi Flex | Mendukung instans yang selalu siap untuk mengurangi penundaan saat menyediakan instans baru. |
Paket premium | Mendukung instans yang selalu siap untuk menghindari cold start dengan memungkinkan Anda mempertahankan satu atau beberapa instans yang selalu hangat. |
Paket khusus | Saat berjalan dalam paket Khusus, host Functions dapat berjalan terus menerus pada sejumlah instans yang ditentukan, yang berarti bahwa cold start tidak benar-benar menjadi masalah. |
Aplikasi Kontainer | Tergantung pada jumlah minimum replika: • Ketika diatur ke nol: aplikasi dapat menskalakan ke nol saat diam dan beberapa permintaan mungkin memiliki lebih banyak latensi saat startup. • Ketika diatur ke satu atau beberapa: proses host berjalan terus menerus, yang berarti bahwa cold start bukan masalah. |
Batas layanan
Sumber daya | Paket Konsumsi | Paket KonsumsiFlex 13 | Paket premium | /Paket khusus ASE | Aplikasi Kontainer |
---|---|---|---|---|---|
Durasi waktu habis default (min) | 5 | 30 | 30 | 301 | 3016 |
Durasi waktu habis maksimum (min) | 10 | tidak terikat8 | tidak terikat8 | tidak terikat2 | tidak terikat17 |
Koneksi keluar tanpa ikatan maksimum (per instans) | 600 aktif (total 1200) | tanpa ikatan | tanpa ikatan | tanpa ikatan | tanpa ikatan |
Ukuran permintaan maksimum (MB)3 | 100 | 100 | 100 | 100 | 100 |
Panjang string kueri maksimum3 | 4096 | 4096 | 4096 | 4096 | 4096 |
Panjang URL permintaan maksimum3 | 8192 | 8192 | 8192 | 8192 | 8192 |
ACU per instans | 100 | Bervariasi | 210-840 | 100-840/210-2509 | Bervariasi |
Memori maksimum (GB per instans) | 1.5 | 414 | 3.5-14 | 1.75-14/3.5-14 | Bervariasi |
Jumlah instans maks (Windows/Linux) | 200/100 | 1000 15 | 100/20 | bervariasi menurut SKU/10010 | 10-30018 |
Aplikasi fungsi per paket12 | 100 | 100 | 100 | tanpa ikatan4 | tanpa ikatan4 |
Paket App Service | 100 per wilayah | n/a | 100 per grup sumber daya | 100 per grup sumber daya | n/a |
Slot penyebaran per aplikasi11 | 2 | n/a | 3 | 1-2010 | tidak didukung |
Penyimpanan (sementara)5 | 0,5 GB | 0,8 GB | 21-140 GB | 11-140 GB | n/a |
Penyimpanan (bertahan) | 1 GB6 | 0 GB6 | 250 GB | 10-1000 GB10 | n/a |
Domain kustom per aplikasi | 5007 | 500 | 500 | 500 | tidak didukung |
Domain kustom dukungan SSL | koneksi SNI SSL tanpa ikatan disertakan | SSL SNI tanpa ikatan dan 1 koneksi IP SSL disertakan | SSL SNI tanpa ikatan dan 1 koneksi IP SSL disertakan | SSL SNI tanpa ikatan dan 1 koneksi IP SSL disertakan | tidak didukung |
Catatan tentang batas layanan:
- Secara default, batas waktu untuk runtime Functions 1.x dalam paket App Service tidak terbatas.
- Mengharuskan paket App Service diatur ke Always On. Bayar dengan tarif standar. Masa tenggang 10 menit diberikan selama pembaruan platform.
- Batasan ini diatur dalam host.
- Jumlah aktual aplikasi fungsi yang dapat Anda host tergantung pada aktivitas aplikasi, ukuran instans komputer, dan pemanfaatan sumber daya yang sesuai.
- Batas penyimpanan adalah ukuran total konten dalam penyimpanan sementara di semua aplikasi dalam paket App Service yang sama. Untuk paket Konsumsi di Linux, penyimpanan saat ini 1,5 GB.
- Paket konsumsi menggunakan berbagi Azure Files untuk penyimpanan yang bertahan. Saat Anda menyediakan berbagi Azure Files Anda sendiri, batas ukuran berbagi tertentu bergantung pada akun penyimpanan yang Anda tetapkan untuk WEBSITE_CONTENTAZUREFILECONNECTIONSTRING. Di Linux, Anda harus secara eksplisit memasang berbagi Azure Files Anda sendiri untuk paket Konsumsi dan Konsumsi Flex.
- Saat aplikasi fungsi Anda dihosting dalam paket Konsumsi, hanya opsi CNAME yang didukung. Untuk aplikasi fungsi dalam paket Premium atau paket App Service, Anda dapat memetakan domain kustom menggunakan CNAME atau catatan A.
- Tidak ada durasi batas waktu eksekusi maksimum yang diberlakukan. Namun, masa tenggang yang diberikan untuk eksekusi fungsi adalah 60 menit selama skala dalam dan 10 menit selama pembaruan platform.
- Pekerja adalah peran yang menghosting aplikasi pelanggan. Pekerja tersedia dalam tiga ukuran tetap: Satu vCPU/3,5 GB RAM; Dua vCPU/7 GB RAM; Empat vCPU/14 GB RAM.
- Lihat Batas App Service untuk detailnya.
- Termasuk slot produksi.
- Saat ini ada batas 5000 aplikasi fungsi dalam langganan tertentu.
- Paket Konsumsi Flex saat ini dalam pratinjau.
- Ukuran instans paket Konsumsi Flex saat ini didefinisikan sebagai 2.048 MB atau 4.096 MB. Untuk informasi selengkapnya, lihat Memori instans.
- Paket Konsumsi Flex selama pratinjau memiliki kuota langganan regional yang membatasi total penggunaan memori semua instans di seluruh wilayah tertentu. Untuk informasi selengkapnya, lihat Memori instans.
- Ketika jumlah minimum replika diatur ke nol, batas waktu default bergantung pada pemicu tertentu yang digunakan dalam aplikasi.
- Ketika jumlah minimum replika diatur ke satu atau beberapa replika.
- Di Container Apps, Anda dapat mengatur jumlah maksimum replika, yang dihormati selama ada cukup kuota inti yang tersedia.
Fitur jaringan
Fitur | Paket Konsumsi | Paket Konsumsi Flex | Paket premium | /Paket khusus ASE | Aplikasi Kontainer* |
---|---|---|---|---|---|
Pembatasan IP masuk | ✅Ya | ✅Ya | ✅Ya | ✅Ya | ✅Ya |
Titik Akhir Privat Masuk | ❌Tidak | ✅Ya | ✅Ya | ✅Ya | ❌Tidak |
Integrasi Virtual Network | ❌Tidak | ✅Ya (Regional) | ✅Ya (Regional) | ✅Ya (Regional dan Gateway) | ✅Ya |
Pemicu jaringan virtual (non-HTTP) | ❌Tidak | ✅Ya | ✅Ya | ✅Ya | ✅Ya |
Sambungan hibrid (khusus Windows) | ❌Tidak | ❌ Tidak | ✅Ya | ✅Ya | ❌Tidak |
Pembatasan IP keluar | ❌Tidak | ✅Ya | ✅Ya | ✅Ya | ✅Ya |
*Untuk informasi selengkapnya, lihat Jaringan di lingkungan Azure Container Apps.
Billing
Paket | Detail |
---|---|
Paket Konsumsi | Bayar hanya untuk waktu fungsi Anda berjalan. Penagihan didasarkan pada jumlah eksekusi, waktu eksekusi, dan memori yang digunakan. |
Paket Konsumsi Flex | Penagihan didasarkan pada jumlah eksekusi, memori instans saat aktif menjalankan fungsi, ditambah biaya instans yang selalu siap. Untuk informasi selengkapnya, lihat Penagihan paket Konsumsi Flex. |
Paket premium | Paket premium didasarkan pada jumlah detik inti dan memori yang digunakan di seluruh instans yang diperlukan dan yang sudah ada sebelumnya. Setidaknya satu contoh per paket harus selalu tetap panas. Paket ini menyediakan harga yang paling dapat diprediksi. |
Paket khusus | Anda membayar sama untuk aplikasi fungsi dalam Paket Azure App Service seperti yang Anda bayarkan untuk sumber daya Layanan Aplikasi lainnya, seperti aplikasi web. Untuk ASE, ada tarif bulanan tetap yang membayar infrastruktur dan tidak berubah dengan ukuran lingkungan. Ada juga biaya per paket Azure App Service vCPU. Semua aplikasi yang dihosting di ASE berada di SKU harga terisolasi. Untuk informasi selengkapnya, lihat artikel gambaran umum ASE. |
Aplikasi Kontainer | Penagihan di Azure Container Apps didasarkan pada jenis paket Anda. Untuk informasi selengkapnya, lihat Tagihan di Azure Container Apps. |
Untuk perbandingan biaya langsung antara paket hosting dinamis (Konsumsi, Konsumsi Flex, dan Premium), lihat halaman harga Azure Functions. Untuk harga berbagai opsi paket Khusus, lihat halaman harga Azure App Service. Untuk harga hosting Container Apps, lihat Harga Azure Container Apps.
Batasan untuk membuat aplikasi fungsi baru di grup sumber daya yang sudah ada
Dalam beberapa kasus, saat mencoba membuat paket hosting baru untuk aplikasi fungsi Anda di grup sumber daya yang ada, Anda mungkin menerima salah satu kesalahan berikut:
- Tingkat harga tidak diizinkan dalam grup sumber daya ini
- <SKU_name> pekerja tidak tersedia dalam grup sumber daya <resource_group_name>
Hal ini dapat terjadi jika kondisi berikut terpenuhi:
- Anda membuat aplikasi fungsi di grup sumber daya yang sudah ada yang pernah berisi aplikasi fungsi atau aplikasi web lain. Misalnya, aplikasi Konsumsi Linux tidak didukung dalam grup sumber daya yang sama dengan paket Linux Dedicated atau Linux Premium.
- Aplikasi fungsi baru Anda dibuat di kawasan yang sama dengan aplikasi sebelumnya.
- Aplikasi sebelumnya dalam beberapa hal tidak kompatibel dengan aplikasi baru Anda. Kesalahan ini dapat terjadi antara SKU, sistem operasi, atau karena fitur tingkat platform lainnya, seperti dukungan zona ketersediaan.
Alasan ini terjadi adalah karena cara aplikasi fungsi dan paket aplikasi web dipetakan ke kumpulan sumber daya yang berbeda saat dibuat. SKU yang berbeda memerlukan serangkaian kemampuan infrastruktur yang berbeda pula. Saat Anda membuat aplikasi di grup sumber daya, aplikasi tersebut dipetakan dan ditetapkan ke kumpulan sumber daya tertentu. Jika Anda mencoba membuat paket lain di grup sumber daya tersebut dan kumpulan yang dipetakan tidak memiliki sumber daya yang diperlukan, kesalahan ini terjadi.
Jika kesalahan ini terjadi, buat aplikasi fungsi dan paket hosting Anda di grup sumber daya baru.