Apa itu AWS Lambda
AWS Lambda adalah layanan komputasi tanpa server yang ditawarkan oleh Amazon Web Services (AWS) yang memungkinkan Anda menjalankan kode tanpa perlu melakukan pengaturan atau manajemen server. Lambda secara otomatis mengukur ukuran aplikasi Anda berdasarkan jumlah peristiwa yang masuk, sehingga menjadi solusi ideal untuk arsitektur berbasis peristiwa dan aplikasi dengan beban kerja yang tidak terduga.
Lambda mendukung berbagai lingkungan runtime, termasuk Node.js, Python, Java, Go, dan .NET, memungkinkan pengembang menulis fungsi menggunakan bahasa pemrograman pilihannya. Anda dapat membuat fungsi Lambda untuk menangani peristiwa dari berbagai layanan AWS, seperti Amazon S3, Amazon DynamoDB, Amazon API Gateway, dan banyak lagi.
Dengan menggunakan AWS Lambda, Anda dapat fokus menulis logika aplikasi sementara AWS mengurus aspek operasional, seperti skalabilitas, pemeliharaan, dan pemantauan. Selain itu, model harga Lambda berarti Anda hanya membayar untuk waktu komputasi yang digunakan oleh kode Anda, membuatnya menjadi solusi yang hemat biaya untuk banyak kasus penggunaan.
Apa yang Dapat Dilakukan Lambda
AWS Lambda menawarkan berbagai kemampuan untuk membantu Anda membangun dan mengukur aplikasi. Beberapa fitur dan kasus penggunaan utama meliputi:
-
Pemrosesan Berbasis Peristiwa
Lambda dapat secara otomatis mengeksekusi kode Anda sebagai respons terhadap peristiwa dari berbagai layanan AWS, seperti perubahan data di bucket Amazon S3, pembaruan tabel DynamoDB, atau pesan di antrian Amazon SQS. -
Skalabilitas
Lambda secara otomatis mengukur ukuran aplikasi Anda dengan mengelola jumlah instance yang diperlukan untuk menangani peristiwa yang masuk. Hal ini berarti aplikasi Anda dapat menangani lonjakan lalu lintas secara efisien tanpa intervensi manual. -
Mikro Layanan dan API
Anda dapat membangun mikro layanan menggunakan fungsi Lambda, dan kemudian mengeksposnya sebagai API menggunakan Amazon API Gateway. Ini memungkinkan Anda membuat RESTful APIs yang dapat dikembangkan dan hemat biaya dan secara otomatis berkembang seiring jumlah permintaan. -
Pemrosesan Data
Fungsi Lambda dapat digunakan untuk pemrosesan data real-time dan batch. Misalnya, Anda dapat menggunakan Lambda untuk memproses dan menganalisis file log, mentransformasi data, atau melakukan pemrosesan data real-time untuk sumber data streaming seperti Amazon Kinesis atau Apache Kafka. -
Integrasi dengan Layanan AWS
Lambda berintegrasi dengan layanan AWS lainnya, memudahkan membangun aplikasi end-to-end tanpa mengelola server. Anda dapat menggunakan Lambda untuk memicu eksekusi kode berdasarkan peristiwa dari layanan seperti Amazon S3, Amazon DynamoDB, Amazon API Gateway, dan lainnya. -
Lingkungan runtime kustom
AWS Lambda mendukung berbagai lingkungan runtime, termasuk Node.js, Python, Java, Go, dan .NET. Selain itu, Anda dapat membuat lingkungan runtime kustom untuk menggunakan bahasa lain atau versi spesifik dari bahasa pemrograman pilihan Anda. -
Optimisasi Biaya
Dengan AWS Lambda, Anda hanya membayar untuk waktu komputasi yang digunakan untuk mengeksekusi kode Anda. Ini berarti Anda tidak membayar untuk resource server yang tidak digunakan, yang dapat menghasilkan penghematan biaya untuk banyak aplikasi.
Dengan memanfaatkan AWS Lambda, pengembang dapat fokus menulis dan mendeploy kode aplikasi sementara AWS menangani aspek operasional seperti skalabilitas, pemeliharaan, dan pemantauan, menyederhanakan proses pengembangan dan mengurangi waktu-to-market.
Kendala Lambda
Meskipun AWS Lambda menawarkan beberapa manfaat, ia juga memiliki beberapa batasan dan kendala yang perlu Anda pertimbangkan saat merancang dan mengimplementasikan aplikasi tanpa server Anda:
-
Waktu eksekusi
Waktu maksimum eksekusi untuk fungsi Lambda adalah 15 menit. Jika fungsi Anda membutuhkan waktu pemrosesan yang lebih lama, Anda mungkin perlu memecahnya menjadi tugas-tugas yang lebih kecil atau mempertimbangkan opsi komputasi lain seperti Amazon EC2 atau AWS Fargate. -
Memori fungsi dan kekuatan CPU
Fungsi Lambda dapat dialokasikan antara 128 MB dan 10.240 MB memori. Kekuatan CPU, bandwidth jaringan, dan disk I/O dialokasikan secara proporsional berdasarkan konfigurasi memori. Jika aplikasi Anda memerlukan resource yang lebih banyak, Anda mungkin perlu mempertimbangkan layanan komputasi AWS lainnya. -
Batas ukuran paket
Ukuran paket penyebaran untuk fungsi Lambda memiliki batas 50 MB (dikompresi) dan 250 MB (tidak dikompresi). Jika fungsi Anda memiliki dependensi atau pustaka besar, Anda mungkin perlu menggunakan gambar kontainer atau mengoptimalkan dependensi Anda. -
Eksekusi simultan
AWS Lambda memiliki batas simultan lunak default 1.000 eksekusi per wilayah. Batas ini dapat ditingkatkan dengan meminta peningkatan batas dari Dukungan AWS. Namun, penting untuk mempertimbangkan dampak peningkatan simultan pada layanan downstream yang berinteraksi dengan fungsi Lambda Anda, karena mereka mungkin memiliki batasan mereka sendiri. -
Latensi awal (cold start)
Ketika fungsi Lambda dipanggil untuk pertama kali atau setelah periode ketidakaktifan, mungkin ada latensi tambahan yang disebut "latensi awal (cold start)." Ini terjadi karena AWS harus melakukan pengaturan ulang kontainer baru untuk mengeksekusi fungsi. Untuk meminimalkan latensi awal, Anda dapat menggunakan provisioned concurrency atau menjaga fungsi tetap "hangat" dengan secara berkala memanggilnya. -
Eksekusi stateless
Fungsi Lambda tidak memiliki status (stateless), yang berarti mereka tidak mempertahankan keadaan mereka antara pemanggilan. Jika aplikasi Anda memerlukan manajemen status, Anda mungkin perlu menyimpan data status dalam penyimpanan data eksternal, seperti Amazon DynamoDB atau Amazon S3. -
Dukungan GPU terbatas
Fungsi Lambda tidak mendukung pemrosesan berbasis GPU. Jika kasus penggunaan Anda memerlukan resource GPU, pertimbangkan untuk menggunakan instans Amazon EC2 dengan dukungan GPU atau Amazon SageMaker untuk beban kerja pembelajaran mesin.
Memahami kendala AWS Lambda sangat penting untuk membangun aplikasi tanpa server yang berperforma baik dan skala efisien. Dengan menyadari batasan ini, Anda dapat merancang aplikasi Anda agar dapat bekerja dalam batasan ini atau memilih layanan AWS alternatif ketika Lambda tidak cocok untuk kasus penggunaan Anda.
Harga AWS Lambda
Harga AWS Lambda didasarkan pada jumlah permintaan dan durasi waktu komputasi yang digunakan oleh fungsi Anda. Model pembayaran ini memungkinkan Anda mengoptimalkan biaya dengan membayar hanya untuk resource yang digunakan oleh fungsi Lambda Anda.
-
Request
Anda dikenakan biaya untuk total jumlah permintaan yang dilakukan ke fungsi Lambda Anda. Harga adalah $ 0,20 per 1 juta requests setelah gratis. -
Durasi
Anda dikenakan biaya untuk waktu komputasi yang diambil oleh fungsi Lambda Anda untuk mengeksekusi, diukur dalam inkremen 100 milidetik. Biaya tergantung pada jumlah memori yang dialokasikan untuk fungsi Anda. Sebagai contoh, harga untuk 128 MB memori adalah $ 0,0000002083 per 100 ms.
AWS juga menawarkan gratis yang cukup besar bagi pengguna Lambda, yang mencakup:
- 1 juta permintaan gratis per bulan
- 400.000 detik komputasi-Giga per bulan
Penting untuk dicatat bahwa biaya transfer data dan biaya tambahan apa pun yang terkait dengan layanan AWS lain yang digunakan bersama-sama dengan Lambda, seperti Amazon S3 atau Amazon DynamoDB, ditagih terpisah.
Untuk rincian lebih lanjut tentang harga AWS Lambda dan untuk menghitung biaya berdasarkan persyaratan Anda yang spesifik, kunjungi halaman Harga AWS Lambda.
Cara Membuat Fungsi Lambda
Anda dapat membuat fungsi AWS Lambda menggunakan dua metode: memaketkan kode dan dependensi Anda dalam file ZIP, atau menggunakan gambar kontainer. Berikut adalah panduan langkah demi langkah untuk kedua pendekatan:
Berkas ZIP
- Siapkan kode Anda
Tulis fungsi Lambda Anda menggunakan runtime yang didukung, seperti Node.js, Python, Java, Go, atau .NET. Pastikan untuk menyertakan dependensi yang diperlukan dalam direktori yang sama dengan kode Anda.
- Paketkan kode dan dependensi Anda
Buat arsip ZIP yang berisi kode dan dependensi Anda. Pastikan bahwa titik masuk fungsi Anda (misalnya, handler
untuk Node.js atau lambda_function
untuk Python) berada pada level root arsip.
- Upload the ZIP file to AWS Lambda:
-
Using AWS Management Console: Navigate to the Lambda service in the AWS Management Console, click
Create function
, chooseAuthor from scratch
, and provide the necessary details such as function name, runtime, and execution role. In theFunction code
section, chooseUpload a .zip file
and upload your ZIP archive. -
Using AWS CLI: You can also use the AWS CLI to create a Lambda function by running the following command:
- Unggah file ZIP ke AWS Lambda
-
Menggunakan AWS Management Console: Akses layanan Lambda di AWS Management Console, klik
Create function
, pilihAuthor from scratch
, dan berikan detail yang diperlukan seperti nama fungsi, runtime, dan peran eksekusi. Pada bagian Kode fungsi, pilihUpload a .zip file
dan unggah arsip ZIP Anda. -
Menggunakan AWS CLI: Anda juga dapat menggunakan AWS CLI untuk membuat fungsi Lambda dengan menjalankan perintah berikut:
$ aws lambda create-function \
--function-name YourFunctionName \
--runtime YourRuntime \
--role YourExecutionRoleARN \
--handler YourEntryPoint \
--zip-file fileb://your-zipped-code.zip
- Konfigurasikan pemicu (opsional)
Siapkan sumber acara untuk memicu fungsi Lambda Anda, seperti Amazon S3, Amazon DynamoDB, atau Amazon API Gateway.
- Uji fungsi Lambda Anda
Gunakan AWS Management Console, AWS CLI, atau SDK untuk memanggil dan menguji fungsi Lambda Anda.
Gambar Kontainer
- Siapkan kode Anda
Tulis fungsi Lambda Anda menggunakan runtime yang didukung atau runtime kustom. Sertakan dependensi yang diperlukan dalam direktori yang sama dengan kode Anda.
- Buat Dockerfile
Buat Dockerfile di direktori proyek Anda untuk menentukan gambar kontainer Anda. Gunakan gambar dasar yang disediakan oleh AWS atau buat gambar dasar Anda sendiri. Pastikan titik masuk fungsi Anda ditentukan dengan benar di Dockerfile.
- Bangun gambar kontainer
Jalankan perintah berikut di direktori proyek Anda untuk membangun gambar kontainer:
$ docker build -t your-image-name .
- Dorong gambar ke Amazon Elastic Container Registry (ECR)
Buat repositori baru di Amazon ECR dan autentikasi klien Docker Anda ke registri ECR Anda. Dorong gambar kontainer Anda ke registri ECR dengan perintah berikut:
$ docker push your-ecr-repository:your-image-tag
- Buat fungsi Lambda dengan gambar kontainer
-
Menggunakan AWS Management Console: Akses layanan Lambda di AWS Management Console, klik
Create function
, pilihContainer Image
, dan berikan detail yang diperlukan seperti nama fungsi dan peran eksekusi. Di bidangContainer image URI
, masukkan URI gambar ECR. -
Menggunakan AWS CLI: Anda juga dapat menggunakan AWS CLI untuk membuat fungsi Lambda dengan gambar kontainer dengan menjalankan perintah berikut:
$ aws lambda create-function \
--function-name YourFunctionName \
--role YourExecutionRoleARN \
--package-type Image \
--code ImageUri=your-ecr-repository:your-image-tag
- Konfigurasikan pemicu (opsional)
Siapkan sumber acara untuk memicu fungsi Lambda Anda, seperti Amazon S3, Amazon DynamoDB, atau Amazon API Gateway.
- Uji fungsi Lambda Anda
Gunakan AWS Management Console, AWS CLI, atau SDK untuk memanggil dan menguji fungsi Lambda Anda.
Referensi