Bakış açısı · Mimari

Neden çoğunlukla modüler bir monolitle başlıyoruz

Çoğu sistem için modüler monolit daha ekonomik bir tercihtir — ta ki somut bir sınır dağıtık servisleri gerçekten zorunlu kılana kadar.

Bu nedir? · Bakış açısı

Gerekçelendirilmiş bir duruş — tez, değerlendirme ve farklı karar vereceğimiz durum dahil. Tarafsız bir genel bakış değil, net bir yaklaşım. Genel bakışa git

Bağlam

Konu nedir?

Mikroservisler çoğu zaman ciddi yazılımın standardı olarak görülür. Pratikte ise pek çok ekip, dağıtık sistemlerin maliyetlerini — ağ sınırları, eventual consistency, operasyonel yük — onların faydasına ihtiyaç duymadan önce öder. Bunu yıllardır gözlemliyoruz ve lehine bir gerekçe olmadıkça bilinçli olarak aksi yönde karar veriyoruz.

Argümanlar

Neden böyle düşünüyoruz?

Karmaşıklık ihtiyacı izlemeli

Modüler monolit, tek bir kod tabanı ve tek bir deployment içinde net modül sınırlarına olanak tanır. Sınırlar açıktır, ancak onları aşmak bir ağ atlamasına mal olmaz.

Değişiklikler yerel kalır

Birden fazla modülü kapsayan bir değişiklik tek bir commit ve tek bir deployment'tır — sürümlenmiş sözleşmelerle birden fazla servis üzerinde koordineli bir rollout değil.

İşletim daha basittir

Tek deployment, tek log akışı, tek transaction. Dağıtık sistemlerin gerektirdiği araç ve disiplinin büyük kısmına burada basitçe gerek yoktur.

Karar açık kalır

Temiz ayrılmış modüller ileride hedefli biçimde ayrıştırılabilir. Modüler monolit mikroservisleri dışlamaz — kararı, sağlam bir zeminde verilebileceği ana kadar erteler.

Ödünleşimler

Bedeli nedir?

  • Modül disiplini olmadan bir monolit büyük bir çamur yumağına (big ball of mud) dönüşebilir. Bu desen kötü sınırlara karşı koruma sağlamaz — yalnızca onları düzeltmeyi ucuzlatır.

  • Tek tek parçaların bağımsız ölçeklendirilmesi mümkün değildir; servis bir bütün olarak ölçeklenir.

  • Tamamen bağımsız teslimat yapması gereken çok büyük ekipler, ortak bir kod tabanının sınırlarına takılır.

Karşı sınama

Ne zaman farklı karar veririz?

  • Bir sistemin parçalarının ölçeklenme veya erişilebilirlik gereksinimleri kökten farklı olduğunda.

  • Birden fazla ekibin bağımsız teslimat yapması gerektiği kanıtlanmışsa ve monolit içindeki koordinasyon dağıtık sınırlardan daha pahalı hâle geliyorsa.

  • Bir alan (domain) sınırı o kadar istikrarlı ve net ise ki onu dağıtmak, maliyetinden ölçülebilir biçimde daha fazla fayda sağlıyorsa.

Sonuç

Tutumumuz.

Modüler monoliti ilke gereği değil, pahalı kararları açık tuttuğu için tercih ediyoruz. Dağıtık sistemler somut problemler için bir araçtır — başlangıç noktası değil.

Farklı mı düşü­nü­yor­su­nuz? Konuşalım.

Bakış açıları sınanmak için vardır. Farklı düşünüyorsanız ya da somut bir sorununuz varsa yönetimimizle görüşün.