MICROSERVICES
Mikroservis sadece bir işi yapan, bir fonksiyonaliteyi gerçekleştiren çok küçük kod parçacıkları. Geliştirme süreçleri, bağımlılıkları, boyutları olabildiğince küçük olan atomik servislerdir diyebiliriz.
Bu servisler herhangi bir dil ile geliştirilebilir. java, c#, ruby, phyton vb. diller kullanarak geliştirme yapabilirsiniz.
Microservisler stateless’dir. Herhangi bir nesnenin state’ini tutmaz.
Microservisler WSDL’daki XSD kontraktları yerine Consumer Driven Contract’lar oluşturarak servis sağlayanın bir kod değişiminin hangi servis tüketicilerini etkilediği , ilgili servis tüketicilerin testleri çalıştırılarak gerçekleştiriliyor.
Ekip ve Şirket yapısının değişmesi gerekiyor. Ayrı ayrı çalışan ekip elemanlarının (Arayuz, Spring, Veritabanı ve Sistemci) olacak şekilde ekipler haline getirilmesi gerekir ki, bu da çok maliyetli bir iştir. Bunun yerine son dönemde Full Stack Developer kavramı popülerleşmeye başlamıştır. Uygulama yükleme ve geliştirme araçlarının giderek gelişmesi Bulut/Container Servislerinin giderek artması, Yazılım kısmında frameworklerin artması (Spring, Hibernate, AngularJS). Artık uygulama geliştiricilerinin Full Stack Developer olmasına imkan tanımaktadır.
MicroServislerin faydaları mimarinin en baştan kurulmaya çalışmaması, Ürün geliştikçe mimarinin gelişmesi. Ekibe sonradan katılan bir kişinin bu kadar büyük bir yapıya, mimariyi öğrenmesi yerine, bu kişinin hangi dilde ve hangi DB ortamında işi yapmasını biliyor ise bu ortamda bu ufak iş mantığını geliştirme imkanı vermesi. Aynı zamanda bu atomik yapıların sırasını ve hiyerarşini değiştirme imkanı vermesi, uygulamanın daha esnek, daha reusabe ve daha scalable olmasına imkan vermesi diyebiliriz.
SOA mimarisinde merkezde orchestration mekanizması(ESB) ile tüm business flow’lar merkezdeki yapı tarafından organize ediliyor. Giderek merkezin yükünü arttırmaya başlıyor. Hem network , hemde çalışan sorumluluğu açısından bu servisleri orkestra eden kişilere bağımlılık inanılmaz boyutlara ulaşıyor.
Microservislerin çok ufak şekilde hızlı bir şekilde gerçekleştirebilmeniz için sistem içerisinde aşağıdakine benzer mircroservislerinizin hazır olması gerekiyor.
Bu kadar çok servisin bir sürü sanal makineye kurulumunun manual olarak yapılması imkansız. Bunun için “Infrastructure As a Code” IAC kavramını geliştirmişler. Infrastuctrure’ları kod ile ayağa kaldırıp uygulamaların bu infrastructure’lar üzerine hızlıca çalışmasını sağlıyorlar.
Continues Integration ve Continues Delivery kavramlarının çok iyi oturması gerekiyor. Herhangi T anında belirlenen X sunucularına, Y,Z Feature set değişikliklerini deploy edebilme yeteneğidir.
MicroService Mimarisinin Getirdiği Bazı Faydalar
gibi maddeleri sıralayabiliriz. Fakat bu maddelerin zaten bir çoğu adreslenmiş durumda ve otomasyon araçları ile yönetilebilmektedir. Bunlara ek olarak da zaten ihtiyaçlar doğrultusunda MicroService yaklaşımının getirileri göz önüne alındığında ise bu dezavantajlar görmezden de gelinebilir. Yönetim kısmında ise DevOps kavramı ile kolay bir şekilde ele alınabilmekte. Transaction yönetimi işlemlerinede DTC(Distrubuted Transantion Manager) ile çözüm bulunabilmekte.