Menangani siklus hidup event: retry, DLQ, dan destination

Aplikasi Serverless dengan AWS Lambda

Claudio Canales

Senior DevOps Engineer

Sekilas siklus hidup event

  • Lambda memanggil handler Anda.
  • Handler berhasil atau gagal.
  • Saat gagal, retry dan perutean menentukan langkah berikutnya.

Alur siklus hidup event

Aplikasi Serverless dengan AWS Lambda

Dua cara kegagalan muncul

Sinkron

  • Pemanggil menunggu dan menerima respons error.

Asinkron

  • Pemanggil diakui terlebih dahulu.
  • Lambda retry di latar belakang.
  • Penanganan kegagalan bergantung pada mode pemanggilan.

Jalur kegagalan sinkron vs asinkron

Aplikasi Serverless dengan AWS Lambda

Retry itu normal

  • Retry sering kali merupakan fitur, bukan bug.
  • Kegagalan sementara bisa berhasil pada percobaan berikutnya.
  • Retry dapat menyebabkan duplikasi; handler Anda harus mengantisipasi.

Analogi menekan ulang panggilan untuk retry

Aplikasi Serverless dengan AWS Lambda

Retry seiring waktu

  • Retry dapat memulihkan gangguan sementara.
  • Namun event yang sama bisa berjalan beberapa kali.
  • Idempotensi dan penanganan error yang jelas sangat penting.

Linimasa upaya retry

Aplikasi Serverless dengan AWS Lambda

Saat retry berbahaya

  • Retry berisiko bila pekerjaan tidak idempoten.
  • Contoh: menagih kartu, mengirim email.
  • Gunakan idempotency key dan update aman agar duplikasi tidak merugikan.

Tujuan idempotensi

Aplikasi Serverless dengan AWS Lambda

DLQ (Dead-Letter Queue)

  • Tempat aman bagi event yang tetap gagal setelah retry.
  • Sering berupa antrean SQS, antrean pesan terkelola AWS.
  • Periksa payload, perbaiki masalah, lalu re-drive.

Analogi DLQ barang hilang-temu

Aplikasi Serverless dengan AWS Lambda

DLQ vs destination

Analogi DLQ barang hilang-temu

  • Menangkap event gagal setelah retry.
  • Gunakan untuk investigasi.

Diagram perutean destination

  • Rute hasil saat sukses atau gagal.
  • Bangun jalur sukses dan gagal yang eksplisit.
Aplikasi Serverless dengan AWS Lambda

Destination: rute sukses dan gagal

  • Saat sukses, kirim hasil ke onSuccess.
  • Saat gagal, kirim detail ke onFailure.
  • Ini membuat langkah lanjut eksplisit.

Diagram perutean destination

Aplikasi Serverless dengan AWS Lambda

Menyetel kebijakan retry

  • Atur berapa kali Lambda retry.
  • Batasi usia event untuk menghindari data basi.
  • Lebih banyak retry menaikkan keandalan tetapi menambah duplikasi dan penundaan.

Kontrol kebijakan retry

Aplikasi Serverless dengan AWS Lambda

Usia maksimum event: tanggal kedaluwarsa

  • Usia maksimum event adalah kebijakan kedaluwarsa.
  • Jika event terlalu lama, memprosesnya mungkin sia-sia.
  • Trade-off: lebih sedikit event terlambat, perilaku lebih tepat waktu.

Analogi kedaluwarsa usia event

Aplikasi Serverless dengan AWS Lambda

Observabilitas: ke mana melihat

  • Log menjawab apa yang terjadi.
  • Metrik menjawab seberapa sering itu terjadi.
  • Alarm membantu menangkap lonjakan dengan cepat.

Log vs metrik

Aplikasi Serverless dengan AWS Lambda

Langkah untuk event yang gagal

  • Periksa payload dan error.
  • Perbaiki akar masalah.
  • Re-drive event, lalu pantau error dan throughput.

Siklus pemulihan event gagal

Aplikasi Serverless dengan AWS Lambda

Inti pembelajaran

  • Keandalan berasal dari retry, perutean, dan observabilitas.
  • Error sinkron sampai ke pemanggil.
  • Error asinkron perlu retry ditambah DLQ atau destination.
  • Ini menjaga kegagalan tetap terlihat.

Diagram rumus keandalan

Aplikasi Serverless dengan AWS Lambda

Ayo berlatih!

Aplikasi Serverless dengan AWS Lambda

Preparing Video For Download...