Harga dan biaya tanpa server: AWS Lambda

Halo, Habr! Saya mencoba membuat terjemahan lebih baik dan akan senang dengan kritik Anda.
(Catatan: harga akurat pada Agustus 2018)

AWS Lambda memiliki 263 item baris dengan label harga unik. Misalnya, mereka dapat disebut "Percepatan InterRegion Inbound menggunakan lokasi tepi di luar AS, Eropa atau Jepang, Dari UE (Paris) ke UE (London)", dan ada di masing-masing dari 17 wilayah. Secara total, ini adalah 4.471 posisi individu yang dapat ditagih kepada Anda ketika Anda menyelesaikan Lambda.

Selain itu, ada 635.035 posisi untuk layanan EC2, 12.261 untuk Route53 dan 15.283 untuk API Gateway. Secara total, Amazon Web Services memiliki tarif lebih dari satu juta individu untuk berbagai layanan. Kebijakan penetapan harga mereka sangat kompleks sehingga hanya ada API lengkap untuk memeriksa harga. Dengan itu, saya mendapat angka-angka ini (meskipun Lambda tidak termasuk dalam kalkulator harga).

Harga Lambda sangat nontrivial: pertama, tingkat gratis untuk satu juta permintaan pertama digunakan, diikuti oleh label harga $ 0,20 untuk setiap juta permintaan berikutnya, ditambah $ 0,00001667 untuk GB-detik dari "waktu komputasi" yang digunakan selama bulan tersebut, lebih dari yang biayanya Gateway API ($ 3,50 per juta permintaan) untuk mengirim permintaan HTTP ke Lambda. Anda juga akan dikenai biaya untuk setiap transfer data Lambda Anda ($ 0,09 per GB), serta untuk setiap pertanyaan ke Dynamo DB.

Apa itu "waktu komputasi"?


Kami menemukan bahwa $ 0,00001667 dibayar per GB-detik dari waktu komputasi Lambda. Gb-detik adalah unit yang agak aneh, bukan? Itu bisa berarti jumlah detik ketika Anda menggunakan memori 1 GB, tetapi sebenarnya itu adalah jumlah detik ketika perhitungan dilakukan, dikalikan dengan jumlah GB yang dialokasikan untuk perhitungan ini.

Bagi mereka yang tidak suka microcenters sebagai satuan pengukuran, saya mengumpulkan angka-angka dalam diagram yang menunjukkan berapa banyak memori dan waktu CPU yang Anda dapatkan untuk 1-6 dolar per juta permintaan:

gambar

Amazon menerbitkan harga yang tidak termasuk biaya dasar $ 0,20, tetapi saya telah memasukkannya dalam perhitungan saya.

Dan berapa satu milidetik dari waktu prosesor? Komputasi milidetik di Apple II mewakili 3.000 siklus prosesor. Di laptop Intel i7 saya, ini 4 juta siklus. Dalam kasus Amazon, mereka meningkatkan kecepatan prosesor tergantung pada berapa banyak memori yang Anda gunakan. Dengan kata lain, kinerja Anda adalah memori * waktu siklus CPU , di mana waktu siklus CPU menurun, sebanding dengan memori yang digunakan. Akselerasi CPU ini berlanjut hingga sumber daya dari satu inti prosesor habis, setelah itu Anda diberikan sumber daya dari inti kedua, yang mungkin berguna atau tidak digunakan sama sekali, tergantung pada pembuatan aplikasi Anda.

Dengan mengingat detail ini, saya menyesuaikan bagan untuk menunjukkan berapa banyak waktu CPU aktual yang Anda peroleh. Saya fokus pada prosesor server biasa yang kami gunakan dalam pengujian komparatif.

gambar

Seperti yang Anda lihat dari diagram, tidak masalah jika Anda menjalankan Lambda dari 1024 MB untuk 100 ms atau 128 MB untuk 800 ms, Anda akan mendapatkan jumlah perhitungan yang sama dan membayar yang sama. Lebih dari 1024 MB, Anda mencapai kinerja satu inti prosesor dan mulai menerima kekuatan inti kedua (jika aplikasi Anda multithreaded dan dapat menggunakannya).

Pembulatan


Selain itu, waktu prosesor dibulatkan ke 100 ms terdekat, yang berarti bahwa bahkan lambda sederhana yang mengembalikan waktu saat ini dalam pengujian kami biaya $ 0,41 / juta panggilan. Tentu saja, Lambda Anda jarang akan bekerja dengan jumlah persis milidetik yang merupakan kelipatan 100. Lebih sering, Anda akan menggunakan sejumlah ms yang akan dibulatkan oleh Amazon untuk menghitung berapa yang akan Anda bayar. Mengingat bahwa mereka selalu ditangkap, ini berarti Anda akan membayar lebih rata-rata 50 ms CPU untuk setiap panggilan:

gambar

API Gateway


AWS Lambda dapat melakukan berbagai tugas di dalam Amazon. Tetapi pertama-tama, mereka menarik bagi kami untuk membuat aplikasi web tanpa server. Dan untuk tujuan ini, lambda tidak dapat digunakan secara langsung, karena memerlukan semacam server HTTP yang mampu mengubah permintaan menjadi API Lambda yang dipanggil . Cara termudah untuk melakukan ini adalah dengan menggunakan Amazon Gateway API.

Biaya API Gateway adalah $ 3,50 per juta permintaan, yang seringkali melebihi biaya Lambda itu sendiri. Berikut adalah bagan kami di atas, tetapi disesuaikan untuk API Gateway:
gambar

Anda akan melihat bahwa garis 1, 2 dan 3 dolar telah menghilang dari grafik. Minimum absolut adalah $ 3,91 / juta permintaan, dengan asumsi Lambda Anda mengkonsumsi sangat sedikit CPU.
Anda juga harus membayar untuk lalu lintas dan biaya tambahan per jam jika Anda ingin menggunakan caching.

Rute 53


Amazon Route53 DNS juga tidak gratis. Dalam miliar permintaan pertama, biaya adalah $ 0,40 per juta permintaan DNS. Ini membawa total biaya minimum kami menjadi $ 4,31 / juta.

Lebih banyak pengeluaran


Menghitung semua biaya bisa jadi membosankan. Log CloudWatch berharga $ 0,50 per GB. Pada saat yang sama, $ 0,09 per GB lalu lintas akan secara signifikan mempengaruhi akun.

Lambda @ Edge


Amazon menawarkan cara untuk menjalankan kode melalui layanan Cloudfront CDN. Ada biaya konstan dan variabel tiga kali lebih banyak daripada Lambda konvensional.

Untuk menggunakan Lambda @ Edge untuk permintaan HTTPS, pertama-tama Anda harus membeli Cloudfront untuk $ 1 / juta permintaan. Anda juga membayar bandwidth, yang dapat dengan mudah menjadi item pengeluaran utama. Jika situs Anda menghabiskan 1 MB, Anda akan membayar hingga $ 85 / juta hanya untuk bandwidth Cloudfront, atau $ 250 untuk wilayah seperti Amerika Selatan. Ditambah permintaan $ 20 / per juta tambahan yang harus kembali ke pengirim.

Inilah jumlah yang akhirnya harus Anda bayar hanya untuk perhitungan Lambda @ Edge:

gambar

Source: https://habr.com/ru/post/id481664/


All Articles