Herkese Selamlar! 2021 yılının ilk yazısına başladık. Bu sene blog yazılarına çok daha fazla önem vermeye çalışacağım. Bundan yaklaşık 6 hafta kadar önce microservice mimari nedir ve neden önemlidir diye bir yazı kaleme almıştım. Yazıyı paylaştıktan sonra şöyle bir yorum geldi.
Ben bu yorumun çok mantıklı olduğunu düşünerek, microservice mimarinin dezavantajlarına değinmeye karar verdim. Okuyucumuz yapıcı eleştirisi ve önerisi sayesinde sizlerle beraber bir bakalım ne gibi dezavantajları var microservice mimarinin.
Microserviceler Karmaşık Yapılardır
Microservice mimarinin yapısı gereği monolitik mimariye göre zaten daha karışık bir yapısı vardır. Teorik olarak monolitik mimaride tek bir yapı üzerinde çalışırız. Microservice üzerinde ise içerisinde yer alan ayrı servislerin sayısı arttıkça karmaşıklık daha da artar. Farklı hizmetler üzerinde kullanılmış olan programlama dillerini ve frameworklerini birbirleri ile problem çıkarmadan çalışmasını sağlamak ciddi anlamda zordur. Projeniz içerisinde kullanılan her bir servis yine o servise özgü olan test ve izleme ortamına ihtiyaç duyacaktır bu da sizin projenize ya da firmanıza ek kaynak oluşturmanız anlamına gelir ve maliyetiniz artar ki bu problem iş verenlerin gerçekten hoşlanmadığı durumlardan bir tanesidir.
Peki şimdi sizden küçük bir hayal kurmanızı istiyorum. Gerçekten projenizde microservice yapısını gayet güzel kurguladığınızı varsayalım ama bazı servisler farklı işletim sistemi üzerinde koşmakta ya da farklı veri tabanı üzerinden veriler çekmektesiniz. Buraya kadar gayet güzel problem şu veri tutarlılığından %100 emin olabilecek misiniz? Genelde microservice mimari üzerinde çalışan kişiler ile konuştuğumda bunu genelde takip etmeye çalıştıklarını bir problem çıkmaması için fazladan çaba sarf ettikleri dönemlerle karşılaştıklarını dile getirdiler. Karmaşık yapı başlığı altında toplayabileceğimiz alt başlıklardan bir taneside yazılımcıların korkulu rüyası dökümantasyon. Sürekli farklı hizmetlerin çalışması çalışan üzerinde ki dökümantasyon yükünü arttıracaktır.
Alışkanlıkların Dışına Çıkmak/Kültürel Değişiklik
Gerçekten kızdığım bir konu var en başta onu söylemek istiyorum. Sırf populer diye bu servise geçmek isteyen firmalar tanıyorum. Bu servise geçiş yapabilmek ve layığıyla kullanabilmek için firmanız içerisinde olgunlaşmış bir agile ve DevOps kültürünüzün olması gerekmekte. Bunlar yoksa ciddi anlamda problem yaşarsınız ki, microservice mimari ile başlayıp projeyi bir yere kadar getirdikten sonra “İşler çok karıştı keşke monolitik üzerinden gitseymişiz” diyenleri gerçekten çok gördüm. Her bir microservice yapısı bağımsız olarak çalışır. Bu mimari üzerinde ki esas fikir zaten ekiplerin küçük, bağımsız olarak çalışmasını sağlamaktır. Tabi bu bağımsızlık aynı zamanda fazladan bir kontrol de gerektirir. Şahsen microservice mimari yapısı üzerinde en önemli dezavantaj yetkinliklerin ve karar alma gücünün yöneticilerden, yazılım mimarlarından alır ve küçük ekiplere kaydırılmasını içerir. Geleneksel yöntemler ile yönetilen 25-49 kişilik firmalarda bunu üst düzey yöneticilere kabul ettirmek ciddi bir problemdir.
Maliyetler
Genellikle microservice mimari monolitik yapıya göre daha maliyetlidir. Biraz öncede söylediğimiz gibi farklı ve bağımsız hizmetlerin birbirleri ile problem çıkmadan haberleşmesi gerekir. Zaman zaman network latency yani ağ gecikmesine sebep olabilir. Problemin çözümü tabi ki her zaman bu olmaz ama genelde bu gecikmeleri güçlü ve maliyeti yüksek bir alt yapı ile çözmeye kalkarsak proje bütçesinden fedakarlık yapmak zorunda kalabiliriz.
Microservice ve Güvenlik
Monolitik yapıya kıyasla birbiri arasında sürekli haberleşen servisler sebebi ile hem uygulamanın güvenliğini sağlamak hem de servisler arasında yer alan güvenliğide sağlamak zorundayız. Daha detaylı ele alacak olursak birden fazla container ile çalışıyoruz. Uygulama ve iç yapısı içerisinde ki servislerin birbirleri ile veri paylaşması sürekli ağ üzerinde veri trafiğine sebep olacak bu da art niyetli kişileri aklımıza getirdikçe bizi biraz daha tedirgin edebilir. Yukarıdaki 4 maddede microservice mimarisinin dezavantajlarından bahsetmeye çalıştım. Şunu kesinlikle unutmamalıyız sadece populer diye bu tarz bir mimariye geçmeye çalışmamalıyız. Doğru eğitim ve araçlar olmadan microservice mimari bizi çıkmaza sürükleyebilir. Yazımı okuduğunuz için teşekkür ediyorum. Sonra ki yazılarda görüşmek üzere hoşça kalın.
Bu yazi wikipediadan faydalanılarak yazılmıştır.