Bilgi Akışı

Monolithic vs Microservice

Son yıllarda yazılım dünyasında hayli fazla değişimler yaşandı. Bu değişimlerin başlıcalarından biri olan monolithic’ten microservis mimarisine geçiş oldu. Öncelikle monolithic ve microservis mimarileri nedir onu açıklayayım.

Monolithic

Türkçe’ye yekpare olarak çevrilmiştir. İsminden de anlaşılacağı üzre yazılım ile ilgili gerekli olan tüm parçaların bir arada bulunduğu mimari çeşididir. Aslında bir çoğumuzun farkında olmadan kullandığımız mimari desenidir. Ne demek istiyorum biraz açmak gerekirse, ortaya çıkacak ürün, uygulama vs. her ne ise o uygulama için gerekli olan veritabanı bağlantıları, güvenlik, validasyon ve iş katmanı gibi gibi bir çok işin bir arada bulunduğu katmandır. Bu tip mimarilerin tek merkezden kontrol edildiği için yönetmesi oldukça kolaydır, ancak uygulamamıza gelen istek sayısı arttıkça bizim yapmamız tek şey donanım tarafında dikine gelişmektir. Buda oldukça maliyetli iş diyebiliriz. Elbette bu tarz mimarini tek eksiği bu değil sırasıyla açıklamak gerekirse

  1. Proje içerisinde küçük bir bug tüm projeyi yeniden deploy etmek zorunda bırakıyor.
  2. Tüm uygulamanın tek bir dil üzerinden gerçekleşiyor olması zorunluluğu
  3. Uygulamamız kendi içinde farklı özelliklere sıkı sıkıya bağlı olması örneğin veri katmanını kullanıyor view katmanı iş katmanı veya güvenlik ile ilgili işler veri katmanı bağlı olabiliyor. Bu durumun bence 2 tane kötü tarafı var

3.1:Uygulama içerisinde herhangi bir hata meydana geldiğinde uygulama toptan fişi çekmesi

3.2: Uygulamamız değişime kapalı duruma geçiyor elbette bu durumu çeşitli tasarım desenleri(dependency injection) ile iyileştirmek mümkün ancak düzeltmek oldukça zor

Bu kadar kötüledikten sonra iyi taraflarını söylemek olmaz; eğer biz küçük ölçekli bir proje yapıyorsak içerinde çok fazla özellik bulunmayacaksa en mantıklısı monolithic geliştirme yapmaktır.

Monolithic Architecture

 

Microservice

Yukarıdaki görselde bulunan katmanları parçalara bölmektir. Uygulamamızda ki her farklı işin ayrı bir servis yazılma durumudur. Burada ki amaç az önce değindiğim monolithic mimaride yaşanan sorunları çözmektir. Bu sorunları çözerken elbette  ağır gelen yöneleride olmuştur. Bunların en başında yönetim zorluğu olmuştur. Sorunları çözerken izlediği yol ise her işi parçalamasıdır. Faydaları sırasıyla şöyledir.

  1. Her bir iş için farklı dil kullanabiliriz. bu servislerden dönen veri dili(xml,json) her ne ise bu dilleri her dilde çevirecek fonksiyonlar olduğundan kolayca java backend’e asp.net’i view olarak kullanabiliriz.
  2. Bağımlılıklar azalacak uygulamanın tek bir yerinde oluşacak hata uygulamanın çalışmasını engellese de  uygulamanın toptan çökmesi engellecek.

Dezavantajları

  1. Servislerin birbirleri ile haberleşmesi bazen sıkıntı çıkartabiliyor.
  2. Start-up hosting maliyetleri birazcık fazla.

Microservice Architecture

Tercih Edilmeli mi?

Eğer tüm servisleri moniter edebileceksen,

Bu işlerin altında kalkacak bir geliştirici kadron var ise,

Hızlı yükleme yapmak istiyorsan,

Farklı diller üzerinde çalışacaksan Microserviceleri kullanabilirisin.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgili Makaleler

Başa dön tuşu