Monolith ile mikroservis mimarisi arasındaki fark nedir? Mikroservislere ne zaman geçilmeli?

Cevap

  • Monolith: uygulamanın tüm modülleri tek bir kod tabanı ve tek bir deploy birimi olarak çalışır, genellikle tek veritabanı kullanır.
  • Mikroservis: uygulama, iş alanlarına (bounded context) göre ayrılmış, bağımsız deploy edilen, kendi verisine sahip küçük servislerden oluşur. Servisler ağ üzerinden (REST, gRPC, mesaj kuyruğu) haberleşir.
MonolithMikroservis
Geliştirme başlangıcıHızlı ve basitYavaş, altyapı yükü yüksek
DeployTek parça, hepsi birlikteServis bazında bağımsız
ÖlçeklemeTüm uygulama birlikteYalnızca ihtiyaç duyan servis
Veri tutarlılığıTek DB, ACID transactionDağıtık; saga, eventual consistency
Hata ayıklamaTek süreç, kolayDistributed tracing gerekir
Ekip yapısıKüçük-orta ekiplerÇok sayıda bağımsız ekip
Teknoloji çeşitliliğiTek stackServis başına farklı olabilir

Mikroservislerin gizli maliyetleri

  • Ağ gecikmesi ve kısmi hatalar: timeout, retry, circuit breaker gerekir.
  • Servisler arası transaction yoktur; saga pattern ve telafi (compensation) işlemleri yazılır.
  • Gözlemlenebilirlik: merkezi log, metrik, trace (OpenTelemetry).
  • Servis keşfi, API gateway, CI/CD ve container orkestrasyonu (Kubernetes) gerektirir.
  • Ortak veritabanını paylaşan servisler "dağıtık monolith" oluşturur: iki mimarinin dezavantajlarını birleştirir.

Ne zaman geçilmeli?

Mikroservis bir organizasyonel ölçekleme çözümüdür. Mantıklı olduğu sinyaller:

  • Çok sayıda ekip aynı kod tabanında birbirini bloke ediyor, deploy'lar kuyruğa giriyor.
  • Belirli modüllerin ölçekleme veya güvenilirlik ihtiyacı belirgin şekilde farklı.
  • Domain sınırları netleşmiş.

Çoğu yeni proje için önerilen yol modüler monolith'tir: tek deploy birimi, ama sınırları net modüller ve modüller arası yalnızca tanımlı arayüzler. Gerektiğinde bir modül strangler fig yaklaşımıyla parça parça ayrı servise çıkarılır.

  1. Mesaj kuyruğu (RabbitMQ, Kafka) ne zaman kullanılır?ZorSistem TasarımıBackend
  2. CAP teoremi nedir? Gerçek sistemlerde nasıl yorumlanır?ZorSistem TasarımıBackend
  3. Load balancer nedir? Yük dağıtım algoritmaları nelerdir?OrtaSistem TasarımıBackend
  4. Dikey ve yatay ölçekleme arasındaki fark nedir?KolaySistem TasarımıFull Stack
  5. Hangi cache stratejilerini biliyorsunuz?OrtaSistem TasarımıFull Stack
  6. REST ile GraphQL arasındaki farklar nelerdir?OrtaSistem TasarımıFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle