Opsi hosting Azure Functions
Saat membuat aplikasi fungsi di Azure, Anda harus memilih paket hosting untuk aplikasi Anda. Ada tiga paket hosting Azure Functions dasar yang disediakan oleh Azure Functions: Paket konsumsi, paket Premium, dan paket Khusus (App Service). Paket hosting ini difasilitasi oleh infrastruktur Azure App Service dan umumnya tersedia (GA) pada komputer virtual Linux dan Windows.
Paket hosting Azure Functions 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.
Selain hosting Azure Functions, Anda juga dapat menghosting aplikasi fungsi kontainer dalam kontainer yang dapat disebarkan ke kluster Kubernetes atau ke Azure Container Apps. Jika Anda memilih untuk menghosting fungsi Anda di kluster Kubernetes, pertimbangkan untuk menggunakan kluster Kubernetes yang mendukung Azure Arc. Untuk mempelajari selengkapnya tentang menyebarkan aplikasi kontainer kustom, lihat Hosting Azure Container Apps azure Functions.
Artikel ini menyediakan perbandingan terperinci antara berbagai paket hosting, termasuk opsi hosting berbasis kontainer.
Catatan
Menghosting kontainer Azure Functions pada kluster Kubernetes dengan dukungan Azure Arc dan Azure Container Apps saat ini dalam pratinjau.
Gambaran umum paket
Berikut ini adalah ringkasan manfaat dari tiga paket hosting Azure Functions utama:
Rencana | Keuntungan |
---|---|
Paket Konsumsi | Menskalakan secara otomatis dan hanya membayar sumber daya komputasi saat fungsi Anda berjalan. Pada paket Konsumsi, instans dari host Azure Functions ditambahkan dan dihapus secara dinamis berdasarkan jumlah peristiwa yang masuk. ✔ Paket hosting default. ✔ Bayar hanya saat fungsi Anda berjalan. ✔ Menskalakan secara otomatis, bahkan selama periode beban tinggi. |
Paket premium | Secara otomatis menskalakan berdasarkan permintaan menggunakan pekerja yang telah dipanaskan sebelumnya, yang menjalankan aplikasi tanpa penundaan setelah tidak digunakan, 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 memiliki jumlah eksekusi kecil yang tinggi dan tagihan eksekusi yang tinggi, tetapi detik GB rendah seperti paket Konsumsi. ✔ Anda membutuhkan 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 fitur yang tidak tersedia pada paket Konsumsi, seperti konektivitas jaringan virtual. ✔ Anda ingin memberikan citra 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 VM yang sudah ada dan kurang digunakan yang sudah menjalankan instans Azure App Service lainnya. ✔ Penskalaan dan biaya prediktif diperlukan. |
Tabel perbandingan dalam artikel ini juga menyertakan opsi hosting berikut, yang menyediakan jumlah kontrol dan isolasi tertinggi untuk menjalankan aplikasi fungsi Anda.
Opsi Hosting | Detail |
---|---|
ASE | Lingkungan App Service (ASE) adalah fitur App Service yang menyediakan lingkungan yang sepenuhnya terisolasi dan berdedikasi untuk menjalankan aplikasi App Service dalam skala tinggi dengan aman. ASE sesuai untuk beban kerja aplikasi yang memerlukan: ✔ Skala yang sangat tinggi. ✔ Isolasi komputasi penuh dan akses jaringan yang aman. ✔ Penggunaan memori tinggi. |
Azure Container Apps | Azure Container Apps adalah lingkungan terkelola penuh yang memungkinkan Anda menjalankan layanan mikro dan aplikasi dalam kontainer pada platform tanpa server. Azure Container Apps memungkinkan Anda menjalankan fungsi dengan kekuatan Azure Kubernetes Service (AKS) yang mendasarinya sambil menghapus kompleksitas harus bekerja dengan API Kubernetes. |
Kubernetes (Direct atau Azure Arc) |
Kube menyediakan lingkungan yang sepenuhnya terisolasi dan khusus yang berjalan di atas platform Kube. Kubernetes sesuai untuk beban kerja aplikasi yang memerlukan: ✔ Persyaratan perangkat keras khusus. ✔ Isolasi dan akses jaringan yang aman. ✔ Kemampuan untuk dijalankan di lingkungan hibrid atau multi-cloud. ✔ Jalankan bersama aplikasi Kube dan layanan yang ada. |
Tabel yang tersisa di artikel ini membandingkan paket pada berbagai fitur dan perilaku. Untuk perbandingan biaya antara paket hosting dinamis (Konsumsi dan Premium), lihat halaman harga Azure Functions. Untuk harga berbagai opsi paket Khusus, lihat halaman harga Azure App Service.
Sistem operasi/runtime
Tabel berikut menunjukkan sistem operasi dan dukungan bahasa untuk paket hosting.
Linux1,2 kode-saja |
Windows kode saja | Linux1,2,3 Kontainer Docker |
|
---|---|---|---|
Paket Konsumsi | C# JavaScript Java Python PowerShell Core TypeScript |
C# JavaScript Java PowerShell Core TypeScript |
Tidak ada dukungan |
Paket premium | C# JavaScript Java Python PowerShell Core TypeScript |
C# JavaScript Java PowerShell Core TypeScript |
C# JavaScript Java PowerShell Core Python TypeScript |
Paket khusus | C# JavaScript Java Python TypeScript |
C# JavaScript Java PowerShell Core TypeScript |
C# JavaScript Java PowerShell Core Python TypeScript |
ASE | C# JavaScript Java Python TypeScript |
C# JavaScript Java PowerShell Core TypeScript |
C# JavaScript Java PowerShell Core Python TypeScript |
Kubernetes (langsung) | n/a | n/a | C# JavaScript Java PowerShell Core Python TypeScript |
Azure Arc (Pratinjau) | C# JavaScript Java Python TypeScript |
n/a | C# JavaScript Java PowerShell Core Python TypeScript |
1 Linux adalah satu-satunya sistem operasi yang didukung untuk tumpukan runtime Python.
2 Dukungan PowerShell di Linux saat ini dalam pratinjau.
3 Linux adalah satu-satunya sistem operasi yang didukung untuk kontainer Docker.
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 informasi selengkapnya, lihat Meningkatkan performa dan keandalan Azure Functions.
Tabel berikut menampilkan nilai default dan maksimum (dalam menit) untuk paket tertentu:
Rencana | Default | Maximum1 |
---|---|---|
Paket Konsumsi | 5 | 10 |
Paket premium | 302 | Tidak terbatas3 |
Paket khusus | 302 | Tidak terbatas3 |
1Terlepas dari pengaturan batas waktu aplikasi fungsi, 230 detik adalah jumlah waktu maksimum yang dapat diambil oleh fungsi yang dipicu HTTP untuk merespons 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.
2 Batas waktu default untuk runtime Functions versi 1.x adalah tidak terbatas.
3 Dijamin hingga 60 menit. Patching OS dan runtime, patching kerentanan, dan skala perilaku masih dapat membatalkan eksekusi fungsi sehingga memastikan untuk menulis fungsi yang kuat.
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.
Rencana | Peluasan skala | Maks # instans |
---|---|---|
Paket Konsumsi | Digerakkan oleh peristiwa. Peluasan skala secara otomatis, bahkan selama periode beban tinggi. Infrastruktur Azure Functions menskalakan CPU dan sumber daya memori dengan menambahkan instans tambahan dari host Functions, berdasarkan jumlah peristiwa pemicu yang masuk. | Jendela: 200 Linux: 1001 |
Paket premium | Digerakkan oleh peristiwa. Peluasan skala secara otomatis, bahkan selama periode beban tinggi. Infrastruktur Azure Functions menskalakan CPU dan sumber daya memori dengan menambahkan instans tambahan dari host Functions, berdasarkan jumlah kejadian yang memicu fungsinya. | Jendela: 100 Linux: 20-1002 |
Paket khusus3 | Manual/skala otomatis | 10-30 |
ASE3 | Manual/skala otomatis | 100 |
Kubernetes | Penskalaan otomatis berdasarkan kejadian untuk kluster Kube menggunakan KEDA. | Bervariasi menurut kluster |
1 Selama peluasan skala, saat ini ada batas 500 instans per langganan per jam untuk aplikasi Linux pada paket Konsumsi.
2 Di beberapa wilayah, aplikasi Linux pada paket Premium dapat menskalakan ke 100 instans. Untuk informasi selengkapnya, lihat artikel paket Premium.
3 Untuk batasan khusus untuk berbagai opsi paket App Service, lihat batas paket App Service.
Perilaku cold start
Rencana | Detail |
---|---|
Paket Konsumsi | Aplikasi dapat menskalakan ke nol saat tidak digunakan, yang berarti beberapa permintaan mungkin memiliki latensi tambahan saat startup. Paket konsumsi memang memiliki beberapa pengoptimalan untuk membantu mengurangi waktu cold start, termasuk menarik fungsi tempat penampung yang telah dipanaskan sebelumnya yang sudah memiliki host fungsi dan proses bahasa yang berjalan. |
Paket premium | Instans yang selalu panas untuk menghindari cold start. |
Paket khusus | Saat berjalan dalam paket Khusus, host Fungsi dapat berjalan terus menerus, yang berarti bahwa tidak akan bermasalah dengan cold start. |
ASE | Saat berjalan dalam paket Khusus, host Fungsi dapat berjalan terus menerus, yang berarti bahwa tidak akan bermasalah dengan cold start. |
Kubernetes | Tergantung pada konfigurasi KEDA, aplikasi dapat dikonfigurasi untuk menghindari cold start. Jika dikonfigurasi untuk menskalakan ke nol, maka cold start akan terjadi di peristiwa baru. |
Batas layanan
Sumber Daya | Paket Konsumsi | Paket premium | Paket khusus | ASE | Kubernetes |
---|---|---|---|---|---|
Durasi waktu habis default (min) | 5 | 30 | 301 | 30 | 30 |
Durasi waktu habis maksimum (min) | 10 | tanpa ikatan7 | tidak terikat2 | tanpa ikatan | tanpa ikatan |
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 | Tergantung pada kluster |
Panjang string kueri maksimum3 | 4096 | 4096 | 4096 | 4096 | Tergantung pada kluster |
Panjang URL permintaan maksimum3 | 8192 | 8192 | 8192 | 8192 | Tergantung pada kluster |
ACU per instans | 100 | 210-840 | 100-840 | 210-2508 | Harga AKS |
Memori maksimum (GB per instans) | 1.5 | 3.5-14 | 1,75-14 | (3.5) == 14 | Node apa pun didukung |
Jumlah instans maks (Windows/Linux) | 200/100 | 100/20 | bervariasi menurut SKU9 | 1009 | Tergantung pada kluster |
Aplikasi fungsi per paket11 | 100 | 100 | tanpa ikatan4 | tanpa ikatan | tanpa ikatan |
Paket App Service | 100 per wilayah | 100 per grup sumber daya | 100 per grup sumber daya | - | - |
Slot penyebaran per aplikasi10 | 2 | 3 | 1-209 | 20 | n/a |
Penyimpanan5 | 5 GB | 250 GB | 50-1000 GB | 1 TB | n/a |
Domain kustom per aplikasi | 5006 | 500 | 500 | 500 | n/a |
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 | n/a |
1 Secara default, batas waktu habis untuk runtime Functions 1.x dalam paket App Service tidak diikat.
2 Memerlukan paket App Service diatur ke Selalu Hidup. Bayar dengan tarif standar.
3 Batas ini diatur dalam host.
4 Jumlah aplikasi fungsi aktual yang dapat Anda hosting tergantung pada aktivitas aplikasi, ukuran mesin instans, dan pemanfaatan sumber daya yang sesuai.
5 Batas penyimpanan adalah ukuran konten total di penyimpanan sementara pada semua aplikasi dalam paket App Service yang sama. Paket konsumsi menggunakan Azure Files untuk penyimpanan sementara.
6 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.
7 Dijamin hingga 60 menit.
8 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.
9 Lihat batasan App Service untuk detailnya.
10 Termasuk slot produksi.
11 Saat ini ada batas 5000 aplikasi fungsi dalam langganan tertentu.
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 mendapati 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. Hal 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 akan terjadi.
Jika kesalahan ini terjadi, buat aplikasi fungsi dan paket hosting Anda di grup sumber daya baru.
Fitur jaringan
Fitur | Paket Konsumsi | Paket premium | Paket khusus | ASE |
---|---|---|---|---|
Pembatasan IP masuk | ✅Ya | ✅Ya | ✅Ya | ✅Ya |
Titik Akhir Privat Masuk | ❌Tidak | ✅Ya | ✅Ya | ✅Ya |
Integrasi Virtual Network | ❌Tidak | ✅Ya (Regional) | ✅Ya (Regional dan Gateway) | ✅Ya |
Pemicu jaringan virtual (non-HTTP) | ❌Tidak | ✅Ya | ✅Ya | ✅Ya |
Sambungan hibrid (khusus Windows) | ❌Tidak | ✅Ya | ✅Ya | ✅Ya |
Pembatasan IP keluar | ❌Tidak | ✅Ya | ✅Ya | ✅Ya |
Billing
Rencana | Detail |
---|---|
Paket Konsumsi | Bayar hanya untuk waktu fungsi Anda berjalan. Penagihan didasarkan pada jumlah eksekusi, waktu eksekusi, dan memori yang digunakan. |
Paket premium | Paket premium didasarkan pada jumlah detik inti dan memori yang digunakan di seluruh instans yang diperlukan dan yang telah dipanaskan 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. |
Lingkungan App Service (ASE) | Ada tarif bulanan tetap untuk ASE yang membayar infrastruktur dan tidak akan berubah dengan ukuran ASE. Ada juga biaya per paket Azure App Service vCPU. Semua aplikasi yang dihosting di ASE berada di SKU harga terisolasi. |
Kubernetes | Kamu hanya membayar biaya kluster Kube; tidak ada penagihan tambahan untuk Fungsi. Aplikasi fungsi Anda berjalan sebagai beban kerja aplikasi di atas kluster Anda, seperti aplikasi biasa. |