6 Eylül 2026 Pazar

"Unpopular Opinion": Mikroservisleri her projede kullanmamız gerekli midir?

Artık her yeni uygulama geliştirmede mikroservis yapısının kullanılmasını günümüzde çok normal karşılıyoruz. Hatta iş "mühendislikten" çıkmış, "moda" haline gelmiş durumda. Her yerde, her proje için gerekli olup, olmadığına bakılmadan kullanıyor. Bunun birkaç sebebi var:

1. Geleceğe yatırım: Uygulamanın ileride ne kadar kullanıcısı olacağı tam olarak bilinmediği için, "her şeyi yapsın", "en iyi altyapı olsun", "ileride tekrardan baştan yazmayalım" yaklaşımları öne çıkıyor.

2. CV parlatma: Projenin ihtiyaçlarına uygun "mühendislik" çözümleri yerine, "ortaya karışık" her türlü teknolojinin kullanıldığı bu çözümler, "CV"lerin daha tecrübeli, dolgun gözükmesini sağlıyor, yeni iş arayışlarında fayda sağlıyor, "fazladan maliyetler"i ise şu anki firma ödüyor.

3. Gerçekte ne oluyor?: Bu tür girişimler için yapılan yeni uygulamalar çok büyük oranda başarısız oluyor yada "hayal edilen" kullanıcı rakamlarına ulaşamıyor ve uygulama için yapılan "fazladan maliyetler" boşa gidiyor. Günde sadece birkaç bin kullanıcısı olan uygulamalar gördüm ki, içinde teknolojik olarak herşey kullanılmış, ama ya uygulamanın ana fikri kötü yada iyi satılıp, pazarlanamamış.

Peki olması gereken durum ve çözüm nedir? 

Öncelikle "mühendislik" yaklaşımına geri dönmemiz gerekiyor, yani biraz "ölçüp, biçmemiz" lazım. Sistemde belli işlemler "milisaniyeler" bazında ne kadar süre alıyor? Karmaşık yapılarda, birden çok daha fazla sistem birbirleriyle konuşup, anlaşmaları ve senkronize kalmaları gerektiği için, düz, basit, direkt bir yapıya göre yavaş çalışırlar, bu kaçınılmazdır.

Mikroservisler, biraz da "hak edilen" bir yapı olmalı aslında. Daha günlük birkaç bin kullanıcısı olan "modular monolith" bir uygulama, donanımsal olarak güçlü bir altyapıyla gayet de güzel çalışır. Kullanıcı sayısı arttıkça yavaş yavaş gerekli bölümler mikroservis yapısına çevrilebilir.

Mikroservis felsefesinde, her mikroservisin diğer mikroservislerden bağımsız olarak gelişmesi, evrimleşmesi de söz konusudur. Bunun içinde her mikroservis için bazen 1 kişiden oluşan, bazen de 10 kişiden oluşan, bağımsız ekiplerin olması gerekir ki, hem adam sayısı olarak, hem de yazılacak, bakımı yapılacak, hataları ayıklanacak kod miktarı, "modular monolith"lere göre çok daha fazladır.

Sözde ve teoride mikroservis yapıları, çok güzel dursada, iş veri kaybı olmamasına, hataların bulunup, ayıklanması için "log"ları okumaya geldiğinde, bu sistemin "yumuşak karnı"dır. Birçok yazılım ekibinin bu yüzden sabahlara kadar mesai yaptığını biliyorum. O yüzden sistemlerinizi mümkün olduğu kadar basit bir mimariyle tasarlamanız sadece "akıl sağlığınız" için değil, aynı zamanda "maaliyet", gerekli "adam sayısı", "bakımının kolay yapılması" için de gereklidir.

Yukarıda yazdıklarımdan tabii ki istisna durumlar mevcuttur: Eğer Amazon, Hepsiburada, Trenyol, N11, Netflix vb. gibi bir şirketseniz, mikroservis yapısını kullanmanız kadar normal birşey olamaz. Zaten çok yüksek sayıda kullanıcınız olduğundan dolayı, başka türlü hizmet veremezseniz, bu işinizin gerekliliği olduğundan dolayı, bunun için de bütçeniz vardır, gerekli adam sayılarıyla altyapınızı kurabilir ve bakımını, geliştirmesini sağlayabilirsiniz.