Mikroservis mimarisi ne demek?
Mikroservis mimarisi; bir uygulamanın, her biri tek bir işi yapan, bağımsız çalışan ve birbiriyle ağ üzerinden (genellikle HTTP/REST veya mesaj kuyruğu ile) haberleşen küçük servislere bölündüğü bir yazılım tasarım yaklaşımıdır. Her servis kendi sorumluluk alanına sahiptir; çoğu zaman kendi veri deposunu yönetir ve diğer servislerden bağımsız olarak geliştirilip dağıtılabilir.
Amaç, büyük ve karmaşık bir sistemi, ekiplerin ayrı ayrı sahiplenebileceği, anlaşılması ve değiştirilmesi daha kolay parçalara ayırmaktır. Bu yaklaşım, özellikle çok sayıda ekibin aynı ürün üzerinde çalıştığı veya farklı bileşenlerin farklı hızlarda büyüdüğü senaryolarda değerlendirilebilir.
Monolitten farkı nedir?
Monolit mimaride uygulamanın tüm işlevleri tek bir kod tabanında ve tek bir çalıştırılabilir birim içinde yer alır. Kullanıcı yönetimi, ödeme, raporlama gibi modüller aynı süreç içinde çalışır ve birlikte dağıtılır.
Mikroservis yaklaşımında ise bu modüller ayrı servislere bölünür. Temel farklar şöyle özetlenebilir:
- Kod sınırları: Monolitte modüller iç çağrılarla, mikroserviste ise ağ üzerinden haberleşir.
- Dağıtım: Monolit tek parça dağıtılır; mikroserviste her servis ayrı dağıtılabilir.
- Hata yayılımı: Monolitte bir modülün sorunu tüm uygulamayı etkileyebilir; mikroserviste etki, doğru tasarımla sınırlanabilir.
- İşletim yükü: Mikroservis daha fazla altyapı, izleme ve koordinasyon gerektirir.
Monolit her zaman "kötü" değildir. Küçük ve orta ölçekli birçok ürün için monolit, daha düşük karmaşıklık ve daha hızlı başlangıç sunabilir.
Ölçeklenebilirlik
Mikroservis mimarisinin öne çıkan yanlarından biri, ölçeklemenin servis bazında yapılabilmesidir. Yoğun yük alan bir servis (örneğin arama veya bildirim), diğer servisleri büyütmeye gerek kalmadan tek başına çoğaltılabilir.
Bu, kaynak kullanımını yüke göre ayarlamaya yardımcı olur. Ancak ölçeklenebilirliğin yalnızca mimariyle gelmediğini belirtmek gerekir; veri tabanı tasarımı, önbellekleme ve servisler arası iletişim de bu konuda belirleyicidir.
Bağımsız dağıtım
Bağımsız dağıtım, mikroservis yaklaşımının en somut faydalarından biri olarak değerlendirilebilir. Bir servis güncellendiğinde, sistemin tamamını yeniden dağıtmaya gerek kalmadan yalnızca o servis yayına alınabilir.
Bu sayede ekipler kendi servisleri üzerinde farklı tempolarda çalışabilir ve değişiklikler daha sınırlı bir etki alanıyla devreye alınabilir. Bağımsız dağıtım, sürekli teslimat (CI/CD) süreçleriyle birlikte kullanıldığında daha verimli hale gelir. Buna karşılık, servisler arası uyumun ve sürüm yönetiminin dikkatle planlanması gerekir.
Ne zaman uygun olur?
Mikroservis her proje için doğru seçim değildir. Aşağıdaki durumlarda değerlendirilebilir:
- Birden fazla ekibin aynı ürünün farklı parçalarını bağımsız geliştirmesi gerektiğinde.
- Sistemin belirli bölümlerinin çok farklı yük veya ölçekleme ihtiyacı gösterdiğinde.
- Bileşenlerin ayrı yayın döngülerine sahip olmasının iş açısından değer kattığı durumlarda.
Buna karşılık, ekip küçükse, ürün henüz olgunlaşmamışsa veya işletim/izleme kapasitesi sınırlıysa, monolit ya da modüler monolit ile başlamak daha sağlıklı olabilir. Birçok ekip, ihtiyaç ortaya çıktıkça monolitten mikroservise kademeli geçişi tercih eder.
VexCore Teknoloji A.Ş.; kuruma özel geliştirme ve sistem entegrasyonu çalışmalarında, mimari kararı projenin ölçeğine, ekip yapısına ve operasyonel hedeflere göre değerlendirir. Hazır ürün ve özel yazılım hibrit modeli ile, gerektiğinde pilot/PoC üzerinden ilerlenebilir; on-prem, bulut veya hibrit dağıtım seçenekleri duruma göre ele alınabilir.