ÖZET VE TEKNİK CEVAP
Bir şirkette mikroservis sayısı 5'ten 50'ye çıktığında, geliştiriciler altyapı kodlarını rastgele yazmaya başlar: A Servisi düz metin log atarken B Servisi JSON yazar; C Servisi OpenTelemetry kullanırken D Servisi kendi uydurduğu başlıklarla izleme yapmaya çalışır. Canlı bir kesinti anında nöbetçi mühendisler servisler arasındaki logları birbirine bağlayamaz çünkü **Dağıtık İzleme ID'leri (Trace ID) kaybolmuştur** ve Prometheus metrikleri toplanamaz. Chris Richardson bu karmaşayı **Mikroservis Şasi Modeli (Microservice Chassis Pattern)** ile çözmüştür: Her yeni servisin temel aldığı standart, kurumsal bir çatı şablonudur (Spring Boot Starter, NestJS Core Module veya Go şasi kütüphanesi). Şasi şu özellikleri kutudan çıktığı gibi hazır sunar: (1) Otomatik OpenTelemetry dağıtık izleme filtreleri, (2) `trace_id` içeren yapılandırılmış JSON loglama, (3) Kubernetes `/healthz` ve `/readyz` sağlık kontrolleri, (4) Merkezi gizli anahtar (secret) yönetimi, ve (5) Entegre devre kesici (circuit breaker) ve hız limitleri.
Mühendislik El Kitabı & Mekanizma
1. Temel Çalışma Mekanizması
Mikroservis Şasi modeli projeye eklenen çekirdek bir kütüphane veya başlangıç şablonu olarak çalışır: (1) W3C Dağıtık İz Yayılımı: Gelen istek ara yazılımı (middleware) `traceparent` başlığını okur ve loglara ile giden tüm dış HTTP çağrılarına otomatik enjekte eder. (2) Yapılandırılmış JSON Log Enjeksiyonu: Loglama kütüphanesi her log satırına otomatik olarak `service.name`, `trace_id` ve `span_id` ekler. (3) Çift Sağlık Kontrolü: Şasi `/healthz` (Canlılık: süreç ayakta mı?) ve `/readyz` (Hazırlık: veritabanı ve Kafka bağlantısı hazır mı?) uç noktalarını standartlaştırır. (4) Standart Metrikler: Prometheus için gecikme histogramlarını (`http_server_duration_seconds`) otomatik olarak dışa açar.
2. Doğru Kullanım Senaryosu
Kurumsal mikroservis platformları, çok dilli (polyglot) geliştirici altyapıları ve çok takımlı SaaS mühendislik organizasyonları.
3. Prodüksiyon Arıza Modları
Şasi kütüphanesini iş kurallarıyla doldurup 50 MB'lık dev bir canavara dönüştürerek bağımlılık cehennemi yaratmak; şasi güncellemelerini otomatikleştirmeyip eski servislerin 3 yıllık güvensiz şasi sürümlerinde kalmasına göz yummak.
4. Teşhis ve Telemetri Sinyalleri
Jaeger / Datadog izleme ekranlarında mikroservisler arasında trace zincirinin kopması; takımlar farklı sağlık yolu kullandığı için (`/ping` vs `/readyz`) Kubernetes'in yeni pod'ları sürekli baştan başlatması.
5. Önleme ve Mimari Bariyerler
Şasi kütüphanesini kesinlikle yalnızca altyapı işleriyle sınırlı tutun (sıfır iş kuralı); Renovate Bot ile tüm şirket depolarında şasi güncellemelerini otomatik PR olarak açın; CI kurallarıyla şasi uyumluluğunu denetleyin.
6. Mimari Ödünleşimler (Trade-offs)
Mikroservis şasisi anında geliştirici verimliliği ve %100 gözlemlenebilirlik standardı sağlar; ancak desteklenen her programlama dili (Java, Go, Node.js) için ayrı platform bakımı gerektirir.
Vaka İncelemesi (TinyCTO Örneği)
40 mikroservisi olan bir finans şirketi canlı kesintilerde hata ayıklayamıyordu: Her takım farklı log formatı basıyor ve servisler arası izleme zincirleri kopuyordu. Platform ekibi standart bir `company-chassis` kütüphanesi yayınladı. Yeni bir servis açıldığında sadece 3 satır kodla OpenTelemetry, trace bağlantılı JSON loglama ve `/readyz` kontrolleri hazır geldi. Bir sonraki büyük kesintide nöbetçi ekip Datadog'da tek bir `trace_id` aratarak 7 servislik zincirdeki hatanın kaynağını 45 saniyede tespit etti ve ortalama çözüm süresini (MTTR) %84 kısalttı.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaMikroservis Şasi Modelinin (Microservice Chassis Pattern) temel amacı nedir?
Bir mikroservis şasisinde Canlılık (`/healthz`) ile Hazırlık (`/readyz`) kontrolleri arasındaki fark nedir?
Mikroservis Şasi Modeli (Microservice Chassis Pattern): Standart Gözlemlenebilirlik, Sağlık Kontrolleri ve Ortak Kesişen İlgiler — Sıkça Sorulan Sorular
Bir Mikroservis Şasisi kütüphanesinin içine iş mantığı (business logic) konulmalı mıdır?
KESİNLİKLE HAYIR. Şasiye iş kuralı koymak servisleri birbirine kilitler ve şasiyi bakılamaz bir dağıtık monolit darboğazına dönüştürür.
Bir şasi HTTP sınırları arasında dağıtık izlerin (traces) kaybolmamasını nasıl garanti eder?
Gelen isteklerdeki `traceparent` başlığını ara yazılımda otomatik okuyup, servisin dışarıya yaptığı tüm giden HTTP/gRPC çağrılarına aynı iz üstverisini otomatik ekleyerek.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸Mikroservis Şasisi ortak altyapı işlerini (izleme, loglama, sağlık kontrolleri) standartlaştırır.
- ▸Tüm mikroservis filosu boyunca kopmayan W3C dağıtık iz yayılımını garanti eder.
- ▸Kubernetes için standart `/healthz` (canlılık) ve `/readyz` (hazırlık) kontrolleri sunar.
- ▸Dağıtık monolit kilitlenmesini önlemek için şasi kütüphaneleri SIFIR iş mantığı içermelidir.
Yaygın Yanılgılar
- ✗Yanılgı: Şasi modeli sadece devasa şirketler için gereklidir (Gerçek: 5 servise sahipken şasi kurmak ilerideki devasa gözlemlenebilirlik ve güvenlik dönüşümlerini önler).
- ✗Yanılgı: Service Mesh (Istio) şasi ihtiyacını ortadan kaldırır (Gerçek: Service mesh ağ yönlendirmesini yapar; ancak loglama ve trace context yayılımı uygulama içi şasi kodu gerektirir).
Karar Kılavuzu & Önceliklendirme
Tüm geliştirici ekiplerinde dağıtık izleme, yapılandırılmış loglama ve sağlam sağlık kontrollerini standartlaştırmak için şirket çapında bir Mikroservis Şasi kütüphanesi kurun.
Doğrulanmış Kaynaklar & Referanslar
- [BOOK]Microservices Patterns: With Examples in Java (Microservice Chassis Pattern)— Chris Richardson (Manning Publications)
