Olay güdümlü uygulamalar

AWS üzerinde Uygulama Geliştirme

Ricardo Sueiras

Principal Technologist

Olay nedir?

 

olay vs iletiler

  • İleti, bileşenler arasında gönderilen bir iş birimidir.
  • Olay, bir şeyin zaten olduğunu kaydeder.
  • Servisler, olay yayımlayarak iletişim kurar.
  • Diğer servisler bu olaylara bağımsız tepki verir.
  • Gevşek bağlılık bağımlılıkları azaltır, ölçeklenebilirliği artırır.
AWS üzerinde Uygulama Geliştirme

Olay üreticileri

 

olay üreticileri

  • Üreticiler, eylemler olduğunda olay oluşturup yayımlar.
  • Hem AWS servisleri hem de özel uygulamalar olay üretebilir.
  • Amazon S3'e dosya yüklemek bir örnektir.
  • Amazon S3 ardından bir object-created olayı yayar.
AWS üzerinde Uygulama Geliştirme

Olay tüketicileri

 

tüketiciler

  • Tüketiciler olayları eşzamansız alıp işler.
  • Olay kaynakları farklı iletim modelleri kullanır.
  • İtme tabanlı: olaylar anında iletilir.
  • Yoklama tabanlı: tüketiciler yokladığında olayları çeker.
AWS üzerinde Uygulama Geliştirme

Olay kaynak eşlemesi

  • AWS Lambda yaygın bir olay tüketicisidir.
  • Kaynakları yoklar ve kayıtları otomatik olarak toplu çeker.

 

olay kaynak eşlemesi

AWS üzerinde Uygulama Geliştirme

Lambda olay kaynak eşlemelerini ayarlama

  • Olay kaynak eşlemelerini ayarlayarak verimi artır.
  • Çağrı başına kayıt sayısını kontrol için toplu boyutu ayarla.
  • Başarısız kayıtlar için yeniden deneme kontrollerini yapılandır.
  • Desteklenen kaynaklarda kısmi toplu yanıtları kullan.
  • ReportBatchItemFailures, başarılı kayıtların yeniden işlenmesini önler.

 

olay kaynak eşlemesi

AWS üzerinde Uygulama Geliştirme

Amazon EventBridge

  • EventBridge, servisler ve uygulamalar arasında olayları yönlendirir.
  • Servisleri sıkı bağlamadan dinamik yönlendirme sağlar.
  • Uygulamalar olaylarını EventBridge'e yayımlar.
  • Yönlendirme kuralları hangi hedeflerin olay alacağını belirler.

 

event bridge

AWS üzerinde Uygulama Geliştirme

EventBridge yetenekleri

 

yetenekler

  • EventBridge çeşitli yönlendirme yetenekleri sunar.
  • Kurallar bir olayı birçok hedefe dağıtabilir.
  • Zamanlanmış kurallar cron sunucularına gerek bırakmaz.
  • Zamanlamalar rate(), at() ve cron() ifadelerini destekler.
  • Pipes uçtan uca entegrasyon sağlar.
  • Pipes ayrıca filtreleme ve dönüşüm sunar.
AWS üzerinde Uygulama Geliştirme

Olay veri yolları

 

olay veri yolu

  • Farklı olay veri yolları yönlendirmeyi optimize eder.
  • Varsayılan veri yolu AWS servislerinden olay alır.
  • Özel veri yolları uygulamaya özgü olayları taşır.
  • İş ortağı veri yolları üçüncü taraf sağlayıcılardan olay alır.
  • Kurallar, her veri yolu ile hedefleri arasında yer alır.
AWS üzerinde Uygulama Geliştirme

Şema keşfi

 

olay şeması ve kayıt

  • Üreticiler ve tüketiciler çoğu zaman bağımsız evrilir.
  • Olay yapısını anlamak kritiktir.
  • Şema keşfi gelen olayların yapısını yakalar.
  • Bunu olay yüklerini incelemek için kullan.
  • Entegrasyonları doğrulamak için kullan.
  • Desteklenen diller için bağlayıcı üretmekte kullan.
AWS üzerinde Uygulama Geliştirme

Şema kayıt defteri

  • Şema kayıt defteri olay şemalarını saklar.
  • Geliştiricilerin yapıyı anlamasına ve bağlayıcı üretmesine yardım eder.

 

olay şeması ve kayıt

AWS üzerinde Uygulama Geliştirme

Olay filtreleme

  • Filtreleme gereksiz işlemeyi azaltır.
  • Eşleşmeleri JSON olay kalıplarıyla tanımla.
  • Kalıplar yalnızca istediğin olayları eşleştirir.
  • Sonraki sistemler sadece ilgili olayları işler.

 

olay filtreleme

AWS üzerinde Uygulama Geliştirme

Olay sıralama

  • Olay sıralaması her zaman garanti edilmez.
  • Bazı servisler olayları sıra dışı işleyebilir.
  • Sıralamayı dayatmak için kontrol mekanizmaları kullan.

 

olay sıralama

AWS üzerinde Uygulama Geliştirme

Olayları arşivleme ve tekrar oynatma

 

arşivleme ve tekrar oynatma

  • EventBridge olayları arşivleyip sonra tekrar oynatabilir.
  • Hatalardan kurtulmak için olayları tekrar oynat.
  • Yeni tüketicileri test etmek için tekrar oynat.
  • Aşağı akış sistemleri yeniden kurmak için tekrar oynat.
AWS üzerinde Uygulama Geliştirme

Hata yönetimi

 

hatalarla başa çıkma

  • Olay güdümlü uygulamalar hataları güvenle ele almalıdır.
  • Hatalar, yinelenen olayları da içerir.
    • Başarısız işleme.
    • Kullanılamayan tüketiciler.
  • Mümkün olduğunda tüketicileri idemponent tasarla.
AWS üzerinde Uygulama Geliştirme

DLQ'ler ve hedefler

 

hatalarla başa çıkma

  • DLQ'leri, tekrar tekrar başarısız olan olayları yalıtmak için kullan.
  • EventBridge'de DLQ'ler işlev başına değil, kural hedefi başına yapılandırılır.
  • Lambda Destinations bu yönlendirmeyi genişletir.
  • Destinations hem başarı hem hata sonuçlarını yönlendirir.
AWS üzerinde Uygulama Geliştirme

Olayları test etme ve doğrulama

  • Olay güdümlü uygulamaları test etmek yönlendirmeyi doğrular.
  • Olay filtrelemeyi de doğrular.
  • Olay yeniden denemelerini de doğrular.
  • Dağıtık sistemlerde işlemenin gerçekleştiğini teyit eder.
  • AWS SAM ile örnek test olayları üret.
  • Örnek olaylar birebir aynı JSON çıktısını üretir.

 

test etme

AWS üzerinde Uygulama Geliştirme

Ne test edilmeli

  • SAM, dağıtımdan önce yerelde test etmene olanak tanır.
  • Olay kalıbı eşleşmesini doğrula.
  • Yeniden deneme davranışını doğrula.
  • Kısıtlama (throttling) senaryolarını doğrula.
  • Yinelenen olay teslimini doğrula.
  • İdemponent tüketici davranışını doğrula.

 

test etme

AWS üzerinde Uygulama Geliştirme

Hadi pratik yapalım!

AWS üzerinde Uygulama Geliştirme

Preparing Video For Download...