re:Invent 2020: AWS Lambda 1ms Billing

1 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
AWS re:Invent AWS Lambda 1ms Billing
AWS re:Invent 2020 (Sumber: AWS)

TeknoCerdas.com – Salam cerdas untuk kita semua. AWS re:Invent adalah hajatan tahunan terbesar dari AWS untuk memperkenalkan layanan baru mereka. Salah satu pengumuman menarik dari topik Serverless pada AWS re:Invent 2020 tahun ini adalah AWS Lambda 1ms billing.

Seperti diketahui bahwa pricing pada AWS Lambda terdiri dua komponen yaitu jumlah request dan durasi eksekusi. Pada jumlah request harga yang ditetapkan adalah $0.20 per 1M request. Jika dibawah itu maka masih gratis.

Sebagai contoh biaya untuk request dengan jumlah 5 juta adalah

Total Request - Free Tier = Billed request bulanan
5 juta - 1 juta = 4 juta

Biaya request bulanan = 4 * $0.2 = $0.8

Baca Juga
Serverless PHP: Hosting Normal PHP Website dengan Lambda

Sebelumnya harga dari durasi eksekusi adalah minimal 100ms dan akan dibulatkan kelipatannya. Sebagai contoh fungsi yang membutuhkan durasi eksekusi 10ms akan dikenakan biaya 100ms, durasi eksekusi 215ms akan dikenakan biaya 300ms dan begitu seterusnya. Untuk formula perhitungan harga waktu durasi sendiri adalah jumlah memory dikali $0.0000166667 GB-second. Jika dibawah 400.000 GB-second masih free.

Sebagai contoh durasi waktu pemanggilan fungsi adalah 30ms dan dieksekusi sebanyak 5 juta kali. Tipe Lambda yang digunakan adalah 1024MB.

Pembulatan durasi 30ms = 100ms
Durasi dalam detik = 100ms / 1000s = 0.1

Durasi GB-second = (0.1 detik * 5 juta * 1024 MB) / 1024 = 500,000 GB-second
Free GB-second = 400,000 GB-second

Billed Duration = Duration GB-second - Free GB-second
                = 500,000 - 400,000 = 100,0000

Biaya bulanan eksekusi =  100,0000 * $0.0000166667 = $1,66

Sekarang mari kita kalkulasi ulang dengan billing terbaru yaitu perhitungan AWS Lambda 1ms. Dengan kata lain tidak ada minimum durasi.

Durasi dalam detik = 30ms / 1000s = 0.03

Durasi GB-second = (0.03 detik * 5 juta * 1024 MB) / 1024 = 150,000 GB-second
Free GB-second = 400,000 GB-second

Billed Duration = Duration GB-second - Free GB-second
                = 150,000 - 400,000 = -250,000 = 0 (dibulatkan)

Biaya bulanan eksekusi = 0 * $0.0000166667 = $0

Dapat terlihat dengan kebijakan billing yang baru yaitu 1ms durasi maka biaya eksekusi menjadi nol atau tidak ada biaya. Sebuah perbedaan yang lumayan jauh jika dibandingkan sebelumnya.

Baca Juga
Mengenal Layanan Serverless dari Berbagai Cloud Provider

Melakukan Optimasi Kode

Dengan adanya 1ms billing ini maka setiap optimasi kode akan sangat bernilai karena perbedaan 1ms dalam durasi eksekusi berarti sebuah penghematan.

Dalam Lambda dikenal istilah cold start dan warm start. Cold start mengacu pada saat fungsi pertama kali dieksekusi dimana Lambda akan mulai menjalankan container runtime. Hal ini berarti waktu eksekusi yang lebih lama.

Sedangkan warm start mengacu pada eksekusi fungsi dimana container runtime Lambda sudah berjalan sehingga tidak ada penalti diawal waktu. Otomatis durasi eksekusi menjadi lebih pendek dari sebelumnya.

AWS Lambda memiliki banyak runtime dan jika memungkinan dapat dipertimbangkan untuk migrasi ke runtime dengan waktu cold start paling rendah. Salah satunya adalah runtime untuk Golang yang relatif lebih singkat dibanding runtime lain.

Gunakan ulang TCP connection untuk memanfaatkan warm start. Pada NodeJS gunakan environment AWS_NODEJS_CONNECTION_REUSE_ENABLED dengan nilai 1.

Hal yang sama harusnya diterapkan untuk hal lain misal penggunaan SQL Proxy daripada langsung melakukan query ke database server. Selain menghemat waktu karena tidak membuat TCP connection baru, database server menjadi lebih ringan karena jumlah koneksi bisa dibatas lewat connection pool di SQL Proxy.

Hal lain yang harus diperhatikan adalah ukuran paket pada Lambda. Sebisa mungkin ukuran harus kecil karena akan mempercepat waktu cold start.

Pada sisi kode gunakan profiling dan selalu lakukan review berkala untuk melakukan optimasi pada bagian yang memerlukan waktu lama untuk dieksekusi.

AWS Lambda sejak diperkenalkan tahun 2014 adalah pionir untuk Serverless platform. Dengan adanya 1ms billing yang diperkenalkan sejak re:Invent 2020 maka semakin menegaskan keseriusan AWS dalam platform ini.