İçeriğe geç
Muhammet Şafak
en
Soran: Emre Cevaplandı:

Yeni bir projeye mikroservislerle mi başlamalıyım?


Kısa cevap: Büyük ihtimalle hayır. Sıfırdan başlayan çoğu ürün için doğru başlangıç noktası, iyi modüllere ayrılmış bir monolittir.

Mikroservislerin çözdüğü asıl problem teknik değil, organizasyoneldir: birbirinden bağımsız deploy edilebilen, ayrı ekiplerin sahiplendiği, farklı hızlarda ölçeklenmesi gereken parçalar. Tek kişilik ya da küçük bir ekipsen ve domain’i henüz tam oturmadıysa, bu problemlerin hiçbirine sahip değilsin — ama dağıtık sistemin tüm maliyetini (ağ gecikmesi, kısmi hatalar, dağıtık transaction, gözlemlenebilirlik, deploy karmaşası) baştan ödüyorsun.

Önerdiğim yol:

  1. Modüler monolitle başla. Domain’i net sınırlara (bounded context) böl, ama hepsini tek bir deploy edilebilir uygulamada tut. Modüller arası iletişimi açık arayüzlerden geçir, doğrudan tabloya uzanma.
  2. Sınırları kodda zorla. Modüller arasında dairesel bağımlılığa izin verme. Bu disiplin, ileride bir modülü servise çıkarman gerektiğinde işin %80’ini önceden yapmış olmanı sağlar.
  3. Acıyı ölçtüğünde ayır. Bir modül gerçekten ayrı ölçeklenmek zorunda kaldığında, ayrı bir ekip onu sahiplendiğinde ya da deploy’lar birbirini bloke etmeye başladığında — işte o zaman o sınırı bir servise terfi ettir.

Mikroservis bir hedef değil, belirli bir ölçekte ödediğin bir bedeldir. O ölçeğe ulaşmadan ödemeye başlama. “Monolitten servise çıkmak zor” derler; doğrudur — ama iyi çizilmiş sınırların olduğu bir monolitten çıkmak, baştan yanlış çizilmiş servis sınırlarını düzeltmekten çok daha kolaydır.

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi