Microservices Mimari Önemli bilgiler

Merhaba, bugün artık günümüz de gitgide kullanımı artan microservices mimariler hakkında bilgiler paylaşacağım. Neden böyle bir mimariye gerek duyulmuştur. Avantajları, dezavantajları nedir?

Microservices mimarisi, bir uygulamanın birkaç ayrı servis şeklinde parçalara ayrılması ve bu servislerin birbirleriyle iletişim kurarak bir bütün olarak çalışması olarak tanımlanabilir. Bu mimari tasarımı, uygulamanın büyüklüğüne göre değişebilir ve birkaç servis veya binlerce servis olabilir.

Microservices mimarisinin temel amacı, uygulamanın büyüklüğüne göre;

  • Ölçeklendirebilirlik sağlamak,
  • Hızlı ve esnek geliştirme imkanı sunmak,
  • Servisler arasında daha az bağımlılık oluşturmak ve servislerin ayrı ayrı yük testi yapılabilmesini
  • Deploy edilebilmesini sağlamaktır.

Microservices mimarisinin en önemli özelliği, uygulamanın servislere ayrılmasıdır. Bu sayede, her servis kendi işlevine odaklanarak geliştirilebilir ve bu servisler arasında birbirlerine bağımlılık olmaması sağlanır. Bu sayede, servisler arasında yapılan değişikliklerin etkisi azaltılır ve servisler ayrı ayrı test edilebilir.

Microservices mimarisi, monolitik yapıya göre daha esnek ve ölçeklenebilir bir yapı sunar. Monolitik yapıda, tüm uygulamanın aynı proje içinde bulunması nedeniyle, değişikliklerin yapılması ve test edilmesi daha zordur. Microservices mimarisinde ise, her servis ayrı projeler olarak geliştirilebilir ve bu servisler arasında iletişim kurulması için bir "arayüz" (interface) kullanılabilir. Bu sayede, değişikliklerin yapılması ve test edilmesi daha kolay hale gelir.

Microservices mimarisinin bir diğer önemli özelliği ise, servislerin ayrı ayrı deploy edilebilmesidir. Bu sayede, uygulamanın büyüklüğüne göre ölçeklenebilir hale gelir ve servislerin ayrı ayrı yük testi yapılabilir.

Kısaca bir örnek vermek gerekirse aşağıdaki gibi örnek verebiliriz.

Bir e-ticaret uygulamasını düşünelim. Bu uygulamada, ürünlerin listelendiği bir ana sayfa, ürün detay sayfaları, üye girişi ve üye kaydı işlemleri, sepet ve ödeme işlemleri gibi farklı işlevler olabilir. Bu işlevlerin her biri, kendi servisi olarak tasarımlanabilir. Örneğin, ürünlerin listelendiği servis, veritabanındaki ürünleri sorgulayarak ana sayfada görüntülenmesi için gerekli verileri döndürür. Üye girişi ve üye kaydı işlemleri servisi ise, üye giriş bilgilerini doğrular ve yeni üye kayıt işlemlerini gerçekleştirir.

Peki hep iyi avantajlarından bahsettik. Peki dezavantajları nelerdir?

Microservices mimarisinin dezavantajları arasında şu noktalar sayılabilir:

Servisler arası iletişim için kullanılan arayüzlerin (interfaces) tasarımı ve yönetimi daha zor olabilir.
Servisler arası iletişim için kullanılan protokollerin (örneğin HTTP, gRPC gibi) ve mesajlaşma sistemlerinin (örneğin RabbitMQ, Kafka gibi) yönetimi daha zor olabilir.
Servisler arası iletişim için kullanılan arayüzlerin (interfaces) ve protokollerin değiştirilmesi daha zor olabilir.
Servisler arası iletişim için kullanılan arayüzlerin (interfaces) ve protokollerin tasarımında hatalar yapılması durumunda, tüm uygulamanın etkilenmesi olasıdır.
Servisler arası iletişim için kullanılan arayüzlerin (interfaces) ve protokollerin aşırı yüklenmesi durumunda, uygulamanın performansı düşebilir.
Microservices mimarisi, monolitik yapıya göre daha karmaşık bir yapıdır ve bu yapının korunması, yönetimi ve bakımı daha zor olabilir. Bu nedenle, microservices mimarisi kullanılacak uygulamaların büyüklüğüne ve işlevine uygun bir şekilde tasarımı önemlidir.