Modüler Monolit mi Mikroservis mi: 2026’da Hangisi Doğru Seçim?

Doğru cevap çoğu ekip için modüler monolit ile başlamaktır: tek bir dağıtım birimi içinde net modül sınırları kurarsınız, operasyonel karmaşıklığı taşımadan iyi mimari disiplin kazanırsınız. Mikroservise yalnızca somut bir ölçeklenme, takım bağımsızlığı veya teknoloji çeşitliliği baskısı doğduğunda geçersiniz. 2026 için ThoughtWorks Technology Radar, “mikroservis varsayılan değil, gerekçelendirilmesi gereken bir yatırımdır” çerçevesini koruyor. Amazon Prime Video ekibinin 2023’te mikroservislerden monolite dönüp izleme maliyetini yaklaşık %90 düşürdüğü vaka, bu dengeyi kamuoyuna taşıyan dönüm noktasıydı.

Karar, “modern olan” ile “popüler olan” arasında değil; ekibinizin büyüklüğü, dağıtım sıklığı, ölçek profili ve operasyonel olgunluğu arasında verilir. Bu rehber, iki mimariyi sayısal olarak karşılaştırır, geçiş eşiklerini netleştirir ve yanlış seçimin maliyetini gösterir.

Modüler monolit ve mikroservis mimarilerinin yan yana kavramsal karşılaştırma diyagramı
Modüler monolit ve mikroservis mimarilerinin yan yana kavramsal karşılaştırma diyagramı

Modüler Monolit Nedir, Klasik Monolitten Farkı Nerede?

Modüler monolit, tek bir çalıştırılabilir uygulama olarak dağıtılan ancak içeride katı modül sınırlarıyla bölünmüş bir mimaridir. Büyük topak (big ball of mud) monolitten farkı, modüller arası iletişimin yalnızca açık arayüzler üzerinden gerçekleşmesi ve her modülün kendi veri sahipliğine saygı göstermesidir. Tek süreç içinde çalışır, bu yüzden ağ gecikmesi, dağıtık işlem (distributed transaction) ve servis keşfi gibi sorunlar oluşmaz.

  • Modül sınırları: Sipariş, ödeme, envanter gibi alanlar ayrı paketlerde; çağrı yalnızca arayüz katmanından geçer.
  • Veri izolasyonu: Aynı veritabanı içinde şema ya da tablo öneki ile mantıksal ayrım sağlanır; doğrudan yabancı modül tablosuna SQL yazılmaz.
  • Tek dağıtım: Tüm sistem tek artefakt olarak çıkar; CI/CD basit kalır, sürüm uyumsuzluğu riski sıfıra yakındır.
  • Geleceğe hazırlık: Net sınırlar, ileride bir modülü servise ayırmayı mekanik bir işe indirger.

Shopify’ın Ruby tabanlı modüler monoliti (Componentization projesi) ve Spring Modulith çerçevesi, bu yaklaşımın üretim ölçeğinde çalıştığını kanıtlar. Spring Modulith, modül sınırlarını derleme zamanında test eden ArchUnit benzeri doğrulamalar sunar.

Mikroservis Mimarisi: Vaatler ve Gerçek Maliyetler

Mikroservis, her biri kendi süreci, veritabanı ve dağıtım hattı olan küçük, bağımsız servislerden oluşur. Bağımsız ölçeklenme, takımların paralel çalışması ve teknoloji çeşitliliği gibi avantajlar sunar; karşılığında ağ çağrısı, dağıtık gözlemlenebilirlik, eventual consistency ve servisler arası sözleşme yönetimi gibi maliyetler getirir. Bu maliyetler tek bir kalemde toplanmaz; servis keşfi, devre kesici, dağıtık izleme, sözleşme testi ve service mesh gibi pek çok ek bileşeni zorunlu kılar. Her yeni servis, sistem genelinde olası başarısızlık noktalarını artırır ve “tek bir özelliğin uçtan uca testi” giderek pahalı bir koordinasyon işine dönüşür.

CNCF 2024 yıllık anketine göre üretimde Kubernetes kullanımı %66 seviyesine ulaştı, ancak aynı ekosistemde ekiplerin önemli bölümü operasyonel karmaşıklığı en büyük zorluk olarak işaretliyor. Bir izleme zincirinde tek bir kullanıcı isteği 10-20 servise yayıldığında, gecikme bütçesi ve hata ayıklama yüzeyi katlanarak büyür.

Boyut Modüler Monolit Mikroservis Etkilenen Metrik
Dağıtım birimi 1 artefakt 10-100+ servis CI/CD karmaşıklığı
İletişim Süreç içi çağrı (~ns) Ağ çağrısı (~1-50 ms) P99 gecikme
Veri tutarlılığı ACID işlem Eventual / saga Hata oranı
Takım bağımsızlığı Orta Yüksek Dağıtım sıklığı
Operasyonel yük Düşük Yüksek (mesh, izleme) Bulut maliyeti
Hata izolasyonu Süreç düzeyi Servis düzeyi Erişilebilirlik
Mikroservis çağrı zincirinde tek isteğin onlarca servise yayıldığı dağıtık izleme görselleştirmesi
Mikroservis çağrı zincirinde tek isteğin onlarca servise yayıldığı dağıtık izleme görselleştirmesi

Karar Matrisi: Hangi Sinyal Hangi Mimariyi İşaret Eder?

Seçimi duygusal değil, sinyal tabanlı yapmak gerekir. Aşağıdaki eşikler, sahadaki çoğu ekip için pratik bir pusula sağlar. Tek bir sinyal yeterli değildir; üç veya daha fazla mikroservis sinyali bir arada görüldüğünde geçiş gerekçelenir. Yaygın bir yanılgı, “büyük şirketler mikroservis kullanıyor, biz de kullanmalıyız” cargo-cult yaklaşımıdır. Oysa Netflix veya Uber ölçeğindeki organizasyon yapısı, on binlerce isteğin saniyede işlendiği yük ve yüzlerce takımın paralel çalışma ihtiyacı, çoğu ekibin gerçekliğiyle örtüşmez. Mimari, başkasının değil kendi sinyallerinize göre seçilir.

Sinyal Modüler Monolit Eşiği Mikroservis Eşiği Ölçüm Kaynağı
Ekip büyüklüğü 1-25 geliştirici 40+ geliştirici, 5+ takım Org şeması
Dağıtım sıklığı Günde 1-5 Günde 50+ bağımsız DORA metriği
Ölçek farkı Modüller dengeli Tek modül 10x trafik APM verisi
Teknoloji ihtiyacı Tek stack yeterli Polyglot zorunluluk Mimari karar
Hata yayılımı Kabul edilebilir İzolasyon kritik SLO ihlalleri
Operasyon olgunluğu Temel CI/CD Platform takımı var Yetkinlik denetimi
  1. Conway Yasası kontrolü: Mimari, organizasyon iletişim yapınızı yansıtır. 4 takımınız varsa 40 servise bölmek yapay sınırlar yaratır.
  2. Ölçek asimetrisi: Yalnızca bir modül diğerlerinden 10 kat fazla kaynak yiyorsa, o modülü ayrı servise çıkarmak rasyoneldir.
  3. Dağıtım çakışması: Takımlar birbirinin sürümünü bekliyorsa bağımsız dağıtım ihtiyacı doğmuştur.

Geçiş Stratejisi: Strangler Fig ve Aşamalı Ayrıştırma

Modüler monolitten mikroservise geçiş tek seferde değil, Strangler Fig deseniyle kademeli yapılır. Önce en yüksek değer veya en yüksek ölçek baskısı olan modül belirlenir, net bir API sözleşmesiyle dışarı taşınır, trafik kademeli yönlendirilir ve eski kod yolu söndürülür. Modüler monolitte sınırlar zaten net olduğu için bu adım mekanik kalır; büyük topak monolitte aynı işlem aylar sürer.

İç linkler bu noktada referans verir: Strangler Fig deseniyle üretimde geçiş ve monolitik sistemi bölme stratejisi bu süreci derinleştirir. Veri katmanı taşınırken sağlam API sözleşmeleri kurmak şarttır.

  • Adım 1: Aday modülün dış bağımlılıklarını arayüze indir, doğrudan tablo erişimini kes.
  • Adım 2: Modülü ayrı süreç olarak çalıştır, çağrıları HTTP/gRPC’ye çevir, gecikme bütçesini ölç.
  • Adım 3: Veriyi kendi deposuna taşı; geçiş sırasında çift yazma (dual write) ya da CDC kullan.
  • Adım 4: Trafiği yüzde olarak kaydır, hata oranını izle, eski yolu kaldır.
Strangler Fig deseniyle monolitten servise kademeli trafik kaydırma akış şeması
Strangler Fig deseniyle monolitten servise kademeli trafik kaydırma akış şeması

Maliyet ve Operasyonel Yük Karşılaştırması

Mikroservislerin görünmeyen maliyeti operasyonda gizlidir. Amazon Prime Video ekibinin monolite dönüşte izleme maliyetini yaklaşık %90 azaltması, ağ çağrısı ve serialization yükünün küçük ölçekte ne kadar pahalı olduğunu gösterir. Aşağıdaki tablo, orta ölçekli bir sistemde tahmini yük dağılımını özetler.

Maliyet kalemi Modüler Monolit Mikroservis Açıklama
Altyapı (compute) Baz 1,5-3x Servis başına idle kaynak
Gözlemlenebilirlik Düşük Yüksek Dağıtık izleme, log hacmi
Ağ trafiği Yok Yüksek İç servis çağrıları
Geliştirme hızı (başlangıç) Hızlı Yavaş Boilerplate, sözleşme
Geliştirme hızı (40+ kişi) Yavaşlar Hızlı Bağımsız dağıtım kazancı
İşe alım maliyeti Düşük Platform mühendisi gerekir Uzmanlık açığı

IDC ve Gartner analizleri, bulut harcamasının önemli bir kısmının yanlış mimari kararından kaynaklı israfa gittiğini belirtir; mikroservislerde her servisin minimum kaynak rezervasyonu bu israfı büyütür. Doğru kuralı koymak için DORA metriklerini ölçmek erken uyarı verir.

Veri Sahipliği ve Tutarlılık: Sessiz Maliyet

Mimari kararın en az konuşulan ama en pahalı boyutu veri sahipliğidir. Modüler monolitte tek bir veritabanı üzerinde ACID işlem garantisi vardır; bir sipariş ile stok düşümü aynı transaction içinde atomik gerçekleşir. Mikroserviste ise her servisin kendi veritabanı olduğu için bu garanti kaybolur ve eventual consistency (sonunda tutarlılık) ile saga deseni devreye girer. Bu, yalnızca teknik bir detay değil; iade, ödeme ve envanter gibi para akan alanlarda doğrudan iş riski yaratır.

Saga deseni, dağıtık bir işlemi bir dizi yerel işleme böler ve her adım başarısız olursa telafi edici (compensating) işlemlerle geri alır. Bu güçlü ama karmaşık bir modeldir: kısmi başarısızlık senaryoları, idempotency garantileri ve sıralama sorunları test yüzeyini büyütür. Martin Fowler’ın Microservices makalesi ve microservices.io saga pattern referansı bu modelin sınırlarını ayrıntılı açar. Aksine, modüler monolitte bu karmaşıklığın tamamından kaçınılır.

Veri senaryosu Modüler Monolit Mikroservis Risk düzeyi
Çapraz modül işlem ACID, atomik Saga, telafi edici Yüksek
Raporlama sorgusu Tek JOIN API composition / CQRS Orta
Referans bütünlüğü FK kısıtı Uygulama düzeyi Yüksek
Veri taşıma (migration) Tek şema Servis başına ayrı Orta
Tutarlılık modeli Güçlü (strong) Eventual İş kuralına bağlı
Hata ayıklama Tek stack trace Dağıtık iz korelasyonu Yüksek

Sonuç açık: güçlü tutarlılık gerektiren alanları aynı dağıtım birimi içinde tutmak, hem doğruluğu hem geliştirme hızını korur. Shopify Engineering’in modüler monolit yazısı, üretim ölçeğinde bu yaklaşımın nasıl çalıştığını anlatır.

Hibrit Yaklaşım: İki Dünyanın Dengesi

2026’da olgun ekiplerin çoğu saf bir tarafı seçmez. Çekirdeği modüler monolit olarak tutar, yalnızca ölçek veya bağımsızlık baskısı net olan birkaç alanı servise çıkarır. Bu “monolit-öncelikli, gerektiğinde servis” yaklaşımı, Martin Fowler’ın MonolithFirst tavsiyesiyle örtüşür ve hem hızlı başlangıç hem de geleceğe açıklık sağlar. Modül sınırlarını derleme zamanında zorlamak için Spring Modulith dokümantasyonu pratik bir başlangıç sunar.

  • Çekirdek iş mantığı: tek modüler monolit.
  • Yüksek ölçekli, izole edilebilir bileşen (örneğin medya transkodlama): ayrı servis.
  • Asenkron iş yükleri: olay tabanlı kuyruk ile gevşek bağlı çalışır.
  • Üçüncü taraf entegrasyon adaptörleri: ayrı dağıtım birimi.

Tipik Sorunlar ve Çözümleri

Mimari seçim hataları genellikle erken aşamada görünmez, ölçekle birlikte pahalı hale gelir. En sık karşılaşılan tuzaklar ve doğrudan çözümleri şunlardır:

  • Erken mikroservis (premature decomposition): 5 kişilik ekip 30 servise bölünmüş. Çözüm: servisleri modüler monolite geri birleştir, sınırları paket düzeyinde koru.
  • Dağıtık monolit: Servisler ağ üzerinden ama hep birlikte dağıtılıyor. Çözüm: gerçek bağımsızlık sağlanamıyorsa monolite dön; sözleşmeleri gevşet.
  • Paylaşılan veritabanı: Birden çok servis aynı tabloya yazıyor. Çözüm: veri sahipliğini tek servise ver, diğerlerine API/event ile eriştir.
  • Modül sınırı sızıntısı: Monolit içinde modüller birbirinin iç tablosunu çağırıyor. Çözüm: ArchUnit/Spring Modulith ile derleme zamanı doğrulama ekle.
  • Gözlemlenebilirlik boşluğu: Mikroserviste istek izi yok. Çözüm: dağıtık izleme (OpenTelemetry) ve korelasyon kimliği zorunlu kıl.
  • Saga karmaşası: Dağıtık işlem yönetilemiyor. Çözüm: kritik tutarlılık gerektiren alanları aynı servise topla.
Modüler monolit ile mikroservis maliyet eğrilerinin ekip büyüklüğüne göre kesişimi
Modüler monolit ile mikroservis maliyet eğrilerinin ekip büyüklüğüne göre kesişimi

Sonuç ve Öneriler

2026’da varsayılan başlangıç modüler monolittir: düşük operasyonel yük, hızlı geliştirme ve net sınırlarla geleceğe hazırlık sağlar. Mikroservise geçiş, ekip büyüklüğü 40 üzeri, dağıtım çakışması belirginleştiğinde ve bir modül diğerlerinden katbekat fazla ölçeklendiğinde gerekçelenir. Karar duyguyla değil, DORA metrikleri ve APM verisiyle alınır. En sağlıklı yol hibrittir: çekirdeği modüler monolit tut, yalnızca net baskı olan alanları Strangler Fig deseniyle servise çıkar. Yanlış yönde aşırı bölünme, hem maliyeti hem hata ayıklama yüzeyini büyütür; gerektiğinde monolite geri dönmek başarısızlık değil, olgun bir mühendislik kararıdır. Mimari bir kez seçilip rafa kaldırılan bir karar değil, sistemin yaşam döngüsü boyunca yeniden değerlendirilen sürekli bir denge çalışmasıdır. Bugün doğru olan modüler monolit, üç yıl sonra trafik on katına çıktığında belirli bir modül için mikroservise dönüşebilir; önemli olan, sınırları en baştan net tutarak bu evrimi her zaman düşük maliyetli ve geri dönülebilir kılmaktır.

Sıkça Sorulan Sorular

Modüler monolit ile mikroservis arasındaki temel fark nedir?

Modüler monolit tek süreç ve tek dağıtım birimi içinde net modül sınırlarıyla çalışır; süreç içi çağrı kullanır, ağ gecikmesi ve dağıtık işlem sorunu yaşamaz. Mikroservis ise her biri ayrı süreç, ayrı veritabanı ve ayrı dağıtım hattı olan bağımsız servislerden oluşur, bağımsız ölçeklenme sunar ancak operasyonel karmaşıklık getirir.

Yeni bir projeye hangisiyle başlamalıyım?

Çoğu ekip için doğru başlangıç modüler monolittir. Net modül sınırları kurarsanız, ileride bir modülü servise ayırmak mekanik bir iş olur. Mikroservise yalnızca somut bir ölçeklenme, takım bağımsızlığı veya teknoloji çeşitliliği baskısı net olarak doğduğunda geçmek gerekir.

Amazon Prime Video neden mikroservislerden monolite döndü?

Ekip, izleme hattındaki servisler arası veri aktarımı ve serialization yükünün ölçekte pahalı olduğunu gördü; bileşenleri tek bir süreçte birleştirerek altyapı izleme maliyetini yaklaşık %90 azalttı. Bu vaka, mikroservisin her durumda doğru olmadığını ve ölçek profili önemli olmadan ağ yükünün gereksiz maliyet yarattığını gösterir.

Mikroservise geçişin doğru zamanı nasıl anlaşılır?

Tek sinyal yeterli değildir. Ekip 40 kişiyi aştığında, takımlar birbirinin dağıtımını beklediğinde, bir modül diğerlerinden 10 kat fazla ölçeklendiğinde ve operasyon olgunluğunuz platform takımı düzeyine ulaştığında geçiş gerekçelenir. Bu sinyallerden üç veya daha fazlası bir arada görülmelidir.

Hibrit mimari pratikte nasıl uygulanır?

Çekirdek iş mantığını modüler monolit olarak tutarsınız, yalnızca yüksek ölçekli ya da bağımsızlığı kritik birkaç bileşeni ayrı servise çıkarırsınız. Asenkron iş yükleri olay tabanlı kuyrukla gevşek bağlanır. Bu yaklaşım hem hızlı başlangıç hem de seçici ölçeklenme esnekliği sağlar.

Ömer ÖNAL

Yazılım Mimarı | Yapay Zeka LLC. Ölçeklenebilir SaaS, .NET Core altyapıları ve Otonom AI süreçleri inşa ediyorum. Kod değil, sistem tasarlarım.

Yorum (1)

  1. Ömer ÖNAL
    Haziran 7, 2026

    Sahada en sık gördüğüm hata, 6 kişilik ekibin 25 servisle başlaması. Operasyon yükü ürünü gömüyor. Tavsiyem net: modüler monolitle başla, sınırları paket düzeyinde katı tut. Bir modül gerçekten 10 kat fazla ölçeklenince Strangler Fig ile sadece onu ayır. Mikroservis bir varsayılan değil, kazanılması gereken bir ayrıcalıktır.

Yorum Yap

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir