Eğitimlere dön

Olay güdümlü mimari: Kafka ve outbox deseni

Servisler arası senkron çağrı yerine olaylar ve yerel projeksiyonlarla çalışan, kayıp mesaj üretmeyen dağıtık sistemlerin tasarımı ve .NET ile uygulanması.

Süre: 6 gün (48 saat) Seviye: Orta-ileri düzey Hedef kitle: Backend geliştiriciler ve yazılım mimarları
Kafka Olay güdümlü Outbox .NET Mikroservisler

Eğitime genel bakış

Mikroservislerin en sık bozulduğu yer, birbirini senkron çağırdıkları yerdir: bir servis yavaşlayınca zincirin tamamı yavaşlar, biri düşünce ötekiler de hata verir. Bu eğitimde servislerin durumu olaylarla paylaştığı, her servisin ihtiyaç duyduğu veriyi kendi yerel kopyasında tuttuğu bir mimariyi baştan sona kuruyoruz. Kendi platformumuz MicroFrame’de servisler arası senkron çağrıyı kural olarak kaldırdık; eğitimdeki desenler ve tuzaklar o işin içinden geliyor.

Kurs içeriği

1. Senkron çağrının maliyeti

  • Zincirleme hata ve gecikme toplamı
  • Zamansal bağımlılık: iki servisin aynı anda ayakta olma şartı
  • Ne zaman senkron çağrı kalabilir
  • Olay güdümlü mimariye geçiş kararı

2. Olay modelleme

  • Olay, komut ve sorgu
  • Olayın adı geçmiş zamanda: OrderPlaced
  • Olayın taşıması gereken alanlar
  • İnce olay ve durum taşıyan olay
  • Olay sözleşmesinin sahipliği

3. Kafka temelleri

  • Broker, topic ve partition
  • Replikasyon, ISR ve min.insync.replicas
  • Producer onayları: acks ve idempotent producer
  • Consumer group, offset ve rebalancing

4. Sıralama ve anahtar

  • Sıralama yalnız partition içinde garanti
  • Anahtar seçimi: aggregate kimliği
  • Sıcak partition sorunu
  • Uygulama: iki servisi senkron çağrıdan olaya taşımak

5. Transactional outbox

  • Çift yazma sorunu: veritabanı ve kuyruk
  • Outbox tablosu ve aynı transaction’da yazmak
  • Relay: polling ve CDC (Debezium) karşılaştırması
  • Olay türlerini kaydetmeyi unutmak: sessiz kayıp
  • Uygulama: EF Core ile outbox

6. Tüketici tarafı

  • En az bir kez teslim ve tekrar eden mesaj
  • Inbox tablosu ve idempotent işleme
  • Commit sırası: önce işle, sonra offset
  • Tüketicide ortam bağlamı: kiracı, kullanıcı, sistem kimliği

7. Hata yönetimi

  • Geçici ve kalıcı hata ayrımı
  • Yeniden deneme ve geri çekilme (backoff)
  • Ölü mektup kuyruğu (DLQ) ve yeniden işleme
  • Zehirli mesaj ve tüketiciyi durdurma politikası

8. Şema evrimi

  • Yeni alanı opsiyonel ve varsayılanlı eklemek
  • Alan silmek ve yeniden adlandırmak
  • Şema kaydı (Schema Registry) ve sözleşme testleri
  • Uygulama: eski tüketiciyi kırmadan olayı büyütmek

9. Durum yayını ve yerel projeksiyon

  • Compacted topic ve tombstone
  • Tüketicide yerel kopya: okuma için kimseyi çağırmamak
  • Projeksiyon hazır olana dek trafiği beklemek
  • Uygulama: senkron doğrulamayı projeksiyonla değiştirmek

10. Yeniden oynatma ve backfill

  • Yeni servisin geçmişten ayağa kalkması
  • Tek seferlik backfill ve işaret tablosu
  • Birden fazla pod’da tek seferlik iş: lider seçimi

11. Saga ve iş akışları

  • Koreografi ve orkestrasyon
  • İstek ve cevap olayları: XRequested ve XCreated
  • Telafi edici adımlar
  • Zaman aşımı ve yarım kalan akışlar

12. İşletme

  • Tüketici gecikmesi (lag) ve outbox birikmesi
  • Topic yapılandırması: replication factor, retention, cleanup.policy
  • İz kimliğini mesajda taşımak
  • Alarmlar ve olay sonrası inceleme

Program akışı

Her modül yaklaşık 4 saat, yani yarım gün sürer; toplam 48 saat.

    1. gün: modül 1 ve 2
    1. gün: modül 3 ve 4
    1. gün: modül 5 ve 6
    1. gün: modül 7 ve 8
    1. gün: modül 9 ve 10
    1. gün: modül 11 ve 12

Ön koşullar

  • C# ve ASP.NET Core ile servis geliştirme deneyimi
  • Entity Framework Core ve ilişkisel veritabanı bilgisi
  • Docker ile yerelde konteyner çalıştırabilmek
  • Docker Desktop ve .NET 10 SDK kurulu bir dizüstü bilgisayar

Eğitim formatı

  • Yerinde ya da uzaktan: ofisinizde veya canlı sanal oturumlarla.
  • Uygulamalı: her gün, o günün konusunu çalışan bir örnek üzerinde uyguladığınız lab oturumlarıyla biter.
  • Lab ortamı: katılımcılara önceden hazırlanmış bir çalışma ortamı ve örnek kod deposu verilir.
  • Ekibinize göre: içerik ve örnekler, eğitimden önce yaptığımız kısa bir görüşmeyle ekibinizin kullandığı teknolojilere uyarlanır.
  • Materyaller: sunumlar, lab yönergeleri ve referans kod eğitimden sonra da sizde kalır.
Başlamaya hazır mısınız?

Projenize başlamaya hazır mısınız?

Fikirlerinizi hayata geçirmek için size nasıl yardımcı olabileceğimizi konuşalım.