Monolitik ve Mikroservis Mimarilere Genel Bir Bakış

İlk adım olarak Monolitik Mimari’yi inceleyelim.

  • Monolitik yaklaşım için birden çok görevi yerine getirmek için tasarlanmışlardır.
  • Tüm görevleri aynı proje üzerinde barındırır.
  • İlk iki cümlemiz üzerinden yorumladığımız zaman monolitik yaklaşım ile geliştirilen projeler çok büyük code baselere sahip olma eğilimi gösterirler.
  • Projemiz üzerinde gerçekleştireceğimiz çok basit bir geliştirme dahi tüm platformlarda derleme ve test ihtiyacı doğurabilir.

Monolitik Yaklaşımın Güçlü Yönleri:

  • Belirli bir işlevsellik yalnızca projemizi ilgilendirdiği için idare etmek daha kolaydır.
  • Hata ayıklamak ve test etmek daha kolaydır. Tek bir parça olarak ele aldığımız için uçtan uca test çok daha kolay gerçekleşir.
  • Yine son cümlemizi destekler nitelikte tek bir parça olması dolayısıyla dağıtımı çok daha kolaydır.

Monolitik Yaklaşımın Zayıf Yönleri:

  • Projemiz büyüdükçe karmaşıklaşacak hatta anlamak oldukça güçleşecektir. Yine bu sebepten ötürü yönetmesi daha zor olacaktır.
  • Projemiz üzerinde bir değişiklik yapacağımız durumda projemiz çok büyük ve sıkı sıkıya birbirine bağlı olduğu için aynı güçlük burada da karşımıza çıkacaktır.
  • Her bir bileşeni ayrı ayrı ele alamayacağımız için ölçeklenebilirlik projenin bütünü için söz konusudur.
  • Yine yukarıda bahsettiğimiz sebeplerden dolayı yeni bir teknoloji geçişi tüm uygulama üzerinde konuşacağımız için kuvvetle muhtemel ilgili süreç projenin yeniden yazılmasıyla sonuçlanır. (Ki biz de şirket olarak tam da böyle bir teknoloji dönüşümünün ortasındayız.)

Şimdi de Microservislere bir göz atalım.

  • Monolitik yaklaşımın aksine bir mikroservis birbirlerine (gevşek) bağlı fakat bağımsız olarak dağıtılan daha küçük uygulamalardan oluşur.
  • Geliştirme açısından ele aldığımızda mikroservis geliştirmek görece daha basit süreçler söz konusu olabilir. (Hemen celallenmeyelim.) Çünkü her bir alt görevi yerine getiren uygulamalar üzerinden kapsamları göz önüne alındığında daha küçük boyutlar ve maliyetler söz konusudur.
  • Söz konusu her bir küçük parça özelinde herhangi bir programlama dili ve yaklaşımıyla geliştirilebilirler. (Bağımsızlık).
  • APIler aracılığıyla birbirleriyle haberleşirler. — APIler uygulamalar arasındaki kimlik bilgilerini ve veri aktarımını kolay bir yolunu sunarak entegre uygulamalar geliştirmeyi kolaylaştırır.

Mikroservislerin Güçlü Yönleri

  • Tüm hizmetler bağımsız olarak geliştirilebilir, yeni özellikler ekleyip çıkarabilir ve dağıtılabilir. Bu durum da beraberinde bize esnekliği ve ölçeklenebilirliği getirir.
  • Oluşacak olumsuz bir durum sadece ilgili servisi etkileyeceğinden dolayı bakımı ve hata ayıklaması daha kolay olacaktır.
  • Ekibimize yeni katılan arkadaşlar daha küçük parçalar ve dolayısıyla daha basit iş mantıklarıyla karşılacağı için anlaşılması ve yönetilmesi aynı ölçüde daha kolay olacaktır.
  • Teknoloji ve dil seçimindeki esneklik daha yüksek çeviklik ve düşük riski beraberinde getirir.

Mikroservislerin Zayıf Yönleri

  • Sistem dağıtık bir yapıda olduğu dolayısıyla tüm modüller ve veri tabanları arasındaki bağlantıları belirlememiz ve kurmamız bizim için ekstra karmaşıklığın içerisine çekecektir.
  • Yine tüm bileşenlerin bağımsızlığı bizim için tümünün bağımsız olarak dağıtılması gerekliliğini getirecektir.
  • Bağımsız olarak dağıtılan çok sayıda bileşen mikroservis tabanlı bir çözümü uçtan uca test etmeyi ve hata ayıklamayı çok daha zor ve maliyetli hale getirecektir.

Peki Microservis Yaklaşımı mı? Yoksa Monolitik Yaklaşım mı?

--

--

Software Developer

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store