Hizmetleri koordine etme ve durumu yönetme

AWS üzerinde Uygulama Geliştirme

Ricardo Sueiras

Principal Technologist

Hizmet Koordinasyonu

 

hizmet koordinasyonu

  • Bir iş akışını tamamlamak için birden çok hizmet birlikte çalışır.
  • Bir koordinasyon stratejisine ihtiyaç duyarlar.
  • İki yaklaşım: orkestrasyon ve koreografi.
AWS üzerinde Uygulama Geliştirme

Orkestrasyon

 

orkestrasyon deseni

  • Merkezi bir orkestratör iş akışını koordine eder.
  • Orkestratör sıralamayı kontrol eder ve sıradaki hizmete karar verir.
  • Yeniden denemeler, koşullu mantık ve hata yönetimi için kullanışlıdır.
  • AWS'de: Step Functions ile Lambda, ECS, DynamoDB üzerinde uygulanır.
AWS üzerinde Uygulama Geliştirme

Orkestrasyon

 

orkestrasyon deseni

  • İş akışı mantığı tek yerde olduğundan hata ayıklama ve izleme daha kolaydır.
  • Bedeli: merkezi bir bağımlılık getirir.
AWS üzerinde Uygulama Geliştirme

Koreografi

  • Merkezi bir denetleyici yok.
  • Hizmetler olaylara bağımsız tepki verir.
  • Her hizmet ilgili olayları dinler ve işini yapar.
  • Hiçbir hizmet tüm iş akışını bilmek zorunda değildir.
  • Gevşek bağlılık ve ölçeklenebilirliği artırır.

 

koreografi

AWS üzerinde Uygulama Geliştirme

Koreografi

  • AWS'de: EventBridge, SNS, SQS.
  • Yüksek ölçekte ölçeklenebilir.
  • Bedeli: iş akışları büyüdükçe anlamak ve hata ayıklamak zorlaşır.

 

koreografi

AWS üzerinde Uygulama Geliştirme

Olay güdümlü mimari

  • Hizmetler olay üreterek ve tüketerek iletişim kurar.
  • Hizmetler arasında gevşek bağlılığı teşvik eder.
  • Yüksek ölçeklenebilirliği teşvik eder.
  • Olayların paralel işlenmesini sağlar.
  • Mevcut hizmetleri değiştirmeden yeni hizmetler abone olabilir.

 

olay güdümlü mimari

AWS üzerinde Uygulama Geliştirme

Olay güdümlü mimari

 

olay güdümlü mimari

  • EDA uygularken ödünleşimler:
  • Sonunda tutarlılık için tasarla.
  • İdempotentlik uygula.
  • Hata yönetimi daha karmaşıktır.
AWS üzerinde Uygulama Geliştirme

İdempotentlik

 

idempotency

  • Aynı işlemi birden çok kez çalıştırmak aynı sonucu üretir.
  • Asenkron ve olay güdümlü sistemlerde kritik bir tasarım ilkesidir.
  • Dağıtık sistemler yinelenen olaylar teslim edebilir (yeniden denemeler, ağ hataları, yeniden işleme).
  • Sistem doğruluğunu ve güvenilirliğini korur.
AWS üzerinde Uygulama Geliştirme

Dead letter queues

 

dlq

  • Asenkron iletişimdeki hataları yönetir.
  • Sorunlu "zehirli" iletileri izole eder.
  • Tekrarlı yeniden denemeler de başarısız olunca ileti DLQ'ya taşınır.
  • Ana işleme akışı çalışmaya devam eder.
AWS üzerinde Uygulama Geliştirme

Dead letter queues

  • İleti sırası kritik değilse kullan.
  • Ara sıra veri kaybının kabul edilebilir olduğu kritik olmayan sistemlerde atla.
  • İleti sırasının korunması gerekiyorsa kaçın.

 

dlq

AWS üzerinde Uygulama Geliştirme

Durumu yönetme

  • Durumu yönetmek bulut-yerel uygulamalar için temeldir.
  • Durum, etkileşimler arasında korunan her tür veridir.
  • Durumu sunucuda yerel saklamak ölçeklenebilirliği ve dayanıklılığı sınırlar.

 

durum yönetimi

AWS üzerinde Uygulama Geliştirme

Durumu yönetme

  • Durum yönetimi, ne inşa ettiğine bağlı ödünleşimler içerir.
  • Harici durum, ölçeklenebilirliği ve dayanıklılığı artırır.
  • Maliyetler: ek gecikme ve karmaşıklık.
  • Düşünülmesi gerekenler: tutarlılık, önbellekleme ve veri erişim kalıpları.

 

durum yönetimi

AWS üzerinde Uygulama Geliştirme

Durumlu (Stateful)

 

durumlu tasarım

  • Oturum verisi sunucuda tutulur.
  • İstekler aynı örneğe yönlendirilmelidir (yapışkan oturumlar).
  • Ölçekleme esnekliğini sınırlar.
  • Örnek başarısız olursa oturum kaybolur.
AWS üzerinde Uygulama Geliştirme

Durumsuz (Stateless)

 

durumsuz

  • Her istek bağımsız ele alınır.
  • Sunucuda durum saklanmaz.
  • Durum harici sistemlerde yaşar.
  • Bulut-yerel uygulamalar için tercih edilen yaklaşımdır.
  • Her örnek herhangi bir isteği karşılayabilir; yatay ölçekleme basittir.
AWS üzerinde Uygulama Geliştirme

Hadi pratik yapalım!

AWS üzerinde Uygulama Geliştirme

Preparing Video For Download...