Tüm Yazılar
1 dk okuma

Mikroservislerde Tek Sorumluluk

Mikroservis

Tek sorumluluk, her mikroservisin tek bir iş alanından sorumlu olması ve yalnızca o alan değiştiğinde değişmesi gerektiği ilkesidir. Nesne yönelimli programlamadaki "bir sınıfın değişmek için tek bir nedeni olmalı" kuralının servis düzeyine taşınmış halidir.

Örneğin bir e-ticaret sisteminde sipariş servisi siparişleri oluşturur ve takip eder, ödeme servisi tahsilatı yapar, bildirim servisi e-posta ve SMS gönderir. Sipariş servisi kendi içinde e-posta göndermeye ya da kart bilgisi işlemeye başlarsa ilke bozulmuş olur: e-posta şablonu değiştiğinde sipariş servisini yeniden dağıtman gerekir, bildirimdeki bir hata da siparişleri etkileyebilir.

Bir servisin bu ilkeye uyup uymadığını şu sorularla sınayabilirsin:

  • Servisin ne yaptığını "ve" demeden tek cümleyle anlatabiliyor musun?

  • Servisi değiştirmek için kaç farklı neden var? Ödeme kuralları da kargo kuralları da aynı servisi değiştiriyorsa sorumluluk fazladır.

  • Tek bir ekip, diğer ekiplere danışmadan bu servisi geliştirip yayınlayabiliyor mu?

Dikkat edilmesi gereken nokta, "tek sorumluluk"un "olabildiğince küçük" demek olmadığı. Her tabloya ya da her fonksiyona ayrı servis açarsan, basit bir işlem için beş servisin birbirini çağırdığı, yönetmesi zor bir yapı ortaya çıkar. Ölçü satır sayısı değil, iş açısından bir bütün oluşturup oluşturmadığıdır.

Sıradaki konu olan gevşek bağlılık bunun tamamlayıcısı: tek sorumluluk servisin içinin tutarlı olmasını, gevşek bağlılık ise servislerin birbirine olabildiğince az bağımlı olmasını sağlar.

Paylaş: URL Kopyala