Mimari stiller ve iletişim desenleri
AWS üzerinde Uygulama Geliştirme
Ricardo Sueiras
Principal Technologist
Eğitmenin
Mimari desenler nedir?
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.
Monolitler
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.
Microservices
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.
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.
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.
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.
Eşzamanlı (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.
Desen: istek/yanıt
Çoğu uygulama arayüzünün belkemiği.
Öngörülebilir davranış.
Kullanıcıya anında geri bildirim.
Eşzamanlı olmayan (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.
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.
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.
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.
Desen: 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ı.
İleti 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.
Hadi pratik yapalım!
AWS üzerinde Uygulama Geliştirme
Preparing Video For Download...