Mikroservis mimarisi nedir?

|

Seçkin Karabacakoğlu
Projesis Üretim Yazılımları
skarabacakoğlu@projesis.com
Kasım 2021

Mikroservis mimarinin ne olduğunu ve neden ihtiyaç olduğunu anlamadan önce monolitik uygulamalardan bahsetmek daha doğru olur.

Yazılım mimarilerini konuşurken birçok kişiden katmanlı mimari yapısın duymuş olabilirsiniz, çünkü yakın zamana kadar birçok yazılım firması katmanlı mimari kurallarına göre geliştirme yapmaktaydı. Katmanlı mimaride, n sayıda katman olabilir ama en temelde 3 katman olarak tasarlanan yapılar şu şekildedir

Bu mimari yapıda tüm iş fonksiyonları orta katmanda yazılmaktadır. Bunu bir örnekle açıklamak gerekirse; sistemin içerisinde bir fatura kesme işlemi olduğunu varsayalım. Çok temel özellikleri düşünürsek fatura kod bloğu içinde şu geliştirmelerin yapılmış olması beklenir.

  1. Müşteri seçimi
  2. Seçilen müşteriye ait cari bakiye kontrolü,
  3. Ürün seçimi,
  4. Depo stok miktar kontrolü,
  5. Hesaplamalar (fiyat, iskonto promosyon, kdv vb)
  6. Kayıt sonrasında stok ve cari bakiyelerin güncellenmesi
  7. Veya kayıt silinirse tüm işlemleri ger alacak mekanizmanı oluşturulması
  8. E-fatura vb sistemlerle entegrasyonlar
  9. vb.

Tüm bunları alt alta koyduğumuzda muhtemeldir ki en az 1000 satırlık bir fatura kod bloğuna sahibiz demektir. Arayüzden kullanıcı bir fatura kesmek isteğinde bu kod bloğu devreye girer ve tüm işleri uygun sırayla çalıştırır. Mantık olarak sorunsuz gibi görünse de tam da bu noktada monolitik yapıların en büyük sorunu ile karşı karşıya kalırız: Geliştirme ve Bakım Maliyeti

Monolitik yapılar ilk aşamada geliştirme kolaylığı ve eski alışkanlıkların devamı olarak hızlıca tercih edilen yapılar olabilir. Ama zaman geçtikçe bu yapıların bakımları zorlaşmaya ve her yapılan bakım sonrasın beklenmeyen yan etkiler yaşanmaya başlar.

Şimdi gelelim mikroservis mimarisine ve öncelikle yukarıdaki 3 katmanlı şekli mikroservis olarak değiştirelim.

 

Mikroservis mimarisinde işler blok olarak kodlanmaz. Her bir işi yapan ayrı bir servis yazılır. Bu servisler birlikte çalıştırılarak bütün olarak yapılması hedeflenen sonuca ulaşılır.

Bu şekilden de anlaşılacağı gibi yukarıdaki fatura örneğinde 8 alt adımın her biri ayrı bir servis olabilir. Hatta bu servislerin de alt servisleri olabilir.

Monolitik yapılar belli bir büyüklüğe ulaştıktan sonra hantallaşmaya başlar ama doğru kurgulanan mikroservis yapılarda eklenecek her yeni özellikle bağımsız çalışarak iş bütününe katkı verecektir.

Mikroservis yapıların temel avantajlarını listelersek

  1. Daha küçük kod blokları yazıldığı için bakım maliyetleri düşüktür.
  2. Geliştirme sonrasında olabilecek hata riski düşüktür.
  3. Genişleyebilme imkanı daha kolaydır.
  4. Servisler yük dağıtımı yapılarak farklı noktalarda çalışabilir. Yukarıdaki fatura örneğinde yazılacak tüm servisler kolay bir şekilde farklı sunucularda çalıştırılabilir.
  5. Bulut tabanlı kullanıma uygundur.

Tabi mikroservis yapısının sağlıklı çalışması için uygun tasarım yapılması da çok önemlidir. Mikroservis mimarisi sadece mevcut kodları küçük parçalara bölmek olarak düşünülmemeli, bu mimariye uygun tasarım yapılmalıdır. Aksi taktirde nispeten küçülmüş çok sayıda monolitik kod parçası ile karşı karşıya kalınabilir.