Bu yazımızda, karmaşık sistemleri küçük parçalara bölen ve yazılım geliştirme ve dağıtım süreçlerinde esneklik kazandıran mikroservis mimarisini tercih etmenin 7 avantajını listeleyeceğiz.
Uygulama geliştirme süreçlerine esneklik ve çeviklik kazandıran mikroservis mimarisi, karmaşık yazılımları ayrı ayrı geliştirilebilen, birbirinden bağımsız çalışabilen yapı taşlarına ayırmayı öngörüyor. Geçmişte kullanılan monolitik mimarinin ortaya çıkardığı hata noktalarını ortadan kaldırmaya ve kolay ölçeklenebilir yazılımlar oluşturmaya olanak tanıyan mikroservis mimarisi, bulut platformların vazgeçilmezi olarak iş dünyasında her geçen gün daha çok benimseniyor.
Küresel teknoloji pazar araştırma şirketi Vanson Bourne tarafından yürütülen bir araştırma, kuruluşların %84’ünün mikroservis mimarisinin avantajlarından yararlanmaya başladığını gösterirken, Allied Market Research’ün bir araştırmasında mikroservis pazarının 2026’ya kadar her yıl %18,6 bileşik büyüme oranıyla genişleyeceği tahmin ediliyor.
Peki, “mikroservis nedir, ne işe yarar” gibi soruların yanıtlarını şu yazımızda verdiğimiz mikroservis yaklaşımı, işlerini dijital ortamda yürüten işletmelere ne gibi avantajlar sunuyor? Bu yazımızda, mikro hizmet olarak da bilinen mikroservis mimarisinin işletmelere kazandırdıklarını 7 maddede özetlemeye çalışacağız.
1. Ölçeklenebilirlik
Her bir mikro servisin özerk olarak çalışma kapasitesi, münferit mikro hizmetleri eklemeyi, kaldırmayı, güncellemeyi ve ölçeklendirmeyi kolaylaştırıyor. Monolitik yapılarda iş süreçlerinin kesintisiz akması için performans ihtiyacı arttığında daha fazla fiziksel sunucuya ihtiyaç duyulurken, bulut platformlarında çalışan mikro servisler, konteyner yaklaşımının da yardımıyla performansı daha etkin bir biçimde yönetmeye olanak tanıyor. Bir servise talep arttığında, yalnızca artan taleplerden etkilenen mikroservislere daha çok kaynak tahsis ediliyor. Kubernetes gibi konteyner yöneticileri, gerektiğinde daha fazla işlem gücü sağlayarak mikrohizmetleri otomatik olarak ölçeklendirebiliyor.
2008’in son aylarında üç günlük bir erişim güçlüğü yaşayan Netflix, monolitik uygulamasını yüzlerde mikroservise dağıttı ve böylece tüm süreçler kendi kendine akabilecek özerkliğe erişmiş oldu. Bu da, performans kaynaklı erişim güçlüklerini ortadan kaldırdı. Bugün Netflix’in mikroservis yapısı aşağıdaki gibi görünüyor.
2. Dayanıklılık
Mikroservis mimarisinde her bir modül, diğerlerinden bağımsız olarak çalışıyor. Bu da, monolitik sistemlerin en önemli problemlerinden olan hata dayanıklılığının düşmesine sebep oluyor. Örneğin bir monolitik sistemde tek bir serviste görülebilecek bir hata, tüm sistemi işlevsiz kılabiliyor. Mikroservis mimarisinde ise bir hizmetin arızalanmasının uygulamanın tamamını olumsuz etkileme olasılığı oldukça düşük oluyor. Mikroservis mimarileriyle oluşturulan ve bulut platformlarında çalışan birçok uygulama, çoğunlukla farklı uygulamalarla, uygulama programlama arayüzleri (API) aracılığıyla bağlı oluyor ve bir uygulamanın tamamen kapanması demek, bağlantılı olduğu diğer uygulamalarda da problemlere yol açabiliyor. Kullanıcıların mobil uygulamalardan kesintisiz erişim ve hatasız kullanım deneyimi beklediği de göz önüne alındığında, olası iyileştirmelere ve hata gidermeleri mümkün olduğunca ön yüze yansıtmadan gerçekleştirebilmek önem kazanıyor.
3. Esneklik
Mikroservis mimarisi, geliştirme ekibinin uygulama geliştirme süreçlerinde kullanacakları teknoloji, kütüphane ve diller açısından da esneklik sağlıyor. Zira farklı yazılım dillerinde kodlanan mikroservisler, farklı platformlarda çalışsalar dahi birbirine bağlanabiliyor. Bu noktada geliştirici ekipleri, projelerine ve ilgili uygulamanın ya da modülün ihtiyaçlarını tam anlamıyla karşılayacak bir kodlama dili seçmekte özgür oluyor. Örneğin bazı uygulamalar düşük gecikmeli ve yüksek verimli bir yapıya ihtiyaç duyarken ve bu tarzda bir uygulama geliştirmek için hâlihazırda güncel ve daha iyi teknolojiler varken, sistemin genelinin paylaştığı yazılım diline bağlı kalmak gerekmiyor.
4. Güvenlik
Güvenlik başlığı da yine tek hata noktası kavramıyla, yani SPoF (single point of failure) ile ilişkileniyor. Monolitik yaklaşımda tüm uygulama birbirine bağımlı biçimde çalışırken, sistemde yaşanacak bir güvenlik ihlali uygulamanın bütününü tehlikeye atıyor. Mikroservis mimarisinde geliştirilen her bir küçük servis ise birbirlerine bağlanmak için güvenli API’lar kullanıyor. Güvenli API’lar, işledikleri verileri yalnızca özel olarak yetkilendirilmiş uygulama, kullanıcı ve sunucular için erişilebilir kılıyor. Bu noktada sağlık bilgileri ve finansal geçmiş gibi hassas veriler, çok daha iyi korunabiliyor.
5. Hız
Mikroservis mimarisinin ölçeklenebilir yapılar sunduğunu daha önce belirtmiştik. Ölçeklenebilirlik, mikroservislerin daha kolay geliştirilebilmesini, daha hızlı güncellenebilmesini, olası hataların daha çabuk giderilebilmesini ve ürünlerin çok daha kısa sürelerde kullanıma sunulabilmesini olanaklı kılıyor. Ürün odaklı büyümeyi önceleyen şirketlerde, farklı ürünlere odaklanan geliştirme ekipleri bağımsız süreçler yürütebiliyor ve daha yavaş ilerleyen projeleri beklemek zorunda kalmıyor. Mikroservisler, CI/CD/CD (continuous integration, continuous delivery, continuous deployment) olarak kısaltılan ve sürekli entegrasyon, sürekli teslimat, sürekli dağıtım felsefesini de destekliyor. Bir diğer deyişle, geliştirici ekipler bir uygulamanın, özelliğin ya da modülün çalışan ilk sürümünü (minimum viable product | MVP) hızla üretebiliyor, kullanıma sunabiliyor ve bu sürüm üzerindeki güncellemeleri aynı hızda sürdürebiliyor. Bu da kullanıcılar için sürekli gelişen ve ileri taşınan dijital ürünler oluşturmayı sağlıyor.
6. DevOps çevikliği
Yazılım geliştirme ve bakım süreçleri arasındaki sürekli işbirliğini adlandıran bir kültür olarak tanımlanan DevOps, ürün geliştirme aşamalarındaki çeviklikle (agility) ilişkili bir kavram olarak karşımıza çıkıyor. Mikroservis tabanlı mimariler yeni özellikler üzerine, çevikliğin gerektirdiği gibi yeni denemeler yapmayı ve bu sırada iş riskini minimuma indirmeyi sağlıyor. Yeni özellikler kolayca denenebiliyor, işe yaramadığı durumda da hızlıca geri alınabiliyor. Bu sayede işletmelerin teknolojilere ve satıcılara olan bağımlılığı azalıyor ve kullanıcıların taleplerine yanıt verebilme süreleri kısalıyor.
7. Daha küçük ekipler
Yazılım geliştirme ekiplerinin küçük olması, iş verimliliğine, ekip yönetimine ve hedeflere ulaşma hızına olumlu etki ederken, lisans ve uzman insan kaynağı maliyetlerinden tasarrufu da beraberinde getiriyor. Daha küçük ekipler üzerinde çalıştıkları ürüne iyi odaklanabildikleri için ortaya çıkan sonuç da çoğu zaman kaliteli oluyor. Mikroservis mimarisi, karmaşık bir sistemi yapı taşlarına ayırmayı öngördüğünden, yazılım ekiplerinin organizasyon yapısı da bu kapsamda tasarlanabiliyor. Birkaç kişilik geliştirici takımları daha yakından çalışabilme, sistemin genelini iyileştirmeye yarayan küçük bir servise odaklanabilme açısından fayda sağlıyor. Her bir geliştirici böyle bir çalışma metodolojisiyle çalışma arkadaşlarını daha yakından tanıma, güven ilişkisi kurma ve ortak bir motivasyon etrafında birleşme fırsatı buluyor.
Google Cloud Platform’da mikroservis olanakları
Google Cloud, konteyner yaklaşımını ve mikroservis mimarisini temel alan çözümleriyle, işletmelerin dijital dönüşümlerine katkıda bulunuyor. Google Compute Engine adı verilen ürün işletmelere kendi Kubernetes altyapılarını oluşturma olanağı sunarken, Google Kubernetes Engine, konteyner yönetiminde işleri kolaylaştırıyor. Google Cloud Run sunucusuz konteyner mimarisini uygulamaya yarıyor, Google App Engine ise hizmet olarak platform kavramını her sektöre uyarlıyor.
2006’dan bu yana faaliyet gösteren Global IT, Türkiye’yi Google hizmetleriyle tanıştıran ilk yeni nesil teknoloji çözümleri danışmanlık şirketi olarak, uzmanlığını Google ürün ve hizmetlerine adıyor. 16 yıllık deneyiminde 3.300’den fazla projeye son noktayı koyan ve 700’den fazla şirketi oldukça kısa sürelerde bulut platformlara taşıyan Global IT, e-ticaretten üretime, lojistikten yazılım sağlayıcılara kadar geniş bir endüstri yelpazesinde dijitalleşme, modernizasyon ve inovasyon danışmanlığı sunuyor.