Büyük bir servisi daha küçük parçalara ayırmanın en önemli nedenlerinden biri genişletilebilirliktir — hizmet bağlamı büyüdükçe yeni işlevsellik ekleme becerisi.
Pratik Bir Örnek: Ödeme Servisi
Diyelim ki çok sayıda ödeme yöntemi kullanarak ödemeleri ve iade işlemlerini yönetmekten sorumlu bir Ödeme Servisine sahipsiniz:
- Kredi Kartları.
- Hediye Kartları.
- PayPal.
Şimdi iş, ek ödeme yöntemlerini desteklemeye karar veriyor:
- İade edilen ürünlerden elde edilen Mağaza Kredisi.
- Ödül Puankları.
- Apple Pay veya Samsung Pay.
Büyük Bir Servisteki Problem
Tüm bu mantık tek bir büyük servis içinde yaşarsa, her yeni ödeme yöntemi eklediğinizde zorunda kalırsınız:
- Mevcut tüm ödeme yöntemlerini, yalnızca yeni olanı değil, yeniden test etmeye.
- Değişmeyen işlevselliği de içerecek şekilde tüm servisi yeniden dağıtmaya.
- Daha büyük test suite’leriyle ve daha yüksek regresyon riskiyle başa çıkmaya.
Bu, geliştirme süresini artırır, riski yükseltir ve yeni ödeme yöntemlerini hızlı bir şekilde tanıtmayı zorlaştırır.
Sorumluluklara Göre Bölme
Şimdi bu büyük servisi daha odaklı küçük servislere ayırdığınızı hayal edin:
- Kredi Kartı İşleme Servisi.
- Hediye Kartı İşleme Servisi.
- PayPal İşleme Servisi.
Bu yaklaşımla, Ödül Puanları gibi yeni bir ödeme yöntemi eklemek demektir:
- Sadece bir yeni servis geliştirmek.
- Yalnızca o servisi test etmek.
- Bağımsız olarak dağıtmak.
Sonuç
- Daha hızlı geliştirme.
- Daha küçük ve odaklı test kapsamları.
- Dağıtım sırasında daha düşük risk.
Genişletilebilirliğin Geçerli Bir Sebep Olduğu Durumlar
Genişletilebilirliği, yalnızca şu durumlarda servisleri bölmek için bir sebep olarak kullanın:
- Gelecekte yeni işlevlerin sıkça ekleneceğinden eminseniz.
- Veya alan zamanla doğal olarak evriliyorsa.
Örnekler
Bildirim Servisi:
Yeni bildirim kanalları (SMS, E-posta, Mektuplar) eklemek oldukça nadirdir, bu nedenle tek bir servis olarak tutmak genellikle mantıklıdır.Ödeme İşleme:
Yeni ödeme yöntemlerinin tanıtılması oldukça olasıdır, bu nedenle ödeme türüne göre servisleri bölmek pratik ve ölçeklenebilir bir tasarım seçeneğidir.
Son Düşünce
Genişletilebilirlik, servisleri gereksiz yere bölmekle ilgili değildir — büyümenin beklendiği yerlerde büyümeyi öngörmekle ilgilidir.
Servislerinizi, alanın nasıl evrileceğine göre tasarlayın, sadece bugünkü görünüşüne göre değil.
Kaynak: Orijinal Makale


