Monolithic ve Microservice Mimariler Nelerdir?
Her çağın bir başlangıcı olduğu gibi bir sonu vardır. Nasıl ki öncekinin sönen yıldızı üzerine yeni doğanın altın çağı alevleniyor, aynı akıbet için mevcudiyetteki de zamanının gelmesini bekliyor. Dünyada yer edinen tüm felsefeler, tüm sanatlar, tüm bilimler nasıl ki düne baş kaldırmış, yarına ise boyun bükmeye hazır vaziyetteyse, çağın hakimi olan her olgu ve o olgunun baş aktörleri de yerlerini bir sonraki tarihe yani gelecek tarihe bırakıyor ya da bırakmaya hazırlanıyor. Dünya ilerliyor; iyisiyle kötüsüyle, sevabıyla günahıyla, doğrusuyla yanlışıyla her daim ilerliyor. Bizlere düşen bu ilerlemeye eşlik etmekten öte, değişimlerden haberdar olmak amma velakin gelişimleri yakalamak…
Gençay YILDIZ
Merhaba,
Bu içeriğimizde günümüze kadar proje geliştirme yaklaşımı olarak tercih edilen monolithic mimari ile çağdaş ve yapısal olarak parça bütün ilişkisini ön plana alan microservice mimari yaklaşımları üzerine avantaj ve dezavantajları, ne için kullanıldıkları vs. açılarından bir yandan mukayese ederken bir yandan da istişare ediyor olacağız.

İlk olarak bizlere bu güne kadar eşlik eden monolithic mimari yaklaşımı üzerine durarak başlayalım.
Monolithic Mimarisi
Monolithic yaklaşım, bir sistemin/nesnenin/olgunun tek bir parça olacak şekilde tasarlanmasıdır. Monolithic mimari ise bu tasarımın stratejik yapılanmasıdır. Monolithic yaklaşım, üretilecek sistemin/nesnenin/olgunun bileşenlerini(component) birbirlerine bağlı(interdependent) olarak ve kendi kendine yetecek(self-contained) şekilde tasarlanmasını sağlayan ve böylece tek bir bütünsel varlık olarak nihai sonuca varılmasını sağlayan mimaridir.
Monolithic yaklaşımı benimsemiş uygulamaların tüm fonksiyonaliteleri tek bir çatı altında geliştirilirler.
Uygulama dünyasında günümüze kadar eşlik eden monolithic yaklaşım getirdiği büyük avantajların yanında aşağıda ele aldığımız gibi kritik dezavantajlar barındırmaktadır.
| Avantajları | Dezavantajları |
|---|---|
|
|
Görüldüğü üzere monolithic mimarinin götürüsü getirisinden fazla olmakla birlikte artık yeni nesil bir yaklaşıma yerini bırakma noktasına gelmiş bulunmaktadır. O halde gelin çağın yaklaşımı olan microservice mimarisi üzerine konuşalım.
Microservice Mimarisi

Microservice mimarilerine odaklanabilmek için öncelikle monolithic yaklaşımın temel bir prensibi çiğnediğinin farkında olunması gerekmektedir. Bu prensip sürdürülebilirliktir ilkesidir. Sürdürülebilirlik; bir yazılımın, üzerinde yapılan tüm değişiklik yahut onarma faaliyetleri esnasında bile verdiği hizmetin bütününde bir aksaklık olmaması ve sistemin kesintiye uğramaksızın her an çalışabilir vaziyette olması demektir.
Microservice mimari, birbirinden bağımsız olarak çalışan ve birbirleriyle haberleşerek bir bütün olarak hareket eden servis(ler) yapılanmasıdır. Her servisin bir diğerinden bağımsız olarak iş mantığını yürütmesi ve bir başka servis ile ilgilenmemesi, bir onarım yahut restorasyon durumunda uygulamanın bütününü etkilemeyeceğinden dolayı sürdürülebilirlik ilkesi desteklenmiş olacak ve böylece bodoslama olarak tabir edeceğimiz monolithic yaklaşımındaki karmaşıklığı ortadan kaldırmış ve yönetimi daha da kolaylaştırmış olacaktır.
Burada esas olan, her bir servisin bir diğerinden bağımsız olmasının geliştirme ve düzenleme operasyonlarında getirisidir. Örneğin; Bir e-ticaret uygulamasında ürün işlemlerinin, sepetin ve ödeme sisteminin ayrı servisler tarafından gerçekleştirildiğini düşünürsek, süreçte ödeme sistemindeki oluşan herhangi bir aksaklık yahut restorasyon sistemin bütününü değil sadece o servisi etkileyeceğinden dolayı haliyle sadece o servisle ilgilenilmesi yeterli olacaktır. Bu durumda sistem bütünsel olarak işlevselliğe devam edecek lakin kesintiye sadece ilgili servis uğramış olacaktır. Haliyle bizler sistemin kendisinden ziyade local olarak sadece tek bir servisi ile ilgilenerek gerekli onarımı sağlayabilir, hızlıca testlere tabii tutabilir ve monolithic yapılanmalarda olduğu gibi uygulamayı topyekün derleme ve yayınlama ihtiyacını duymaksızın kısa zamanda yeni sürümle hizmete devam edebiliriz.
Microservice mimarisi, uygulamayı bir bütün olarak geliştirmek yerine, küçük parçalar halinde geliştirilmesini amaçlayan bir felsefedir.
Microservice mimari yaklaşımı uygulamayı dil ve platformdan bağımsız bir şekilde farklı veri depolama birimleri ve teknolojileri kullanılabilecek şekilde geliştirmemize imkan sağlayacak esneklik sunmaktadır. Ayrıca her bir hizmetin küçük ve bağımsız servisler olarak tasarlanması aynı zamanda denetim ve uyum süreçlerini basit prensiplere dayandıran Agile disiplinininde uygulanmasını kolaylaştırmakta ve bu disiplin çerçevesinde geliştirilen uygulama küçük ve farklı alanlarda sorumluluklarını paylaşan ekiplerce inşa edilebilmektedir.
Monolithic uygulamalar yapısı itibariyle dikey genişletilmeye uygundur. Dolayısıyla bu durum donanımsal sınırlılıklar getirmektedir. Lakin microservice yapılanması ihtiyaca dönük dikey ve yatay genişletilebilmekte ve böylece daha net ölçeklendirilebilmektedir. Hatta her bir service ayrı ayrı ölçeklendirilebileceği için yaygın olarak bulut(cloud) ve sanallaştırma teknolojileri kullanılmaktadır.
Görüldüğü üzere microservice yapılanması birçok olumlu yönden hayatımıza katkıda bulunmaktadır. Tabi ki de bu katkıların yanında dezavantajları da mevcuttur. Gelin bu avantaj ve dezavantaj açısından microservice yapılanmasını bir tabloda mukayese ederek irdeleyelim.
| Avantajları | Dezavantajları |
|---|---|
|
|
Birbirine bağlı olarak tasarlanan monolithic mimarinin sistemin gelişmesi ve büyümesine karşı gösterdiği dirence karşı yeni nesil yaklaşım olan microservice ile gevşek bağlılık(loosely coupled) esas alınmakta ve uygulamanın gelişime karşı olan direncinin böylece kırılmasına odaklanılmaktadır. Lakin! bu durum her yeni başlayan projenin microservice temelli atılması anlamına da gelmesi pekte doğru olmayacaktır. Genel olarak bir proje temellendirilmesinin monolithic olarak tasarlanması ve projenin ebatı doğrultusunda ihtiyaca binaen microservice yapılanmasına geçiş tavsiye edilmektedir.
İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…


Çok açıklayıcı bir anlatım, teşekkür ederiz.
Çok teşekkürler
Teşekkür ederiz hocam çok açıklayıcı, diğer makaleleride gözden geçiyorum.