Karar kaydı · ADR-001

Başlangıç noktası olarak modüler monolit, kanıt varsa mik­ro­ser­vis­ler

Yeni sistemler, açık modül sınırlarına sahip modüler bir monolit olarak başlar. Tekil servisler yalnızca somut bir gereksinim bunu haklı çıkardığında ayrıştırılır.

Bu nedir? · Karar kaydı (ADR)

ADR formatında belgelenmiş bir mimari karar — bağlam, incelenen seçenekler, gerekçe ve sonuçlar. Genel bir rehber değil, somut bir karar. Genel bakışa git

Durum
Kabul edildi
Kimlik
ADR-001
Gözden geçirme
Bir modülün bağımsız ölçeklendirme veya bağımsız deployment gerektirdiği kanıtlandığında yeniden değerlendirilmelidir.

Bağlam

Yeni sistemler, tek bir deployment (monolit) ile dağıtık servisler (mikroservisler) arasında seçim yapmak zorundadır. Bu seçim; işletimi, değiştirilebilirliği ve maliyetleri yıllarca belirler.

Sorun

Dağıtık sistemler gerçek problemleri çözer — bağımsız ölçeklendirme, bağımsız deployment — ancak beraberinde ağ sınırları, eventual consistency ve operasyonel yük getirir. Fayda bu maliyetleri ne zaman haklı çıkarır?

Seçenekler

Neleri değer­len­dir­dik?

  1. A

    Modüler monolit

    Tek deployment, tek kod tabanında net modül sınırları.

  2. B

    Baştan itibaren mikroservisler

    Bağımsız olarak deploy edilebilen ve ölçeklenebilen birden fazla servis.

  3. C

    Dağıtık monolit

    Gerçek bir ayrışma olmadan birden fazla servis — en kötü seçenek.

Karar

Neye karar verdik?

Yeni sistemler, açık modül sınırlarına sahip modüler bir monolit olarak başlar. Tekil servisler yalnızca somut bir gereksinim bunu haklı çıkardığında ayrıştırılır.

Bu kararın gerekçesi

Modüler monolit pahalı kararları açık tutar. Sınırlar açıktır, ancak onları aşmak bir ağ atlamasına mal olmaz; işletim basit kalır. Temiz modüller ileride hedefli biçimde dağıtılabilir — ters yön ise belirgin biçimde daha pahalıdır.

Sonuçlar

  • Servis bir bütün olarak ölçeklenir; tek tek parçalar bağımsız olarak ölçeklendirilemez.
  • Modül disiplini aktif olarak korunmalıdır; aksi hâlde büyük bir çamur yumağı (big ball of mud) tehlikesi doğar.
  • Bir modülün ileride ayrıştırılması, başlı başına bilinçli bir karardır.

Elenen alternatifler

  • Varsayılan olarak mikroservislerFayda netleşmeden dağıtık sistemlerin maliyetlerini öder.
  • Serverless-firstYük profilleri bilinmeden işletim modeline ve sağlayıcıya erkenden bağlar.

Benzer bir kararın eşiğinde misiniz?

Bu kararları içgüdüyle vermiyoruz. Sisteminizdeki kararları doğrudan yönetimimizle konuşabilirsiniz.