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.

Langkah berikutnya