Bandingkan Biaya AWS Lambda, Fargate, dan EC2 Untuk Beban Kerja Anda

Nov 28 2022
Memilih platform komputasi AWS untuk beban kerja Anda dalam hal biaya bukanlah tugas yang mudah. Saya melakukan perhitungan untuk salah satu proyek yang saya kerjakan dan memutuskan untuk membagikan temuan saya.
Foto oleh Tema NordWood di Unsplash

Memilih platform komputasi AWS untuk beban kerja Anda dalam hal biaya bukanlah tugas yang mudah. Saya melakukan perhitungan untuk salah satu proyek yang saya kerjakan dan memutuskan untuk membagikan temuan saya. Pada artikel ini, saya akan melakukan perbandingan tingkat tinggi dan sederhana untuk menguraikan cara membuat perbandingan.

Karena bukan ahli dalam memanfaatkan semua opsi komputasi, saya mendorong Anda untuk menggunakan bagian komentar untuk memperbaiki asumsi saya yang salah atau menyarankan peningkatan dan ide yang harus dimasukkan ke dalam upaya perbandingan.

Pengaturan Konfigurasi

Dengan menggunakan Kalkulator Harga AWS , kami dapat membandingkan biaya layanan bulanan dari penyiapan yang kira-kira setara dalam daya komputasi. Saya sudah menemukan ini menjadi tugas yang sulit untuk dilakukan. Setiap layanan memiliki jenis konfigurasinya sendiri untuk dipilih, memiliki spesifikasi yang berbeda tidak hanya untuk vCPU dan memori, tetapi juga untuk batasan bandwidth jaringan, memiliki batasan untuk menggunakan volume GPU atau EBS, dan sebagainya.

Untuk menyederhanakannya, mari kita bandingkan layanan dengan persyaratan hanya karena tersedia 1 vCPU dan sekitar 2 GB memori. Untuk Lambda, skala vCPU bersama dengan ukuran memori yang dapat dikonfigurasi. Lambda mendapatkan 1 vCPU per 1,769 GB memori , jadi ini akan menjadi pilihan kami untuk Lambda. Fargate telah mengonfigurasi jumlah vCPU dan ukuran memori, sehingga kami dapat memilih dengan tepat 1 vCPU dan memori 2 GB yang akan tersedia. Untuk EC2, untuk nilai vCPU dan memori yang begitu rendah pada generasi saat ini dari jenis instans EC2, satu-satunya pilihan kami adalah menggunakan keluarga T yang memiliki kinerja yang dapat meledak.. Hal ini membawa tingkat kerumitan lain karena instans diberi harga berdasarkan penggunaan di bawah atau sama dengan kinerja CPU standar, dan biaya tambahan terjadi saat konsumsi melebihi standar. Namun, pada tipe instans generasi sebelumnya , tipe instans m1.small cukup memenuhi persyaratan dengan 1 vCPU dan memori 1,7 GB, jadi kami akan menggunakannya daripada tipe instans keluarga T. Selain itu, opsi berikut tidak dipertimbangkan dalam perbandingan demi kesederhanaan:

  • CPU arsitektur ARM
  • OS Non-Linux
  • Spot instance dan temukan tugas Fargate
  • Transfer dan penyimpanan data
  • Instans cadangan dan hitung paket penghematan

Secara intuitif, EC2 seharusnya menjadi layanan yang paling murah, diikuti oleh Fargate dan Lambda. Alasannya adalah bahwa setiap layanan berikutnya membutuhkan lebih sedikit administrasi infrastruktur daripada yang sebelumnya, menyerahkan tugas manajemen infrastruktur ke AWS. Grafik berikut menunjukkan harga bulanan dari setiap layanan berdasarkan persentase penggunaan waktu.

Harga EC2 memang yang terendah, diikuti oleh Fargate, sementara harga Lambda sekitar dua kali lipat dari Fargate. Harga EC2 dapat diturunkan lebih jauh dengan menggunakan jenis instans keluarga T yang dapat meledak, bergantung pada kebutuhan sebenarnya dari beban kerja Anda.

Penagihan Dan Faktor Startup

Seperti yang kita lihat di atas, biaya menjalankan Lambda cukup tinggi dibandingkan dengan Fargate dan EC2. Mari kita periksa faktor-faktor yang dapat memengaruhi mengapa kita masih dapat memilih Lambda untuk komputasi meskipun harganya lebih mahal.

Hal pertama yang perlu dipertimbangkan adalah interval penagihan layanan. EC2 ditagih per detik, dengan durasi minimal 60 detik. Penagihan dimulai saat instans diluncurkan dan berhenti saat instans dihentikan atau dihentikan. Fargate ditagih per detik, juga dengan durasi minimal 60 detik. Penagihan dimulai saat gambar ditarik dan berhenti saat tugas berakhir. Lambda, di sisi lain, ditagih per milidetik tanpa batas minimum. Penagihan dimulai saat kode inisialisasi atau penangan Anda mulai berjalan dan berhenti saat kode Anda kembali atau dihentikan.

Inilah salah satu alasan mengapa Lambda adalah pilihan yang baik untuk beban kerja yang jarang dijalankan dan berumur pendek.

Kedua, menjalankan instans EC2 baru membutuhkan waktu sekitar satu menit atau lebih, mirip dengan startup tugas Fargate baru. Sebagai perbandingan, pembuatan instans Lambda baru biasanya membutuhkan waktu beberapa ratus milidetik untuk runtime dengan bahasa yang ditafsirkan dan hingga beberapa detik untuk runtime dengan bahasa yang dikompilasi.

Bergantung pada beban kerja Anda, Anda mungkin tidak dapat menunggu sebentar untuk memulai instans EC2 atau tugas Fargate, dan karenanya perlu menjaga instans atau tugas tetap berjalan. Ini tidak berlaku untuk Lambda, karena biasanya Anda menunggu beberapa detik untuk memulai instans baru. Anda juga dapat menjaga instans Lambda tetap hangat dengan harga kecil dengan melakukan ping setiap beberapa menit melalui acara CloudWatch.

Untuk menggarisbawahi dua faktor yang dijelaskan di atas, kami sekarang dapat membandingkan penagihan layanan untuk jenis komputasi penangan API web, di mana kami ingin tidak ada penundaan startup dan siap untuk melayani lalu lintas kapan saja.

Instans EC2 dan tugas Fargate harus digunakan 100% dari waktu agar tidak mengalami masalah startup. Penagihan Lambda di sisi lain bergantung pada waktu aktual saat kode penangan Anda berjalan untuk melayani lalu lintas ke API web. Jadi, lebih baik menggunakan Lambda hingga Lambda digunakan sekitar 40 hingga 50% dari waktu, meskipun harganya lebih tinggi untuk daya komputasi yang sama. Hal ini membuat Lambda cocok untuk tugas pemrosesan cepat, misalnya tugas IO seperti membaca data dari DynamoDB, dan sebagainya.

Contoh Dunia Nyata

Kami menggunakan fungsi Lambda di salah satu proyek kami untuk menangani permintaan API. Ini memiliki konfigurasi memori 2 GB terutama untuk meminimalkan penundaan start-dingin, jika tidak, itu bisa memiliki konfigurasi yang lebih rendah. Ini menggunakan pustaka .NET yang memiliki lebih dari 4 MB, jadi perbedaan mulai dingin antara misalnya memori 512 MB dan 2 GB terlihat jelas.

Lalu lintas ke Lambda terus meningkat selama beberapa bulan terakhir, dan kami ingin mengetahui apakah sudah waktunya untuk mempertimbangkan migrasi ke layanan lain.

Menurut metrik pemanfaatan harian, fungsi tersebut dipanggil rata-rata sekitar 250 ribu kali per hari, yaitu 2,89 permintaan per detik. Durasi eksekusi rata-rata sekitar 250 ms. 2,89 dikalikan 250 kira-kira 723. Artinya, fungsi tersebut digunakan kira-kira 70% dari waktu.

Metrik interval satu menit yang lebih terperinci menunjukkan bahwa pola pemanggilan runcing, namun secara umum beban ditangani oleh kurang dari 10 contoh fungsi secara bersamaan.

Metrik yang dikumpulkan memberi sinyal bahwa kami telah melewati ambang di mana penagihan Lambda sudah optimal. Secara potensial, untuk menangani lalu lintas dengan daya komputasi yang sama dan memiliki ruang untuk berkembang, kami dapat memanfaatkan, misalnya, 2 tugas Fargate multi-AZ, masing-masing memiliki 0,5 vCPU dan memori 1 GB. Berdasarkan grafik di atas, ini akan mengurangi biaya penagihan bulanan dari $53,50 menjadi $36,04. Kami dapat mencoba menurunkan biaya lebih jauh dengan menggunakan instans EC2 yang dapat meledak dengan ukuran yang tepat dan menghosting wadah atau aplikasi di sana. Ini tentu saja hanya ide teoretis kasar yang memerlukan verifikasi pada aplikasi nyata.

Sebagai catatan penutup, saya ingin menyebutkan bahwa biaya penagihan mentah harus diperpanjang dengan mempertimbangkan kompleksitas dan biaya manajemen infrastruktur. Untuk skenario tertentu, ini mungkin berarti bahwa meskipun misalnya biaya penagihan EC2 mungkin beberapa persen lebih rendah daripada Fargate atau Lambda, perbedaannya masih belum menutupi kompleksitas solusi yang ditambahkan.

Kami adalah ACTUM Digital dan tulisan ini ditulis oleh Milan Gatyas , .NET Tech Lead of Apollo Division. Jangan ragu untuk menghubungi kami.