KategorilerYazılım Mimarisi

Mikroservis Mimarisi Nedir? Avantajları Nelerdir?

Yazılım mülakatlarının olmazsa olmaz sorularından Mikroservis Mimarisi nedir ya da kısa adıyla Mikroservis nedir? Mikroservisler küçük birbirinden bağımsız servislerin iyi tanımlanmış API’lar aracılığıyla birbirleriyle iletişim kurduğu bir yazılım mimarisidir.

Mikroservis mimarisi büyük uygulamaların, her birinin kendi görevleri olan küçük bağımsız parçalar halinde bölünebilmesine imkan sağlayan bir yapıdır.

Aynı zamanda daha önce SOLID prensipleri makalelerinde bahsettiğim Single Responsibility Prensibinin servis bazında uygulanmış hali olduğunu söyleyebiliriz.

Mikroservis Mimarisinin Faydaları

  • Mikroservislerin birbirinden bağımsız olarak çalıştırılabiliyor olması hangi servislerin daha yoğun olduğunu keşfetmeye ve onları ölçeklendirmeye yardımcı olabilir.
  • Aynı zamanda birbirinden bağımsız servisler bir hata durumunda hata izolasyonu sağlar. Bir servis dursa veya çalışmasa bile bu sistemin genelini etkilemez.
  • Mikroservis mimarisi bize hangi teknolojileri seçeceğimiz konusunda geniş bir repertuar imkanı sağlar. Örneğin yapılacak işlerden bir kısmının farklı bir programlama dilinde yapılması daha kolay ya da daha verimli olabilir veya bazı işler için farklı bir veritabanı türüne ihtiyacımız olabilir. Bu durumlarda mikroservis mimarisinde her görev için birbirinden bağımsız servisler olduğundan, gerektiğinde servisleri farklı teknolojiler kullanarak geliştirmemiz mümkün olur.
  • Servisler spesifik işleri yapabilmek için tasarlandığından ve kendi başına çalışabildiğinden yeniden kullanılabilir kodlar yazılmış oluyor. Başka bir projede ihtiyaç olduğunda sorunsuz bir şekilde kullanılmasına olanak sağlıyor.

Mikroservis Mimarisinin Zorlukları

  • Mikroservis mimarisinde aynı işi yapan geleneksel monolitik bir mimariye göre daha fazla hareketli bağımsız parça vardır. Her bir servis bireysel olarak daha basit bir yapıda olsa bile bir araya geldiklerinde tüm sistem daha kompleks bir yapıda olur.
  • Mikroservis projelerini geliştirirken kullanılan merkeziyetsiz yönetim şeklinin avantajları olsa da aynı zamanda bazı problemlere de yol açabilir. Bir çok farklı dilden ve frameworkten oluşan bir yapı kurmak projenin bakımını/sürdürülebilirliğini zorlaştırabilir.
  • Birçok servisin birbiri ile iletişim kurması daha uzun yanıt sürelerine tıkanmalara yol açabilir. Özellikle servisler arasında zincir şeklinde birbirini çağıran bir yapı varsa istek süreleri uzayabilir, bu yüzden API’lar dikkatli bir şekilde tasarlanmalı.

Monolitik Mimari Mikroservis Mimarisi Karşılaştırması

  • Mikroserviste uygulama küçük ve bağımsız servislere bölünmüştür, her servis farklı bir iş yapar ve kendi veritabanına sahip olabilir. Monolitikte ise uygulama bir bütün halinde çalışır ve genellikle tek veritabanı kullanır.
  • Mikroserviste servisler bağımsız geliştirildiğinden ekip üyelerinin belirli bir işle, servisle ilgilenmesi kolaylaşır. Monolitik mimaride uygulama bütün olduğundan koordine olmak daha zordur.
  • Mikroserviste daha yoğun olan servis için ekstra kaynak ayrılabilir ancak monolitikte genelde ölçeklendirme daha zordur ve tüm uygulamayı etkiler.
  • Mikroserviste bir serviste oluşan hata uygulamanın çalışmasını çok etkilemez ancak monolitikte tüm projeyi etkileyebilir.
  • Mikroserviste birçok teknoloji ve framework kullanılabilir, takım çalışmasında herkesin uzmanlığına göre çalışmasına imkan sağlayabilir. Monolitikte ise çoğunlukla aynı teknoloji kullanılarak proje geliştirilir.
  • Mikroserviste servislerin birbirleriyle iletişimi için API tasarımının doğru yapılması önemlidir, ağdaki iletişim maliyeti yüksek olabilir. Monolitikte ise servisler aynı yerde çalıştığından aralarındaki iletişim genelde daha hızlı ve düşük maliyetlidir.

Sonuç olarak Mikroservis mimarisi günümüz yazılım geliştirme süreçlerinde önemli bir yer tutuyor. Büyük uygulamaları küçük, bağımsız, işlevsel servislere bölerek geliştirme ve bakım süreçlerini kolaylaştırıyor, takım çalışmalarında görev alanlarının daha netleşmesini sağlıyor. Hata izolasyonu ve teknoloji çeşitliliği sağlayarak da daha esnek bir yapı oluşturuyor. Ancak bu avantajların yanlış kullanımlarla dezavantaja dönüşebileceğini unutmamak gerekir.

Kaynaklar:

https://aws.amazon.com/microservices/

https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/microservices

Bir Cevap Yazın