Skip to content

Ufak Servisler

Ufak servisler(micro services) son zamanlarda yazılım alanında sıkça yaygınlaşan bir yöntem. Micro‘yu ufak diye çevirmek hoşuma gitti ama tahminen mikro daha çok kullanılır. Zaten önemli olan servisin küçüklüğünü belirtmek olduğundan uygun olduğunu düşünüyorum.

Ufak servis bağımsız ve aralarında iyi tanımlanmış bir konuşma yöntemi olan ufak servislerin belirli bir ihtiyacı karşılamasını öngören mimari şablondur. Aslına bakarsanız varolan sistemlerin bir çoğu altyapılarında servis kullanmaktadır fakat işlerin daha küçük olması ve daha basit ihtiyaçları karşılaması bu mimariyi ortaya çıkarmıştır. Bu durumun çözdüğü en önemli sorun ise tahminen bileşenler arası bağdır(coupling). Servislerin ufak olması varolan fonksiyonların sistemin geri kalanından daha bağımsız değiştirilebilmesini sağlar.

Bence Ufak Servislerin önemli bir kaç özelliği şöyledir.

  • Servisler karşıladıkları ihtiyaç çerçevesinde düzenlenir.
  • Servisler her hangi bir dilde yazılabilir.
  • Şirket içi ortak servisler ortak kullanılabilir.
  • Varolan servisler kolayca değiştirilebilir.

Ufak servisler beraberinde bir takım yeni sıkıntılar getirmektedir. Birkaçını şöyle sayabiliriz.

  • Mimari dağıtık doğası nedeniyle ağ gecikmeleri(network latency), birim arızaları(node failures) ve yük dengeleme(load balancing) gibi yeni problemlere neden olur.
  • Servislerin görevlerini değiştirmek yada varolan servisleri bölmek daha zorlaşır çünkü kökten değişiklikleri servis tüketicileri ile tertip etmek gerekebilir. 30 takımın aynı servisi tükettiğini düşünün.
  • Servisin tüketicilerinden dolayı birden fazla sürümü aynı anda desteklemek gerekebilir.  Dolayısıyla daha fazla kaynak ve iş gücüne mal olabilir. Benim karşılaştığım en büyük sorun.

Çözdüğü sorunlar ile birlikte yeni sorunlar getirsede ufak servisler bana göre daha kullanışlı. Önümüzdeki yıllarda daha da tutulacağını düşünüyorum.

Alıntılar
Microservices: yesterday, today, and tomorrow
Microservices

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *