Lambda #
AWS Lambda adalah salah satu layanan serverless computing paling populer di dunia cloud. Ia menjadi fondasi utama banyak arsitektur modern di AWS karena menawarkan cara menjalankan kode tanpa perlu mengelola server, dengan skema bayar sesuai pemakaian. Artikel ini membahas AWS Lambda secara menyeluruh: mulai dari definisi, alasan kenapa serverless relevan, jenis trigger yang didukung, konfigurasi penting, aspek monitoring, hingga best practice di dunia nyata.
Artikel ini ditujukan untuk engineer yang ingin memahami AWS Lambda secara konseptual sekaligus praktis, termasuk implikasi desain dan operasionalnya.
Apa Itu AWS Lambda? #
AWS Lambda adalah layanan Function-as-a-Service (FaaS) dari AWS yang memungkinkan kita menjalankan potongan kode (function) sebagai respons terhadap sebuah event.
Karakteristik utama AWS Lambda:
- Tidak perlu provisioning atau mengelola server
- Otomatis melakukan scaling (horizontal)
- Bayar berdasarkan jumlah eksekusi dan durasi runtime
- Terintegrasi erat dengan ekosistem AWS
Di Lambda, kita hanya fokus pada:
- Kode fungsi
- Konfigurasi runtime
- Integrasi event (trigger)
Sementara AWS menangani:
- Server
- OS
- Patch keamanan
- Scaling
- High availability
Kenapa AWS Lambda? #
Mengurangi Beban Operasional #
Dengan Lambda, engineer tidak lagi:
- Mengelola VM / EC2
- Mengatur auto-scaling group
- Menangani patch OS
Ini membuat tim bisa fokus ke business logic, bukan infrastruktur.
Model Biaya yang Efisien #
Lambda menggunakan model pay-per-use:
- Jumlah request
- Durasi eksekusi (ms)
- Memory yang dialokasikan
Cocok untuk:
- Beban tidak stabil
- Event-driven workload
- Sistem dengan traffic bursty
Scaling Otomatis dan Cepat #
AWS Lambda secara default:
- Menskalakan fungsi secara horizontal
- Menjalankan ribuan instance function secara paralel
- Tidak perlu konfigurasi manual
Native Event-Driven Architecture #
Lambda sangat ideal untuk arsitektur:
- Event-driven
- Microservices
- Async processing
Cara Kerja AWS Lambda (High-Level) #
- Sebuah event terjadi (misalnya request API, file upload ke S3, message di queue)
- Event memicu Lambda function
- AWS membuat environment eksekusi (container terisolasi)
- Function dijalankan sesuai runtime
- Hasil dikembalikan (response atau side-effect)
- Environment bisa dipakai ulang (warm start) atau dihancurkan
Konsep penting:
- Cold start vs Warm start
- Stateless execution
Runtime yang Didukung AWS Lambda #
Beberapa runtime populer:
- Node.js
- Python
- Java
- Go
- .NET
- Ruby
- Custom runtime (via Lambda Runtime API)
Custom runtime memungkinkan:
- Bahasa non-standar
- Binary execution
- Advanced control
Trigger (Event Source) yang Didukung #
AWS Lambda mendukung banyak trigger. Secara konseptual bisa dikelompokkan sebagai berikut:
HTTP / API Trigger #
- Amazon API Gateway (REST & HTTP API)
- Application Load Balancer (ALB)
Use case:
- Backend API
- Webhook handler
- Serverless REST service
Storage Event #
- Amazon S3 (upload, delete, lifecycle event)
Use case:
- Image processing
- File validation
- Data ingestion pipeline
Messaging & Streaming #
- Amazon SQS
- Amazon SNS
- Amazon Kinesis
- Amazon MSK (Kafka)
- Amazon EventBridge
Use case:
- Async processing
- Event fan-out
- Data stream processing
Database Trigger #
- DynamoDB Streams
Use case:
- Data replication
- Audit log
- Event sourcing
Scheduled / Cron #
- Amazon EventBridge (schedule rule)
Use case:
- Batch job
- Cleanup task
- Periodic sync
Other AWS Services #
- CloudWatch Logs
- IoT Core
- Step Functions
- Cognito trigger
Lambda sering menjadi glue service antar layanan AWS.
Konfigurasi Penting di AWS Lambda #
Memory dan CPU #
- Memory: 128 MB – 10 GB
- CPU dan network throughput berbanding lurus dengan memory
Insight penting:
Menambah memory sering kali mengurangi latency dan total biaya, bukan sebaliknya.
Timeout #
- Maksimum: 15 menit
Gunakan timeout yang:
- Realistis
- Tidak terlalu panjang
- Sesuai SLA
Environment Variables #
Digunakan untuk:
- Konfigurasi runtime
- Feature flag
- Endpoint service
Best practice:
- Jangan simpan secret mentah
- Gunakan AWS Secrets Manager / SSM Parameter Store
IAM Role (Execution Role) #
Lambda berjalan dengan IAM Role tertentu.
Prinsip penting:
- Least privilege
- Satu role per use case
- Hindari wildcard permission
VPC Configuration #
Lambda bisa dijalankan di VPC untuk:
- Akses RDS
- Akses private resource
Konsekuensi:
- Potensi cold start lebih lambat
- Perlu konfigurasi subnet & security group
Concurrency #
Jenis concurrency:
- Unreserved concurrency
- Reserved concurrency
- Provisioned concurrency
Digunakan untuk:
- Melindungi downstream service
- Mengontrol cold start
- Traffic isolation
Monitoring dan Observability #
Amazon CloudWatch Metrics #
Metric bawaan Lambda:
- Invocations
- Duration
- Errors
- Throttles
- Concurrent executions
CloudWatch Logs #
- stdout / stderr otomatis masuk CloudWatch Logs
- Penting untuk structured logging
AWS X-Ray #
Digunakan untuk:
- Distributed tracing
- Latency breakdown
- Dependency analysis
Sangat penting di arsitektur microservices.
Error Handling & Retry #
Perilaku retry tergantung event source:
- Async invocation: automatic retry
- SQS / stream: retry + DLQ
Pastikan:
- Idempotent function
- Dead-letter queue dikonfigurasi
Best Practice AWS Lambda #
Function Kecil dan Spesifik #
- Satu function = satu tanggung jawab
- Hindari monolithic Lambda
Stateless Design #
- Jangan menyimpan state di memory
- Gunakan database atau cache eksternal
Optimalkan Cold Start #
- Gunakan runtime ringan (Node.js, Go)
- Minimalkan dependency
- Pertimbangkan provisioned concurrency
Gunakan Infrastructure as Code #
Gunakan:
- AWS SAM
- Serverless Framework
- Terraform
Manfaat:
- Reproducible
- Versioned
- Aman untuk scale
Logging dan Observability dari Awal #
- Structured logging (JSON)
- Correlation ID
- Tracing aktif
Cost Awareness #
- Monitor duration dan memory
- Audit concurrency
- Hapus function tidak terpakai
Kapan AWS Lambda Kurang Cocok? #
AWS Lambda bukan solusi untuk semua hal. Kurang ideal jika:
- Proses sangat panjang (>15 menit)
- Workload high-throughput dan stabil
- Butuh kontrol OS dan filesystem penuh
- Latency ultra-rendah dan konsisten
Dalam kasus ini, container atau VM bisa lebih tepat.
Pros dan Cons AWS Lambda #
Pros (Kelebihan) #
Zero Server Management Tidak ada kebutuhan provisioning server, patch OS, atau konfigurasi auto-scaling. Tim bisa fokus penuh pada business logic.
Auto Scaling Native Lambda menskalakan secara otomatis berdasarkan jumlah event, dari nol hingga ribuan eksekusi paralel tanpa konfigurasi tambahan.
Model Biaya Pay-per-Use Biaya hanya dikenakan saat function dieksekusi, berdasarkan durasi dan memory. Sangat efisien untuk workload yang sporadis atau tidak stabil.
Integrasi Erat dengan Ekosistem AWS Lambda terintegrasi langsung dengan API Gateway, S3, DynamoDB, SQS, SNS, EventBridge, dan banyak layanan AWS lainnya.
Cocok untuk Event-Driven Architecture Ideal untuk sistem berbasis event, async processing, dan microservices dengan coupling rendah.
High Availability by Default AWS mengelola availability dan fault tolerance tanpa konfigurasi tambahan dari pengguna.
Cons (Kekurangan) #
Cold Start Latency Pada kondisi tertentu (terutama VPC dan runtime berat seperti Java), Lambda bisa mengalami cold start yang berdampak pada latency.
Batas Waktu Eksekusi Maksimum timeout 15 menit membuat Lambda tidak cocok untuk proses sangat panjang atau batch job besar.
Debugging dan Local Testing Lebih Kompleks Debugging distributed, event-driven system lebih sulit dibanding aplikasi monolitik atau server-based.
Vendor Lock-in Lambda sangat terikat dengan layanan AWS dan ekosistemnya, sehingga migrasi ke platform lain membutuhkan effort tambahan.
Kontrol Infrastruktur Terbatas Tidak ada akses ke OS, filesystem persisten, atau tuning low-level seperti di VM atau container.
Biaya Bisa Membengkak Jika Salah Desain Function dengan durasi lama, memory besar, atau invocation tinggi tanpa kontrol concurrency bisa menyebabkan biaya tak terduga.
Penutup #
AWS Lambda adalah fondasi penting dalam arsitektur cloud modern. Dengan memahami cara kerja, konfigurasi, trigger, dan best practice-nya, Lambda bisa menjadi solusi yang efisien, scalable, dan cost-effective.
Kunci sukses menggunakan AWS Lambda bukan hanya pada teknologinya, tetapi pada desain arsitektur, observability, dan disiplin operasional.
Jika digunakan dengan tepat, AWS Lambda bukan sekadar alat serverless—melainkan enabler untuk membangun sistem yang lebih cepat, ringan, dan adaptif.