Mikroservis Nedir?

            Mikro servisler teknoloji değil bir mimari yaklaşımdır. Tek parça (monolitik) ve karmaşık uygulamaların, her bir parçanın kendi sorumluluk alanına sahip olduğu, birbiriyle iletişim kurabilen daha küçük bağımsız parçalara ayrılmasına denir. Gerçek hayattan örnek verecek olursak bir market çalışanının işinin sadece müşterinin aldığı ürünleri paketlemek olduğunu varsayalım burada çalışan aynı işi yaptığı için hem çalışan yaptığı işte uzmanlaşır hem de çalışanın yaptığı iş daha kolay takip edilebilir. Aynı zamanda bu çalışanın işten ayrılması kasadaki ödeme işlerini etkilemez kısa sürede o çalışanın yeri doldurulabilir. Yani sistemin küçük bir parçasında duraksama yaşanırsa kalan parçalar bu duraksamadan en az şekilde etkilenir.

            Mikroservis mimarisi ile tasarlanan sistemlerde ölçeklendirme kolaydır servisler küçük parçalar halinde tasarlandığından cevik yazılım metodolojisi sunar kodda değişiklik kolaydır.
Her bir servis istenildiği gibi tasarlanabilir kullanılacak yazılım dilleri hatta veri tabanları bile farklı seçilebilir.

            Her nekadar mikroservis çözümleri en iyisiymiş gibi görünsede ihtiyaçları iyi belirleyip ona göre kullanımına karar vemek gerekir.

Mikroservislerin Avantaj ve Dezavantajları:

            Avantajları
Teknoloji Çeşitliliği: Her bir servis kendi yazılım diline ve veritabanına sahip olabilir.
Esneklik & Hata Toleransı: Bir serviste hata oluşursa sistemin bütünü bundan etkilenmez.
Ölçekleme: Yoğun kullanılan servislere daha fazla kaynak ayrılması.
Kolay deployment işlemleri: Her geliştirme işlemi sonrasında bütün sistemin deploy edilmesi yerine her bir servisin ayrı ayrı deploy edilebilmesi.
Çalışanların daha iyi yönetilmesi: Hangi çalışanın hangi işi yaptığının daha iyi bilinmesi. Yeni katılan çalışanın sistemin tamamını değil de ilgili servisi daha hızlı ve kolay öğrenebilmesi.
Tekrar kullanılabilirlik ve optimizasyon: Sistemin eskimiş değiştirilmesi gereken parçalarının daha kolay yenilenebilmesi ya da tamamen kaldırılması.

            Dezavantajları
Servisler arası iletişim ve uyumlu şekilde çalışması ve bu işlemin zorluğu.
Debug etme zorluğu bunun yerine loglama ya da monitoring araçları kullanılır.
Entegrasyon testlerinin zorluğu.
Transaction işlemlerinin zorluğu
Küçük servisler olduğu için her bir servisin bakım maliyeti.

Yorumlar

Bu blogdaki popüler yayınlar

Spring Boot ve Hibernate Anotasyonları

CI(Continuous Integration) / CD(Continuous Delivery)

Tasarım Desenleri(Design Patterns) Nedir?