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

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


Soru

Yeni bir ürün geliştirmeye başlıyorum ve henüz küçük bir ekibiz. Mimariyi en baştan mikroservislerle kurmayı düşünüyorum — ileride ölçeklenmem gerektiğinde sancı yaşamamak için işe baştan "doğru" şekilde başlamak mantıklı geliyor. Ama bu kadar erken bir aşamada mikroservislerin getireceği karmaşıklığa değer mi, yoksa monolitle mi başlamalıyım? Sıfırdan bir projede senin önerin ne olurdu?

Cevap

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 ekipseniz ve domain’i henüz tam oturmadıysa, bu problemlerin hiçbirine sahip değilsiniz — 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üyorsunuz.

Önerdiğim yol:

  1. Modüler monolitle başlayın. Domain’i net sınırlara (bounded context) bölün, ama hepsini tek bir deploy edilebilir uygulamada tutun. Modüller arası iletişimi açık arayüzlerden geçirin, doğrudan tabloya uzanmayın.
  2. Sınırları kodda zorlayın. Modüller arasında dairesel bağımlılığa izin vermeyin. Bu disiplin, ileride bir modülü servise çıkarmanız gerektiğinde işin %80’ini önceden yapmış olmanızı sağlar.
  3. Acıyı ölçtüğünde ayırın. 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 ettirin.

Mikroservis bir hedef değil, belirli bir ölçekte ödediğiniz bir bedeldir. O ölçeğe ulaşmadan ödemeye başlamayın. “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.

İlgili Yazılar

Etiketler: #Mimari#Mikroservis
Paylaş:

Yorumlar

Yorum yapmak için GitHub hesabınızla giriş yapmanız yeterli. Yorumlar GitHub Discussions üzerinde saklanır.

Diğer Sorular

Tüm sorular

Sitede Ara

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

Esc ile kapat Pagefind ile güçlendirildi