Mikroservis ve Modüler Monolit: Mimari Karar Rehberi
Bu rehberde ne öğreneceksiniz?
Bu yazı bir haber özeti değil; adım adım uygulayabileceğiniz bir öğretici makale (tutorial) formatındadır. Her bölümün sonunda pratik çıkarımlar ve üretim ortamında karşılaşacağınız senaryolar yer alır.
- Modüler monolit ile mikroservis farkını netleştirmek
- Bounded context çizmeyi öğrenmek
- Strangler fig ile güvenli geçiş planlamak
- Dağıtık sistem maliyetlerini listelemek
Ön koşullar
Rehberi verimli takip etmek için aşağıdaki bilgilere aşina olmanız önerilir. Eksik hissettiğiniz konularda ilgili bölümde ek kaynak ipuçları bulacaksınız.
- Monolit uygulama deploy deneyimi
- API ve veritabanı temelleri
- Ekip yapısı ve release süreci farkındalığı
Güncellik ve teknoloji yığını
Makale 2026 itibarıyla güncellenmiştir. Örnekler ve API referansları şu yığınla uyumludur: Domain-Driven Design, event-driven messaging, Kubernetes (opsiyonel). Eski sürüm dokümantasyonu ile karıştırmamak için major versiyon farklarını özellikle belirttik.
Framework sürümleri hızla değişir; kalıcı olan prensipler (güvenlik, katman ayrımı, ölçüm) bu rehberin omurgasını oluşturur.
Bölüm 1: Modüler monolit
Tek deploy birimi; kod içinde net modül sınırları (blog, auth, comment). Public API modüller arası sadece export edilen fonksiyonlar.
Next.js projesinde lib/data, lib/services ayrımı modüler monolitin küçük örneğidir. Circular dependency yasak.
Adım adım uygulama
Aşağıdaki sırayı takip edin. Her adımı tamamlamadan bir sonrakine geçmeyin; özellikle güvenlik ve veri katmanı adımları atlanmamalıdır.
- Domain klasör yapısını çizin.
- Cross-module import'ları lint ile kısıtlayın.
- Transaction sınırını tek DB içinde tutun.
Bölüm 2: Ne zaman ayırmalı?
Bağımsız ölçek, bağımsız deploy, farklı teknoloji veya regülasyon alanı — net ihtiyaç yoksa ayırmayın.
Önce modül, sonra servis; önce ölçüm, sonra network boundary.
- Farklı TPS profili (ör. arama vs yazma)
- Farklı availability hedefi
- Ekip sınırı (Conway yasası)
- Compliance izolasyonu
Bölüm 3: Strangler fig geçişi
Yorum moderasyonu ayrı servis olacaksa, önce API gateway arkasında yeni servisi çalıştırın; trafiği kademeli yönlendirin.
Adım adım uygulama
Aşağıdaki sırayı takip edin. Her adımı tamamlamadan bir sonrakine geçmeyin; özellikle güvenlik ve veri katmanı adımları atlanmamalıdır.
- Yeni servisin contract'ını OpenAPI ile dondurun.
- Dual-write dönemini kısa tutun.
- Eski modülü feature flag ile kapatın.
Bölüm 4: Dağıtık gözlem ve SLO
Servis sayısı arttıkça trace correlation şart; her servis aynı trace header'ı propagate etmeli.
Servisler arası timeout (client < server) ve retry yalnızca idempotent işlemlerde. Circuit breaker ile cascade failure kesin.
Sık yapılan hatalar
Aşağıdaki tuzaklar eğitim ortamlarında nadiren, production'da ise pahalıya mal olur. Code review checklist'inize eklemenizi öneririz.
- Henüz product-market fit yokken mikroservis
- Dağıtık transaction'ı sık kullanmak
- Observability olmadan split
Pratik alıştırmalar
Okumak yeterli değildir; öğrenmeyi pekiştirmek için küçük bir side-project veya mevcut kod tabanınızda şu görevleri uygulayın:
- Mevcut projede modül bağımlılık grafiği çıkarın
- Bir modül için "ayrılsaydı maliyet" tablosu yazın
Özet ve sonraki adımlar
Bu rehberdeki prensipleri tek seferde tüm projeye uygulamaya çalışmayın. Önce tek bir route veya modül seçin, ölçün, sonra yaygınlaştırın.
- Event-driven öğretici
- Kubernetes deploy