Monolithic & Microservices Architecture Nedir? Avantaj ve Dezavantajları Nedir?

Merhaba,

Bu makelemde Monolithic & Microservices mimarilerine kısaca değinmek istiyorum.

Monolithic Architecture Nedir?

Tekbir solution (.sln) yapı içerisinde katmanlardan oluşan ve genellik ilede tek bir veri tabanından oluşan projelerdir. Günümüzde katmanlı mimari ile yapılan projeler buna örnektir.

Avantajları;

  • Yönetilebilirlik ve monitoring kolaydır.
  • Transaction yönetimi oldukça rahat ve irade altındadır.
  • Daha kolay hata ayıklama ve test etme.
  • Dağıtımı basit.
  • Geliştirmesi basit.

Dezavantajları;

  • Anlamak. Monolitik bir uygulama büyüdüğünde, anlaşılması çok karmaşık hale gelir. Ayrıca, tek bir uygulamada karmaşık bir kod sistemini yönetmek zordur.
  • Değişiklik yapma. Son derece sıkı bağlantı ile bu kadar büyük ve karmaşık bir uygulamada değişiklikleri uygulamak daha zordur. Herhangi bir kod değişikliği tüm sistemi etkiler, bu nedenle tamamen koordine edilmesi gerekir. Bu, genel geliştirme sürecini çok daha uzun hale getirir.
  • Ölçeklenebilirlik. Bileşenleri bağımsız olarak ölçekleyemezsiniz, yalnızca tüm uygulamayı ölçekleyebilirsiniz.
  • Yeni teknoloji engelleri. Monolitik bir uygulamada yeni bir teknoloji uygulamak son derece problemlidir çünkü bu durumda tüm uygulamanın yeniden yazılması gerekir.

Microservices Architecture Nedir?

Microservice mimarisi, uygulamayı bir bütün olarak geliştirmek yerine, küçük parçalar halinde geliştirilmesini amaçlayan bir felsefedir.

Avantajları;

  • Bağımsız bileşenler. İlk olarak, tüm hizmetler bağımsız olarak dağıtılabilir ve güncellenebilir, bu da daha fazla esneklik sağlar. İkincisi, bir mikro hizmetteki bir hatanın yalnızca belirli bir hizmet üzerinde etkisi vardır ve tüm uygulamayı etkilemez. Ayrıca, bir mikro hizmet uygulamasına yeni özellikler eklemek, monolitik bir uygulamaya göre çok daha kolaydır.
  • Daha kolay anlama. Daha küçük ve daha basit bileşenlere ayrılan bir mikro hizmet uygulamasının anlaşılması ve yönetilmesi daha kolaydır. Sadece sahip olduğunuz bir iş hedefiyle ilgili belirli bir hizmete konsantre olursunuz.
  • Daha iyi ölçeklenebilirlik. Mikro hizmet yaklaşımının bir başka avantajı, her bir öğenin bağımsız olarak ölçeklenebilmesidir. Bu nedenle, ihtiyaç olmasa bile tüm uygulamanın ölçeklendirilmesi gerektiğinde tüm süreç monolitlere göre daha maliyet ve zaman açısından daha verimlidir. Ek olarak, her monolitin ölçeklenebilirlik açısından sınırları vardır, bu nedenle ne kadar çok kullanıcı edinirseniz, monolitinizle o kadar fazla sorun yaşarsınız. Bu nedenle, birçok şirket monolitik mimarilerini yeniden inşa ediyor. 
  • Teknoloji seçiminde esneklik. Mühendislik ekipleri, başlangıçtan itibaren seçilen teknoloji ile sınırlı değildir. Her mikro hizmet için çeşitli teknolojiler ve çerçeveler uygulamakta özgürdürler.Daha yüksek çeviklik seviyesi. Bir mikro hizmet uygulamasındaki herhangi bir hata, tüm çözümü değil yalnızca belirli bir hizmeti etkiler. Böylece tüm değişiklikler ve deneyler daha düşük risk ve daha az hata ile uygulanmaktadır.

Dezavantajları;

  • Ekstra karmaşıklık. Bir mikro hizmet mimarisi dağıtılmış bir sistem olduğundan, tüm modüller ve veritabanları arasındaki bağlantıları seçmeniz ve kurmanız gerekir. Ayrıca, böyle bir uygulama bağımsız hizmetler içerdiği sürece, hepsinin bağımsız olarak dağıtılması gerekir.
  • Sistem dağıtımı. Bir mikro hizmet mimarisi, birden çok modül ve veritabanından oluşan karmaşık bir sistemdir, bu nedenle tüm bağlantıların dikkatli bir şekilde ele alınması gerekir.
  • Kesişen kaygılar. Bir mikro hizmet uygulaması oluştururken, bir dizi kesişen endişeyle ilgilenmeniz gerekecektir. Bunlar, harici yapılandırma, günlük kaydı, ölçümler, sağlık kontrolleri ve diğerlerini içerir.
  • Test yapmak. Bağımsız olarak dağıtılabilen çok sayıda bileşen, mikro hizmet tabanlı bir çözümü test etmeyi çok daha zor hale getirir.