Olay yaşam döngüsü: yeniden denemeler, DLQ'lar ve hedefler

AWS Lambda ile Sunucusuz Uygulamalar

Claudio Canales

Senior DevOps Engineer

Olay yaşam döngüsüne genel bakış

  • Lambda, işleyicinizi çağırır.
  • İşleyici ya başarılı olur ya da başarısız.
  • Başarısız olursa, yeniden denemeler ve yönlendirme sonraki adımı belirler.

Olay yaşam döngüsü akışı

AWS Lambda ile Sunucusuz Uygulamalar

Hataların iki görünümü

Eşzamanlı (Synchronous)

  • Çağıran bekler ve bir hata yanıtı alır.

Eşzamansız (Asynchronous)

  • Önce çağırana alındı bilgisi verilir.
  • Lambda arka planda yeniden dener.
  • Hata yönetimi çağırma moduna bağlıdır.

Eşzamanlı ve eşzamansız hata yolları

AWS Lambda ile Sunucusuz Uygulamalar

Yeniden denemeler normaldir

  • Yeniden denemeler çoğu zaman bir özelliktir, hata değil.
  • Geçici bir hata bir sonraki denemede başarıya dönebilir.
  • Yeniden denemeler yinelenen işlemeye yol açabilir; işleyiciniz bunu hesaba katmalıdır.

Yeniden deneme: tekrar arama benzetmesi

AWS Lambda ile Sunucusuz Uygulamalar

Zaman içinde yeniden denemeler

  • Yeniden denemeler geçici sorunları telafi edebilir.
  • Ancak aynı olay birden çok kez çalışabilir.
  • İdempotentlik ve net hata yönetimi kritik önemdedir.

Yeniden deneme girişimleri zaman çizelgesi

AWS Lambda ile Sunucusuz Uygulamalar

Yeniden denemeler ne zaman tehlikelidir

  • İş idempotent değilse yeniden denemeler risklidir.
  • Örnekler: karttan çekim, e‑posta gönderimi.
  • Yinelenenlerin zarar vermemesi için idempotency key'leri ve güvenli güncellemeler kullanın.

İdempotentlik hedefi

AWS Lambda ile Sunucusuz Uygulamalar

DLQ (Dead-Letter Queue)

  • Yeniden denemelerden sonra da başarısız olan olaylar için güvenli bir yer.
  • Genellikle SQS kuyruğu, AWS'nin yönetilen ileti kuyruğu.
  • Yükü inceleyin, sorunu düzeltin ve yeniden sürün (re-drive).

DLQ kayıp‑eşya benzetmesi

AWS Lambda ile Sunucusuz Uygulamalar

DLQ ve hedefler

DLQ kayıp‑eşya benzetmesi

  • Yeniden denemeler sonrası başarısız olayları yakalar.
  • İnceleme için kullanın.

Hedeflere yönlendirme diyagramı

  • Başarı veya hatada sonuçları yönlendirin.
  • Açık başarı ve hata yolları kurun.
AWS Lambda ile Sunucusuz Uygulamalar

Hedefler: başarı ve hata yolları

  • Başarıda sonucu onSuccess'a gönderin.
  • Hata durumunda ayrıntıları onFailure'a gönderin.
  • Böylece sonraki adım netleşir.

Hedeflere yönlendirme diyagramı

AWS Lambda ile Sunucusuz Uygulamalar

Yeniden deneme ilkesini ayarlama

  • Lambda'nın kaç kez yeniden deneyeceğini ayarlayın.
  • Bayat veriyi işlemekten kaçınmak için olay yaşını sınırlayın.
  • Daha fazla deneme güvenilirliği artırır; kopyaları ve gecikmeyi de artırır.

Yeniden deneme ilkesi denetimleri

AWS Lambda ile Sunucusuz Uygulamalar

Maksimum olay yaşı: son kullanma tarihi

  • En büyük olay yaşı bir son kullanma ilkesidir.
  • Olay çok eskiyse işlemek anlamsız olabilir.
  • Uzlaşma: daha az geç gelen olay, daha zamanında davranış.

Olay yaşının sona erme benzetmesi

AWS Lambda ile Sunucusuz Uygulamalar

Gözlemlenebilirlik: nereye bakmalı

  • Günlükler ne olduğunu gösterir.
  • Metrikler bunun ne sıklıkta olduğunu gösterir.
  • Alarmlar sıçramaları hızla yakalamanıza yardım eder.

Günlükler ve metrikler

AWS Lambda ile Sunucusuz Uygulamalar

Başarısız olaylarla ne yapmalı

  • Yükü ve hatayı inceleyin.
  • Kök nedeni düzeltin.
  • Olayı yeniden sürün ve hataları ile throughput'u izleyin.

Başarısız olay kurtarma döngüsü

AWS Lambda ile Sunucusuz Uygulamalar

Öne çıkanlar

  • Güvenilirlik; yeniden denemeler, yönlendirme ve gözlemlenebilirlikten gelir.
  • Eşzamanlı hatalar çağırana ulaşır.
  • Eşzamansız hatalar için yeniden deneme ve DLQ veya hedef gerekir.
  • Bu, hataları görünür tutar.

Güvenilirlik formülü diyagramı

AWS Lambda ile Sunucusuz Uygulamalar

Haydi pratik yapalım!

AWS Lambda ile Sunucusuz Uygulamalar

Preparing Video For Download...