⚡ÖZET VE TEKNİK CEVAP
Mikroservis geçişlerindeki en zorlu engel uygulama kodunu bölmek değil, Paylaşılan İlişkisel Veritabanını Parçalamaktır. Monolitte geliştiriciler veritabanı motorunun sağladığı süper güçlere güvenir: FOREIGN KEY (kullanici_id) REFERENCES kullanicilar(id), tablolar arası SQL JOIN sorguları ve tek işlemde ACID garantisi. Sistem bağımsız servislere (KullaniciServisi ve SiparisServisi) bölündüğünde bu yetenekler bir gecede yok olur:
Yabancı Anahtarlar (FK) Yok Olur: siparisler.kullanici_id artık veritabanı denetimi olmayan düz bir sayıya dönüşür; kullanıcı silinirse arkada sahipsiz (orphaned) siparişler kalır.
Veritabanları Arası SQL JOIN Yapılamaz: Kullanıcı, sipariş ve ödeme tablolarını birleştiren tek bir SQL sorgusu yazılamaz.
Dağıtık ACID İşlemleri İmkansızlaşır: Stok düşme ve karttan para çekme aynı SQL işlemine sokulamaz. Canlı projeler bunu 4 Aşamalı Veri Ayrıştırma Protokolü ile yönetir:
SQL JOIN'leri kod içinde API/Hafıza birleştirmeleriyle değiştirmek,
Fiziksel FK kısıtlamalarını kaldırıp bütünlüğü koda taşımak,
Şemaları ayrı fiziksel veritabanlarına taşımak, ve
Veri tutarlılığını Olay Güdümlü Saga ve CDC ile sağlamak.
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 pazaryeri monolitik PostgreSQL veritabanını KullaniciDB ve SiparisDB olarak ikiye böldü. Başlangıçta sipariş verme işlemi kullanıcı bakiyesini tek bir SQL işlemiyle denetliyor ve FK ile kullanıcının varlığını garanti ediyordu. Ayrım sonrası sahte bir kullanıcı silindiğinde Sipariş veritabanında 20.000 sahipsiz sipariş kaldı. Ekip Olay Güdümlü Saga kurdu: Bir kullanıcı silindiğinde Kafka'ya KullaniciKapatildi olayı fırlatıldı. Sipariş Servisi bu olayı dinleyerek o kullanıcıya ait tüm bekleyen siparişleri otomatik iptal etti; yabancı anahtar olmadan iki izole veritabanı arasında tam veri bütünlüğü sağlandı.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaBir veritabanı mikroservislere bölündüğünde SQL Yabancı Anahtar (Foreign Key) kısıtlamalarına ne olur?
Mikroservisler eksik olan çapraz SQL JOIN sorgularını nasıl çözer?
Monoliti Parçalamak: Mikroservisler Arasında İlişkisel Yabancı Anahtarları (Foreign Keys) Ayırma Stratejileri — Sıkça Sorulan Sorular
Verileri fiziksel olarak ayrı sunuculara taşımadan önce neden mantıksal şemaları ayırmalısınız?
Tek veritabanı üzerinde çalışırken ve kolay geri dönüş imkanı varken, kod tabanında hiçbir gizli çapraz SQL JOIN sorgusunun kalmadığını kesin olarak kanıtlamak için.
Olayla Taşınan Durum Aktarımı (Event-Carried State Transfer - ECST) nedir?
Olay mesajlarının sadece varlık ID'sini değil, güncellenmiş tüm veriyi taşıdığı; böylece alt servislerin üst API'yi çağırmadan kendi yerel kopyalarını güncelleyebildiği mimari modeldir.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸
Veritabanını bölmek yabancı anahtarları, SQL JOIN sorgularını ve ACID işlemlerini ortadan kaldırır.
- ▸
4 aşamalı geçişi izleyin: JOIN'leri kaldırın, FK'ları silin, şemaları ayırın, fiziksel olarak bölün.
- ▸
Servisler arasında yerel okuma kopyaları tutmak için Olayla Taşınan Durum Aktarımı (ECST) kullanın.
- ▸
Veri bütünlüğünü ve silme temizliklerini asenkron Saga iş akışları ile sağlayın.
Yaygın Yanılgılar
- ✗
Yanılgı: Mikroservisler arasında İki Aşamalı Onay (2PC) kullanılmaya devam edilebilir (Gerçek: 2PC yüksek gecikme, kilitlenme ve sistem çapında tek hata noktası yaratır).
- ✗
Yanılgı: Yeni bir projeye başlarken ilk günden veritabanları ayrılmalıdır (Gerçek: Erken veritabanı ayrımı iş sınırları oturmadan önce devasa bir karmaşa yaratır).
Karar Kılavuzu & Önceliklendirme
Mikroservis geçişlerinde veri kaybı yaşamamak için monolitik veritabanlarını Genişlet-Daralt modeli ve olay güdümlü saga'lar ile kademeli olarak ayrıştırın.
Doğrulanmış Kaynaklar & Referanslar
- [BOOK]Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith (Splitting the Database)— Sam Newman (O'Reilly Media)
