Di minggu ke-5 dari series EDX AWS Developer saya belajar tentang distributed system dan AWS Lambda.
- Minggu ke-1: Belajar Menjadi AWS Developer, EC2 & VPC
- Minggu ke-2: Deteksi Object dengan Amazon Rekognition
- Minggu ke-3: RDS Service and Load Balancer
- Minggu ke-4: Amazon Cognito, Managed User Pools Service
Bagi saya sendiri, Lambda bukanlah service yang asing lagi. Saya pernah beberapa kali membuat service di Lambda untuk keperluan pribadi menggunakan Nodejs. Service yang saya buat salah satunya membuat generator gambar dari HTML.
Kali ini, do course EDX minggu ke-5. Saya akan menggunakan AWS Lambda untuk memindahkan service Amazon Rekonition yang dibuat di EC2 pada minggu ke-2 ke dalam service Lambda.
Sehingga arsitektur aplikasi yang dibuat berubah menjadi seperti di bawah:

Nah, karena service yang kita gunakan sudah mulai kompleks. Di course ini mulai menyarankan bahwa saya harus memakai sebuh service yang memonitor bagaimana setiap service saling berkomunikasi.
Service ini adalah AWS X-Ray. Sebuah service yang nantinya akan mengoleksi data latensi sekaligus monitoring bagaimana setiap service yang berkomunikasi.
Perubahan dalam aplikasi tidak begitu signifikan. SDK X-Ray sudah disediakan, dan kita hanya perlu menambahkan sedikit anotation @xray_recorder.capture()
di atas kode yang dijalankan.
@xray_recorder.capture()
def resize_image(file_p, size):
"""Resize an image to fit within the size, and save to the path directory"""
...
Setelah kita menambahkan anotation di atas, setiap request yang masuk akan di record dengan x-ray dan ditampilak dalam dashboard x-ray.

AWS Lambda λ
Dengan AWS Lambda, kita memungkinkan untuk melakukan deployment tanpa harus membuat server. AWS menyebutnya dengan sebutan serverless deployment.
Pada dasarnya, yang disebut serverless deployment ini adalah kita tidak perlu peduli dengan server, bukan berarti tanpa server. Scaling tidak di-manage oleh user AWS, tetapi di-manage oleh AWS Lambda.
Sesuai namanya Lambda; Yang kita lakukan adalah menulis fungsi lambda yang selanjutnya kita simpan di AWS Lambda.
Trigger untuk Lambda ada berbagai macam. Bisa event atau service AWS lain. Setiap trigger yang terjadi, AWS akan menyimpan history/log dalam service lain yang disebut CloudWatch.
Sampai tulisan ini dibuat, AWS Lambda mendukung bahasa pemrograman Python, Java, C#, Golang, dan JavaScript (NodeJS).
Sebelumnya, di Week-1. Saya sudah membuat VPS yang menerima koneksi private dan public untuk instance EC2 melalui CloudFormation. Sayangnya, saya belum menambahkan AWS Lambda untuk menerima atau mengirim koneksi ke luar.
Sebelum membuat Lambda function, kita harus memastikan bahwa fungsi Lambda yang akan dibuat sudah bisa menerima koneksi masuk dan koneksi keluar.
Setup bagian ini sama seperti setup ketika pertama kali membuat VPC dan security group.
Setup Lambda cukup straightforward jika kita sudah mengetahui VPC dan security group yang akan digunakan.