KOD DÜNYAM
kod dünyam

Her Küçük Projenin Kalbinde Doğmayı Bekleyen Büyük Bir Proje Vardır.. (KodDünyam)

14 Aralık 2017 Perşembe

0 MICROSERVICES

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

MicroService yapısı sürekli ve plansız bir şekilde büyüyen monolithic yapıdaki servislerin, beraberinde getirdiği karmaşıklığı ve yönetim zorluklarını çözmeye odaklanmaktadır. SOA’ya alternatif bir model değildir kesinlikle. Geleneksel SOA yaklaşımı yerine yenilikçi SOA yaklaşımı ile beraber, biraz önce de bahsettiğimiz gibi karmaşıklığı ve yönetimi pratikleştirmeye çalışan bir kavramdır diyebiliriz.

Dilerseniz bazı avantajlarına bir bakalım:
  • Servisler farklı dillerde ve farklı framework’lerde geliştirilebilir
  • Birbirlerinden bağımsız olarak her bir servis değişebilir, kolay test ve build yapılabilir
  • Continuous delivery’e olanak sağlar ve hızlı deployment’lar gerçekleştirilebilinir
  • Her bir servisi birbirinden bağımsız olarak scale edebilme olanağı sağlar
  • Her bir servis birbirinden bağımsız olacağı için, code base’i sade ve maintenance’ı kolay olacaktır
  • Versiyonlama kolay bir şekilde yapılabilecektir
Peki her şey kulağa güzel ve hoş geliyor. Hani olur ya her oyunun bir de bölüm sonu canavarı vardır. Peki MicroService yaklaşımının getireceği bölüm sonu canavarı yani dezavantajları nelerdir de derseniz:
  • Birbirlerinden bağımsızlaşan farklı servisler aynı business objelerini kullanacaklarından dolayı kaçınılmaz bir kod tekrarı meydana gelecektir
  • Servisler farklı platform ve ortamlarda çalışabileceklerinden dolayı yönetim ve monitoring maliyeti ortaya çıkacaktır
  • Birden çok database ve transaction’ların yönetimi zor olabilir
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.

🔴Microservices >> Microservices nedir ?     




  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Freelance Programcı (Yazılımcı)

Serhat Şos

Profesyonel bir yaklaşım ve uygun fiyatlarla hizmet vermekteyim. Projelerinizi geliştiriyorum. Web App - Mobil App

TEKLİF VER

Popüler Yayınlar

Blog Archive

Blogger tarafından desteklenmektedir.

TEKNOLOJİ HABERLERİ

Etiketler

Dikkat! Sitemiz Tüm Hızıyla Yenilenmektedir.

Yararlı Bilgilerden Sizde Yararlanın.
Takipte Kalın...

Yorum ve Görüşleriniz Bizim için Değerlidir.