⚡ÖZET VE TEKNİK CEVAP
Asenkron olay güdümlü mikroservislerde, bağımsız servisler ortak mesaj kuyrukları (Kafka, Pulsar) üzerinden haberleşir. A Takımı bir Avro veya Protobuf şemasına zorunlu bir alan ekler veya mevcut alanın adını değiştirirse, canlıda henüz güncellenmemiş eski tüketici servisleri anında SerDe (Deserialization) Hataları vererek çöker ve kuyruk tıkanır. Bir Şema Kayıt Merkezi (Schema Registry) merkezi bir denetçi olarak çalışır ve şemaları katı Uyumluluk Modları (Compatibility Modes) ile güvenceye alır:
GERİYE UYUMLULUK (BACKWARD): Yeni şemaya sahip tüketiciler, eski üreticilerin ürettiği mesajları okuyabilir (önce tüketicilerin güncellenmesine izin verir).
İLERİYE UYUMLULUK (FORWARD): Eski şemaya sahip tüketiciler, yeni üreticilerin mesajlarını okuyabilir (önce üreticilerin güncellenmesine izin verir).
TAM UYUMLULUK (FULL): Hem geriye hem ileriye aynı anda uyumludur.
TAM GEÇİŞLİ UYUMLULUK (FULL_TRANSITIVE): Yeni şemanın sadece bir önceki (N-1) sürüme değil, Kafka diskinde geçmişten kalan tüm 1 dots N-1 eski şema sürümlerine karşı %100 uyumlu olduğunu garanti eder.
Mühendislik El Kitabı & Mekanizma
6 Boyutlu Mimari Analiz⚙️1. Temel Çalışma Mekanizması
Mekanizma🎯2. Doğru Kullanım Senaryosu
Kapsam⚠️3. Prodüksiyon Arıza Modları
Kritik Risk📡4. Teşhis ve Telemetri Sinyalleri
Metrikler🛡️5. Önleme ve Mimari Bariyerler
Bariyerler⚖️6. Mimari Ödünleşimler (Trade-offs)
ÖdünleşimVaka İncelemesi (TinyCTO Saha Örneği)
Bir bankanın para transferi Kafka konusunu dinleyen 14 bağımsız tüketici mikroservisi vardı. Üretici ekip OdemeBaslatildi Avro şemasına varsayılan değeri olmayan isyeri_kategori_kodu alanını ekledi. Şema kayıt merkezi olmasaydı bu dağıtım 14 tüketici servisin tamamını çökertecekti. Ancak Confluent Schema Registry FULL_TRANSITIVE modunda çalıştığı için CI/CD süreci bu değişikliği uyumsuz bularak derlemeyi durdurdu. Geliştirici şemaya "default": "BILINMIYOR" değerini ekledi; şema onaylandı ve 14 tüketici servis tek bir milisaniye kesinti yaşamadan çalışmaya devam etti.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaBir Şema Kayıt Merkezinde BACKWARD (Geriye) ile FORWARD (İleriye) uyumluluk arasındaki fark nedir?
Uzun süre veri saklayan (long-retention) Kafka konularında FULL_TRANSITIVE uyumluluk neden kritiktir?
Şema Kayıt Yönetişimi (Schema Registry): Geriye, İleriye ve Tam Geçişli (Transitive) Uyumluluk Kuralları — Sıkça Sorulan Sorular
Bir Avro veya Protobuf şemasına yeni bir alan eklerken uyulması gereken altın kural nedir?
Eski veya yeni tüketicilerin alan eksikliği hatası almaması için yeni eklenen her alana mutlaka bir varsayılan değer (`default`) atayın.
Bir tüketici bir Kafka mesajını çözerken hangi şema sürümünü kullanacağını nasıl anlar?
Üretici tarafından mesajın en başındaki 5 baytlık başlığa gömülen 4 baytlık Şema ID'sini okuyarak.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸
Şema Kayıt Merkezi bağımsız mikroservisler arasındaki serileştirme çökmelerini önler.
- ▸
Uzun süre veri saklayan kuyruklar için FULL_TRANSITIVE uyumluluğu zorunlu kılın.
- ▸
Avro/Protobuf şemalarında yeni eklenen tüm alanlara mutlaka varsayılan değer tanımlayın.
- ▸
Otomatik şema uyumluluk kontrollerini Git PR onay süreçlerine entegre edin.
Yaygın Yanılgılar
- ✗
Yanılgı: Şemasız olduğu için Kafka'da düz JSON kullanmak daha iyidir (Gerçek: Şemasız JSON sessiz çalışma anı hataları yaratır ve ikili Avro/Protobuf'a göre 5 kat fazla bant genişliği tüketir).
- ✗
Yanılgı: Sadece bir önceki (N-1) sürüme uyumluluk kontrolü yapmak yeterlidir (Gerçek: Geçmiş mesajları baştan okuyan tüketiciler FULL_TRANSITIVE olmadan çöker).
Karar Kılavuzu & Önceliklendirme
Ekipler arası veri kontratı bozulmalarını sıfırlamak için tüm kurumsal Kafka konularında FULL_TRANSITIVE uyumluluğa sahip Şema Kayıt Merkezi kullanımını zorunlu kılın.
Doğrulanmış Kaynaklar & Referanslar
- [OFFICIAL_DOCUMENTATION]Schema Registry Compatibility Modes & Schema Evolution— Confluent Documentation
