Mikro Servis Mimarisine Geçiş Öncesi Neler Yapılmalı ?
--
Mikro Servis Mimarisi
Mikro servisler, teknik olarak SOA (Service Oriented Architecture)’dan evrimleşmiştir. Burada bu özellikler onu küçük parçalı bir mimari haline getiren görev düzeyinde servislere ayrılmıştır. Servis odaklı mimari, her bileşenin merkezi bir ara katman yazılımı tarafından kontrol edildiği merkezi olarak yönetilen bir mimariyi takip eder. Mikro servislerde bileşenlerin doğrudan birbirleriyle konuştuğu, farklı programlama dillerinde yazılabileceği ve herhangi bir aracının yardımı olmadan iletişim kurabildiği merkezi olmayan bir yönetim sistemidir.
Avantajlar:
- Son derece sürdürülebilir ve test edilebilir
- Gevşek bağlanmış
- Bağımsız olarak konuşlandırılabilir
- Kolay ve bağımsız deployment yapılabilir
- Farklı teknoloji ile bağımsız geliştirme yapılabilir
Dezavantajlar:
- Hata ayıklama zorlaşacaktır
- Nihai veri tutarlılığını(Eventual Consistency) yönetmek gerekir, dağıtık sistemler için veri tutarlılığını sağlamak zor olacaktır
Mikro Servis Mimarisine Hazılanma
Öncelikle iyi bir modüler yapının kurgulanması gerekmetedir. Servislerin sınırlarının iyi belirlenmelidir.
Proje içerisindeki bir controller atındaki metodların birden fazla işi bir arada yapmalarını ayrıştırılarak ayrı ayrı servisler haline getirilmelidir. Böylece hem mikro servis mimarisi için bir adım olacaktır.
Mikro servis dağıtık mimari olduğu için, süreç içi servis çağrılarında performansa dikkat edilmelidir. Çünkü her biri yarım düzine uzak hizmeti çağıran yarım düzine uzak hizmeti ararsa, bu yanıt süreleri bazı korkunç gecikme özelliklerine neden olur. Bu sorunu azaltmak için çok şey yapabilirsiniz.
İlk olarak aramalarınızın ayrıntı düzeyini artırarak daha az arama yapabilirsiniz. Bu, programlama modelinizi karmaşıklaştırır, şimdi servisler arası etkileşimlerinizi nasıl gruplandıracağınızı düşünmeniz gerekir. Ayrıca, her bir işbirliği hizmetini en az bir kez aramanız gerekeceğinden, sizi yalnızca bir yere kadar götürecektir.
İkinci azaltma yöntemi asenkron programlamayı kullanmaktır. Paralel olarak altı eşzamansız çağrı yaparsanız, gecikmelerinin toplamı yerine artık yalnızca en yavaş çağrı kadar yavaş olursunuz. Bu büyük bir performans kazancı olabilir.
CI/CD süreçlerine hakim, repo yönetimi ve deployment senaryolarında iyi bir DevOps sürecine sahip olunması gerekmektedir.
Servisler giderek arttığı için karmaşıklığı azaltacak dökümantasyona önem verilmeli.
Monolitik Mimari Geçmeden önce neler yapılmalı
Monolitik mimariler, tüm yazılım bileşenlerini bir araya getiren ve birlikte barındırılan ve teslim edilen tek bir uygulama katmanına sahip olduğu için en basit mimari biçimidir. Bu tip birçok küçük ve orta ölçekli şirket tarafından yaygın olarak kullanılmaktadır. Bu sistemdeki ana zorluk, diğer makinelerin tüm özellikleri de dahil olmak üzere tüm sistemi kopyalamamız gerektiğinden, maliyeti artıran ölçeklendirme sırasındadır. Ayrıca, bir özelliğin arızalanması tüm sistemi etkileyecek ve onu güvenilmez hale getirecektir.
Başlangıçta tüm projeyi mikro servise geçirmek yerine birbirine bağımsız kolaylıkla geçirilebilecek servisleri mikroservise çevirerek geçişin sağlanmalıdır
Geçiş sırasında oluşabilecek hatalar ve sistem akışındaki eksiklikleri testip edebilecek monitoring yapısının kurulmalıdır
Dağıtık mimaride geliştirme yapılacağı için hızlı deployment gerekmektedir. İlk aşamada el ile deployment yapılsada DevOps araçları ile süreç hızlandırılmalıdır.
https://martinfowler.com/bliki/MicroservicePrerequisites.html
https://martinfowler.com/articles/microservices.html