Mimari stiller ve iletişim desenleri

AWS üzerinde Uygulama Geliştirme

Ricardo Sueiras

Principal Technologist

Eğitmenin

eğitmen

AWS üzerinde Uygulama Geliştirme

Mimari desenler nedir?

 

 

Uygulama mimarisi

 

  • Yaygın bir probleme tekrarlanabilir çözüm.
  • Desenler, AWS servislerini nasıl birleştireceğini gösterir.
  • Mimari, uygulamanın yük altındaki performansını belirler.
  • Bilmen gereken birkaç mimari desen var.
AWS üzerinde Uygulama Geliştirme

Monolitler

 

 

örnek monolit mimarisi diyagramı

 

 

  • Tek, sıkı bağlı bir birim.
  • Tek kod tabanı, tek dağıtım.
  • Başta geliştirmesi kolay.
  • Ölçeklemek sancılı: her şeyi birlikte ölçeklersin.
AWS üzerinde Uygulama Geliştirme

Microservices

 

microservices architecture

 

  • Küçük, bağımsız servisler: her biri tek bir iş yeteneğine sahip.
  • Her servisi bağımsız dağıt, ölçekle ve güncelle.
  • Bedeli: daha fazla operasyonel karmaşıklık ve servisler arası iletişim yönetimi.
AWS üzerinde Uygulama Geliştirme

Sunucusuz (Serverless)

  • Yönetilecek altyapı yok; sadece kod ve yapılandırma.
  • Yönetilen AWS servislerini birleştirerek inşa et.
  • Sağlama, ölçekleme ve bakımı AWS üstlenir.
  • Bedeli: yürütme süresi sınırları, soğuk başlatmalar, üreticiye bağımlılık.
  • Neredeyse sıfır operasyonel yük ve otomatik ölçekleme.

 

serverless architecture

AWS üzerinde Uygulama Geliştirme

Olay güdümlü mimari (EDA)

  • Bileşenler doğrudan çağrı yerine olay üreterek/tüketerek iletişim kurar.
  • Olay, gerçekleşen bir şeyi kaydeder (sipariş verildi, ödeme alındı, ürün gönderildi).
  • Üreticiler olay yayar.
  • Tüketiciler ilgilendikleri olaylara abone olur.

 

event driven architecture

AWS üzerinde Uygulama Geliştirme

Sıkı ve gevşek bağlı sistemler

  • Modern bulut uygulamaları birden çok servisten oluşur.
  • İşi tamamlamak için servislerin iletişip koordine olması gerekir.
  • Eşzamanlı iletişim sıkı bağlıdır.
  • Eşzamanlı olmayan iletişim gevşek bağlıdır.

sıkı ve gevşek bağlı sistemler

AWS üzerinde Uygulama Geliştirme

Eşzamanlı (senkron) iletişim

 

senkron iletişim

  • Bir servis istek gönderir ve yanıt bekler.
  • Arayan, yanıt ya da zaman aşımına kadar bloklanır.
  • Uygulaması ve anlaşılması kolaydır.
  • Sıkı bağ: alttaki yavaşlık veya hata zincirleme etkiler.
  • Zaman aşımı, yeniden deneme ve devre kesicilerle hafiflet.
AWS üzerinde Uygulama Geliştirme

Desen: istek/yanıt

istek-yanıt

  • Çoğu uygulama arayüzünün belkemiği.
  • Öngörülebilir davranış.
  • Kullanıcıya anında geri bildirim.
AWS üzerinde Uygulama Geliştirme

Eşzamanlı olmayan (asenkron) iletişim

 

asenkron iletişim

  • Gönderici yanıt beklemez.
  • Bir ileti veya olay gönderir ve işlemeye devam eder.
  • Alıcı iletiyi bağımsız işler.
  • Gevşek bağlı: daha iyi ölçeklenebilirlik ve hata toleransı.
  • Trafik sıçramalarını ve kısmi kesintileri iyi yönetir.
  • Zorluklar: yinelenen iletiler, sıralama, sonuçta tutarlılık.
AWS üzerinde Uygulama Geliştirme

Desen: kuyruk tabanlı ayrıştırma

  • Üretici iletileri bir kuyruğa gönderir.
  • Tüketici iletileri bağımsızca çeker ve işler.
  • Hataların zincirleme yayılmasını önler.
  • Üretici ve tüketici bağımsız ölçeklenir.

  kuyruk tabanlı

AWS üzerinde Uygulama Geliştirme

Desen: işçi kuyruğu

  • Bir kuyruğa birden çok işçi ileti çeker.
  • İletiler paralel işlenir.
  • Yatay ölçekleme ve daha yüksek bant genişliği sağlar.
  • İleti sırası garanti edilmez.

işçi-kuyruk

AWS üzerinde Uygulama Geliştirme

Desen: yayınla/abone ol (publish/subscribe)

  • Yayıncılar iletileri bir SNS konusuna gönderir.
  • Birden çok abone aynı iletiyi alır.
  • Birçok tüketiciye gerçek zamanlı yayın.

 

yayınla-abone ol deseni

AWS üzerinde Uygulama Geliştirme

Desen: fan-out

fan-out

  • Tek bir ileti aynı anda birden fazla tüketiciye iletilir.
  • Olay güdümlü mimarilerde yaygın.
  • Aynı olaya birden fazla servis tepki verecekse yararlı.
AWS üzerinde Uygulama Geliştirme

İleti sıralaması

ileti sıralaması

  • Bazı iş yükleri iletileri doğru sırada işlemelidir.
  • Amazon SQS FIFO ve Kinesis sıralı işlemeyi destekler.
  • Sıkı sıralama, verimi düşürür.
  • Doğruluk ile ölçeklenebilirliği dengele.
AWS üzerinde Uygulama Geliştirme

Hadi pratik yapalım!

AWS üzerinde Uygulama Geliştirme

Preparing Video For Download...