Bagikan melalui


Memperkirakan biaya berbasis konsumsi

Artikel ini menunjukkan kepada Anda cara memperkirakan biaya paket untuk paket hosting Konsumsi dan Konsumsi Flex.

Azure Functions saat ini menawarkan opsi hosting yang berbeda ini untuk aplikasi fungsi Anda, dengan setiap opsi memiliki model harga paket hosting sendiri:

Paket Deskripsi
Paket Konsumsi Flex Anda membayar waktu eksekusi pada instans tempat fungsi Anda berjalan, ditambah instans yang selalu siap . Instans ditambahkan dan dihapus secara dinamis berdasarkan jumlah peristiwa masuk. Ini adalah rencana skala dinamis yang direkomendasikan, yang juga mendukung integrasi jaringan virtual.
Premium Memberi Anda fitur dan mekanisme penskalakan yang sama dengan paket Konsumsi, tetapi dengan peningkatan performa dan integrasi jaringan virtual. Biaya didasarkan pada tingkat harga yang Anda pilih. Untuk mempelajari selengkapnya, lihat Paket Azure Functions Premium.
Khusus (App Service)
(tingkat dasar atau lebih tinggi)
Saat Anda perlu menjalankan Komputer Virtual khusus atau dalam isolasi, gunakan gambar khusus, atau ingin menggunakan kelebihan kapasitas paket App Service Anda. Menggunakan penagihan paket App Service reguler. Biaya didasarkan pada tingkat harga yang Anda pilih.
Aplikasi Kontainer Membuat dan menyebarkan aplikasi fungsi dalam kontainer di lingkungan yang dikelola sepenuhnya yang dihosting oleh Azure Container Apps, yang memungkinkan Anda menjalankan fungsi bersama layanan mikro, API, situs web, dan alur kerja lainnya sebagai program yang dihosting kontainer.
Consumption Anda hanya dikenakan biaya untuk waktu menjalankan aplikasi fungsi Anda. Paket ini mencakup pemberian gratis per langganan.

Anda harus selalu memilih opsi yang paling mendukung persyaratan fitur, performa, dan biaya untuk eksekusi fungsi Anda. Untuk mempelajari selengkapnya, lihat Skala dan hosting Azure Functions.

Artikel ini berfokus pada paket Konsumsi dan Konsumsi Flex karena dalam penagihan paket ini tergantung pada periode aktif eksekusi di dalam setiap instans.

Durable Functions juga dapat berjalan di kedua paket ini. Untuk mempelajari selengkapnya tentang pertimbangan biaya saat menggunakan Durable Functions, lihat Penagihan Durable Functions.

Biaya berbasis konsumsi

Cara penghitungan biaya berbasis konsumsi, termasuk pemberian gratis, tergantung pada paket tertentu. Untuk informasi biaya dan pemberian terbaru, lihat halaman harga Azure Functions.

Ada dua mode di mana biaya Anda ditentukan saat menjalankan aplikasi Anda dalam paket Konsumsi Flex. Setiap mode ditentukan berdasarkan per instans.

Mode penagihan Deskripsi
Sesuai Permintaan Saat berjalan dalam mode sesuai permintaan , Anda hanya ditagih untuk jumlah waktu kode fungsi Anda dijalankan pada instans yang tersedia. Dalam mode sesuai permintaan, tidak diperlukan jumlah instans minimum. Anda ditagih untuk:

• Jumlah total memori yang disediakan saat setiap instans sesuai permintaan secara aktif menjalankan fungsi (dalam GB-detik), dikurangi pemberian gratis GB per bulan.
• Jumlah total eksekusi, dikurangi pemberian gratis (jumlah) eksekusi per bulan.
Selalu siap Anda dapat mengonfigurasi satu atau beberapa instans, yang ditetapkan ke jenis pemicu tertentu (HTTP/Durable/Blob) dan fungsi individual, yang selalu tersedia untuk menangani permintaan. Ketika Anda mengaktifkan instans yang selalu siap, Anda akan ditagih untuk:

• Jumlah total memori yang disediakan di semua instans Anda yang selalu siap, yang dikenal sebagai garis besar (dalam detik GB).
• Jumlah total memori yang disediakan selama waktu setiap instans yang selalu siap secara aktif menjalankan fungsi (dalam detik GB).
• Jumlah total eksekusi.

Dalam penagihan yang selalu siap, tidak ada pemberian gratis.

Untuk informasi terbaru tentang harga eksekusi, biaya garis besar yang selalu siap, dan pemberian gratis untuk eksekusi sesuai permintaan, lihat halaman harga Azure Functions.

Diagram ini menunjukkan bagaimana biaya sesuai permintaan ditentukan dalam paket ini:

Grafik biaya sesuai permintaan paket Konsumsi Flex berdasarkan beban (jumlah instans) dan waktu.

Selain waktu eksekusi, saat menggunakan satu atau beberapa instans yang selalu siap, Anda juga ditagih dengan tarif dasar yang lebih rendah untuk jumlah instans yang selalu siap yang Anda pertahankan. Waktu eksekusi untuk instans yang selalu siap mungkin lebih murah daripada waktu eksekusi pada instans dengan eksekusi sesuai permintaan.

Penting

Dalam artikel ini, harga sesuai permintaan digunakan untuk membantu memahami contoh perhitungan. Selalu periksa biaya saat ini di halaman harga Azure Functions saat memperkirakan biaya yang mungkin Anda keluarkan saat menjalankan fungsi Anda dalam paket Konsumsi Flex.

Pertimbangkan aplikasi fungsi yang hanya terdiri dari pemicu HTTP dengan dan fakta dasar ini:

  • Pemicu HTTP menangani 40 permintaan konstan per detik.
  • Pemicu HTTP menangani 10 permintaan bersamaan.
  • Pengaturan ukuran memori instans adalah 2048 MB.
  • Tidak ada instans yang selalu siap dikonfigurasi, yang berarti aplikasi dapat menskalakan ke nol.

Dalam situasi seperti ini, harga lebih bergantung pada jenis pekerjaan yang dilakukan selama eksekusi kode. Mari kita lihat dua skenario beban kerja:

  • Beban kerja terikat CPU: Dalam beban kerja yang terikat CPU, tidak ada keuntungan untuk memproses beberapa permintaan secara paralel dalam instans yang sama. Ini berarti Bahwa Anda lebih baik mendistribusikan setiap permintaan ke instansnya sendiri sehingga permintaan selesai secepat mungkin tanpa ketidakcocokan. Dalam skenario ini, Anda harus mengatur konkurensi pemicu HTTP rendah dari 1. Dengan 10 permintaan bersamaan, aplikasi menskalakan ke keadaan stabil sekitar 10 instans, dan setiap instans terus aktif memproses satu permintaan sekaligus.

    Karena ukuran setiap instans adalah ~2 GB, konsumsi untuk satu instans yang terus aktif adalah 2 GB * 3600 s = 7200 GB-s. Dengan asumsi tingkat eksekusi sesuai permintaan sebesar $0,000026 GB-s (tanpa pemberian gratis yang diterapkan) menjadi per jam per instans $0.1872 USD . Karena aplikasi terikat CPU diskalakan ke 10 instans, total tarif per jam untuk waktu eksekusi adalah $1.872 USD.

    Demikian pula, biaya per eksekusi sesuai permintaan (tanpa pemberian gratis) 40 permintaan per detik sama dengan 40 * 3600 = 144,000 atau 0.144 million eksekusi per jam. Dengan asumsi tingkat sesuai permintaan per $0.40 juta eksekusi, total (bebas hibah) biaya eksekusi per jam adalah 0.144 * $0.40, yaitu $0.0576 per jam.

    Dalam skenario ini, total biaya per jam menjalankan sesuai permintaan pada 10 instans adalah $1.872 + $0.0576s = $1.9296 USD.

  • Beban kerja terikat IO: Dalam beban kerja terikat IO, sebagian besar waktu aplikasi dihabiskan untuk menunggu permintaan masuk, yang mungkin dibatasi oleh throughput jaringan atau faktor hulu lainnya. Karena input terbatas, kode dapat memproses beberapa operasi secara bersamaan tanpa dampak negatif. Dalam skenario ini, asumsikan Anda dapat memproses semua 10 permintaan bersamaan pada instans yang sama.

    Karena biaya konsumsi hanya didasarkan pada memori setiap instans aktif, perhitungan biaya konsumsi hanyalah 2 GB * 3600 s = 7200 GB-s, yang pada tingkat eksekusi sesuai permintaan yang diasumsikan (tanpa pemberian gratis yang diterapkan) adalah $0.1872 USD per jam untuk instans tunggal.

    Seperti dalam skenario terikat CPU, biaya per eksekusi sesuai permintaan (tanpa pemberian gratis) sebesar 40 permintaan per detik sama dengan 40 * 3600 = 144,000 atau 0,144 juta eksekusi per jam. Dalam hal ini, total (bebas hibah) biaya eksekusi 0.144 * $0.40per jam , yaitu $0.0576 per jam.

    Dalam skenario ini, total biaya per jam menjalankan sesuai permintaan pada satu instans adalah $0.1872 + $0.0576 = $0.245 USD.

Saat memperkirakan biaya keseluruhan menjalankan fungsi Anda dalam paket apa pun, ingatlah bahwa runtime Functions menggunakan beberapa layanan Azure lainnya, yang masing-masing ditagih secara terpisah. Saat Anda memperkirakan harga untuk aplikasi fungsi, pemicu dan pengikatan apa pun yang Anda miliki yang terintegrasi dengan layanan Azure lainnya mengharuskan Anda membuat dan membayar layanan lain tersebut.

Untuk fungsi yang berjalan dalam paket Konsumsi, total biaya adalah biaya eksekusi fungsi Anda, ditambah biaya bandwidth dan layanan lainnya.

Saat memperkirakan biaya keseluruhan aplikasi fungsi dan layanan terkait Anda, gunakan kalkulator harga Azure.

Biaya terkait Deskripsi
Akun penyimpanan Setiap aplikasi fungsi mengharuskan Anda memiliki akun Tujuan Umum Azure Storage terkait, yang ditagih secara terpisah. Akun ini digunakan secara internal oleh runtime Functions, tetapi Anda juga dapat menggunakannya untuk pemicu dan pengikatan Storage. Jika Anda tidak memiliki akun penyimpanan, akun penyimpanan dibuat untuk Anda saat aplikasi fungsi dibuat. Untuk mempelajari selengkapnya, lihat Persyaratan akun Storage.
Application Insights Fungsi bergantung pada Application Insights untuk memberikan pengalaman pemantauan berkinerja tinggi untuk aplikasi fungsi Anda. Meskipun tidak diperlukan, Anda harus mengaktifkan integrasi Application Insights. Pemberian gratis data telemetri disertakan setiap bulan. Untuk mempelajari selengkapnya, lihat halaman harga Azure Monitor.
Bandwidth jaringan Anda dapat dikenakan biaya untuk transfer data tergantung pada arah dan skenario pergerakan data. Untuk mempelajari selengkapnya, lihat Detail harga Bandwidth.

Perilaku yang memengaruhi waktu eksekusi

Perilaku fungsi Anda berikut dapat memengaruhi waktu eksekusi:

  • Pemicu dan pengikatan: Waktu yang dibutuhkan untuk membaca input dari dan menulis output ke pengikatan fungsi Anda dihitung sebagai waktu eksekusi. Misalnya, saat fungsi Anda menggunakan pengikatan output untuk menulis pesan ke antrean penyimpanan Azure, waktu eksekusi Anda mencakup waktu yang diperlukan untuk menulis pesan ke antrean, yang disertakan dalam perhitungan biaya fungsi.

  • Eksekusi asinkron: Waktu fungsi Anda menunggu hasil permintaan asinkron (await di C#) dihitung sebagai waktu eksekusi. Perhitungan GB-detik didasarkan pada waktu mulai dan akhir fungsi dan penggunaan memori selama periode tersebut. Apa yang terjadi selama waktu itu dalam hal aktivitas CPU tidak diperhitungkan dalam kalkulasi. Anda mungkin dapat mengurangi biaya selama operasi asinkron dengan menggunakan Durable Functions. Anda tidak akan dikenai biaya atas waktu yang dihabiskan untuk menunggu di fungsi orkestrator.

Dalam faktur Anda, Anda dapat melihat data terkait biaya Total Eksekusi - Functions dan Waktu Eksekusi - Functions, bersama dengan biaya yang ditagih sebenarnya. Namun, data faktur ini adalah agregat bulanan untuk periode faktur sebelumnya.

Metrik tingkat aplikasi fungsi

Untuk lebih memahami biaya fungsi Anda, Anda dapat menggunakan Azure Monitor untuk melihat metrik terkait biaya yang saat ini dihasilkan oleh aplikasi fungsi Anda.

Gunakan penjelajah metrik Azure Monitor untuk melihat data terkait biaya untuk aplikasi fungsi paket Consumption Anda dalam format grafis.

  1. Di portal Microsoft Azure, navigasikan ke aplikasi fungsi Anda.

  2. Di panel kiri, gulir ke bawah ke Pemantauan dan pilih Metrik.

  3. Dari Metrik, pilih Jumlah Eksekusi Fungsi dan Jumlah untuk Agregasi. Ini menambahkan jumlah hitungan eksekusi selama periode yang dipilih ke bagan.

    Menentukan metrik aplikasi fungsi untuk ditambahkan ke bagan

  4. Pilih Tambahkan metrik dan ulangi langkah 2-4 untuk menambahkan Unit Eksekusi Fungsi ke bagan.

Bagan yang dihasilkan berisi total untuk kedua metrik eksekusi dalam rentang waktu yang dipilih, yang dalam hal ini adalah dua jam.

Grafik jumlah eksekusi fungsi dan unit eksekusi

Karena jumlah unit eksekusi jauh lebih besar dari jumlah eksekusi, bagan hanya menunjukkan unit eksekusi.

Bagan ini menunjukkan total 1,11 miliar Function Execution Units yang dikonsumsi dalam periode dua jam, diukur dalam MB-milidetik. Untuk mengonversi ke GB-detik, bagi dengan 1024000. Dalam contoh ini, aplikasi fungsi mengonsumsi 1110000000 / 1024000 = 1083.98 GB-detik. Anda dapat mengambil nilai ini dan mengalikannya dengan harga waktu eksekusi saat ini di halaman harga fungsi, yang memberi Anda biaya dua jam ini, dengan asumsi Anda telah menggunakan pemberian waktu eksekusi gratis.

Metrik tingkat fungsi

Unit eksekusi fungsi adalah kombinasi waktu eksekusi dan penggunaan memori Anda, yang menjadikannya metrik yang sulit untuk memahami penggunaan memori. Data memori bukan metrik yang saat ini tersedia melalui Azure Monitor. Namun, jika Anda ingin mengoptimalkan penggunaan memori aplikasi Anda, dapat menggunakan data penghitung performa yang dikumpulkan oleh Application Insights.

Jika Anda belum melakukannya, aktifkan Application Insights di aplikasi fungsi Anda. Dengan integrasi ini diaktifkan, Anda dapat meminta data telemetri ini di portal.

Anda dapat menggunakan penjelajah metrik Azure Monitor di portal Microsoft Azure atau REST API untuk mendapatkan data Metrik Monitor.

Menentukan penggunaan memori

Di bawah Pemantauan, pilih Log (Analitik), lalu salin kueri telemetri berikut dan tempelkan ke jendela kueri dan pilih Jalankan. Kueri ini mengembalikan total penggunaan memori pada setiap waktu yang menjadi sampel.

performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value

Hasilnya terlihat seperti contoh berikut:

stempel waktu [UTC] nama value
12/9/2019, 1.05.14,947 Byte Privat 209.932.288
12/9/2019, 1.06.14,994 Byte Privat 212.189.184
12/9/2019, 1.06.30,010 Byte Privat 231.714.816
12/9/2019, 1.07.15,040 Byte Privat 210.591.744
12/9/2019, 1.12.16,285 Byte Privat 216.285.184
12/9/2019, 1.12.31,376 Byte Privat 235.806.720

Menentukan durasi

Azure Monitor melacak metrik di tingkat sumber daya, untuk Fungsi adalah aplikasi fungsi. Integrasi Application Insights memperlihatkan metrik berdasarkan per fungsi. Berikut ini contoh kueri analitik untuk mendapatkan durasi rata-rata fungsi:

customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
nama averageDurationMilliseconds
QueueTrigger AvgDurationMs 16,087
QueueTrigger MaxDurationMs 90,249
QueueTrigger MinDurationMs 8,522

Langkah berikutnya