Serverless unggul saat workload digerakkan event: scaling otomatis, biaya idle nol, dan fokus pada kode. Episode ini merancang arsitektur serverless event-driven, workflow orchestration untuk alur bertahap, dan trade-off yang harus kalian bayar (cold start, batas runtime, testing lokal)

Di episode 4 kita memperkenalkan serverless sebagai satu pilihan compute, dan di episode 12 membangun fondasi event-driven. Episode ini mempertemukan keduanya: serverless event-driven architecture — fungsi yang dipicu event, diskalakan otomatis, dan hampir tidak menelan biaya saat idle.
Serverless bukan jawaban universal (episode 4), tetapi untuk workload yang digerakkan event, ia unggul nyata. Episode ini membahas kapan serverless menang, bagaimana merancang pipeline event end-to-end, kapan harus memakai workflow orchestration, dan trade-off yang sering terlupakan.
Serverless paling masuk akal saat karakter ini muncul:
Contoh klasik: proses upload gambar, webhook integrasi, backend mobile API, pipeline data kecil, dan koneksi dengan queue (episode 12).
Setiap panah adalah trigger otomatis: object storage mengubah saat file diupload → fungsi resize gambar → hasil dikirim ke queue → fungsi berikutnya menulis metadata ke database. Seluruh pipeline berjalan tanpa server yang dikelola, diskalakan oleh provider.
1. API Gateway → menerima HTTP order
2. Lambda → validasi + publish event
3. EventBridge → routing event (order.created)
4. Step Func. → orchestrasi alur (bayar, cek stok, kirim)
5. Lambda → tugas individual tiap langkah
6. SQS → retry/backlog bila downstream lambat
7. DynamoDB → state transaksi + audit trailAlur ini menunjukkan pola kunci serverless: API Gateway sebagai pintu masuk, EventBridge sebagai router, Step Functions sebagai orchestrator, Lambda sebagai executor, SQS sebagai buffer, DynamoDB sebagai state.
Function: process-order
Retry policy:
maxAttempts: 3
backoff: exponential
DeadLetterQueue:
target: dlq-process-orderAlur bisnis bertahap (order → payment → shipping) yang butuh kompensasi (episode 12) sebaiknya tidak ditulis sebagai rantai fungsi. Workflow orchestration — AWS Step Functions, GCP Workflows, Azure Logic Apps — menangani ini secara deklaratif.
StartAt: CreateOrder
States:
CreateOrder:
Type: Task
Resource: arn:aws:lambda:create-order
Next: ChargePayment
ChargePayment:
Type: Task
Resource: arn:aws:lambda:charge-payment
Next: ShipOrder
Catch:
- ErrorEquals: [PaymentFailed]
Next: CancelOrder
ShipOrder:
Type: Task
Resource: arn:aws:lambda:ship-order
End: true
CancelOrder:
Type: Task
Resource: arn:aws:lambda:cancel-order
End: truePerhatikan Catch — kompensasi ditulis sebagai bagian workflow, bukan tersebar di kode. State machine memberi retry, timeout, dan audit secara bawaan, dan bisa divisualisasikan.
| Kebutuhan | Pilihan |
|---|---|
| Satu tugas, satu trigger | Fungsi langsung |
| Alur bertahap dengan kompensasi | Workflow orchestration |
| Fan-out ke banyak worker | Fungsi + queue / step |
| Butuh waktu lama (jam) | Workflow (fungsi punya batas runtime) |
Serverless bukan tanpa biaya. Arsitek yang jujur harus mempertimbangkan:
Warning
Cold start sering diremehkan sampai produksi: API serverless yang menjanjikan p99 200ms bisa tiba-tiba melayani request pertama 2 detik. Jika latency adalah SLO utama (episode 10), ukur cold start di staging dengan beban nyata sebelum memilih serverless untuk endpoint kritikal.
Kerangka desain pipeline serverless:
Inti yang harus dibawa pulang:
Di episode 14 selanjutnya kita akan membahas container & Kubernetes architecture — desain cluster, pola networking, GitOps, dan multi-cluster. Sampai jumpa di episode 14!