Monolitik mimarinin yerini alan mikroservisler, bulut uygulamaların geliştirme süreçlerinde yeni bir çağın başlangıcına işaret ediyor. Bu yazıda mikroservis mimarisinin anlamına ve ne için kullanıldığına odaklanıyoruz.
Yazılım geliştirme süreçleri tarih boyunca değişim geçirdi. İlk bilgisayar yazılımlarının ortaya çıkışından tüm iş süreçlerinin neredeyse bulut platformlar üzerinden aktığı bu döneme kadar ölçekler değişti, uygulamaların yapabileceklerine yeni fonksiyonlar eklendi. Durum böyle olunca mevcut geliştirme süreçlerinin yetersiz kaldığı durumda geliştiriciler yeni yöntemler, yaklaşımlar, yapılar ve mimariler benimsedi. Bugün dijital hayatımızın merkezinde konumlanırken, kullandığımız uygulamalarda yaşanabilecek kesintilere karşı tahammül seviyelerimiz bir hayli düşük. Mikroservis gibi mimari yaklaşımlar kullanıcı ihtiyaçlarına göre geliştirme süreçlerini de şekillendirerek, kesintisiz kullanıcı deneyimlerini mümkün kılıyor.
Bugün Global IT olarak yazılım geliştiricilerin son dönemde en çok konuştuğu kapsayıcı (konteyner) kavramıyla da ilişkilenen mikroservislere odaklanıyoruz. “Mikroservis mimarisi nedir?” sorusunun yanıtını araştırarak başlayacağımız yazıda, bu mimari yaklaşımın ne için kullanıldığına, monolitik yaklaşımla farkına, hangi ihtiyaçlara yanıt verdiğine değinmeye çalışacağız.
Mikroservis mimarisi nedir?
Mikro hizmetler ya da mikroservisler olarak adlandırılan mikroservis mimarisi, bulut uygulamaları oluşturmaya yönelik bir mimari yaklaşımdır. Bu yaklaşım temelde, büyük ve karmaşık bir uygulamanın, her bir parçanın kendi sorumluluk alanına sahip olduğu, daha küçük bağımsız parçalara ayrılmasına izin verir. Her uygulamada bir dizi servis oluşturulur, bu küçük bağımsız servisler kendi süreçlerinde çalışır ve servisler birbiriyle uygulama programlama arayüzü olarak bilinen API’lar aracılığıyla iletişim kurar. Temelleri konteyner kavramı ortaya çıkmadan ve web uygulamalarında modern döneme girilmeden atılan mikroservis mimarisi, zamanla “en iyi” uygulamalar geliştirmenin bir yolu olarak öne çıkar.
Mikroservis mimarisinin e-ticarette kullanımına dair bir örnek verelim. E-ticaret platformumuz ürün arama, ürün katalogu, alışveriş sepeti, yönetici arayüzü, ödeme ve sipariş değerlendirme olmak üzere 6 modülden oluşsun. Mikroservis mimarisinde tüm bu modüller küçük, bağımsız ve birbiriyle bağlantılı yazılım paketleri olarak çalışır. Her bir modülün geliştirme ve dağıtım süreçleri, sistemin genel işleyişi etkilenmeden gerçekleştirilebilir.
Mikroservis mimarisinin genel tanımından sonra, özellikle monolitik mimarinin özelliklerine odaklanarak dönüşümün nerede, nasıl gerçekleştiğini daha açık görebiliriz. Zira bugün mikroservis mimarisinin getirdiklerini anlamak için bir önceki yaygın yaklaşıma göz atmak gerekir.
Monolitik mimari nedir?
Monolitik mimari, uygulamaların temel olarak sunum, uygulama/iş mantığı ve veritabanı olmak üzere üç katmandan oluştuğu ve bu katmanların bir veri merkezindeki tek, yekpare bir sunucuda tek bir yığın halinde oluşturulduğu yazılım geliştirme yaklaşımıdır. Önceden her sektör dikeyinde ve teknoloji mimarisinde yaygın olan monolitik mimari, sunum adı verilen katmanda kullanıcıyı karşılayan, uygulama/iş mantığı katmanında kullanıcı taleplerine yanıt vermek için sorguları gerçekleştiren ve tüm bu süreçleri veritabanına kaydeden bir iş akışını ifade ediyor.
Bir uygulamanın genel anlamda belirli bir işleve hizmet eden bir kod modülleri koleksiyonu olduğunu düşündüğümüzde, kullanıcılar ön yüzle etkileşime giriyor, taleplerini ön yüz üzerinden iletiyor, ön yüz üzerinden iletilen talepler uygulama bölümünde anlamlı çıktılara dönüşüyor ve tüm bu işlemler veritabanına kaydediliyordu. Fakat böylesine bütün bir sistem, tek hata noktası olarak bilinen ve SPoF (Single Point of Failure) adı verilen kırılganlıklar ortaya çıkarıyordu. Söz konusu sistemin herhangi bir noktasında yaşanabilecek bir hata, insan müdahalesi olmadan onarılamıyor, donanım ya da kod hatası durumlarında uzun süreli kesintiler beraberinde geliyordu. Öte yandan, uygulama daha çok kişi tarafından kullanılmaya başladığında ve daha çok performans gerektiğinde, söz konusu yapıyı ölçeklendirmek için yeni bir sunucu satın almak, tek bir sunucu üzerinde çalışan monolitik bir uygulama yapısını yeniden kurmak ve kullanıcıların bir kısmını yeni sisteme aktarmak gerekiyordu. Tüm bunlar, monolitik mimarinin daha kompleks ve çevikliğe daha çok ihtiyaç duyan modern uygulamaların ihtiyaçlarını karşılamamasıyla sonuçlandı.
Bir adım ileri: Hizmet odaklı mimariler
Monolitik mimarinin yetersiz kalması, 2000’lerin ortasında, çeşitli katmanların tek bir sunucu dışında bağımsız hizmet katmanları olarak var olmasını mümkün kılan hizmet odaklı mimari yaklaşımı ortaya çıktı. SOA olarak kısaltılan ve İngilizcede service-oriented architecture olarak bilinen bu yaklaşım, ayrıntılarına kısaca “Kubernetes nedir?” başlıklı yazımızda değindiğimiz sanal sunucuların (virtual machine | VM) ortaya çıkmasıyla aynı döneme denk geldi ve uygulama dağıtım süreçleri bu yaklaşımın ve sanal sunucuların desteğiyle hızlanmaya başladı. Geliştiricilerin hizmetleri bağımsız olarak ölçeklendirmesine olanak tanıyan bu yaklaşım, mikroservis mimarisinin de temeli oldu. Her iki yaklaşımın da temel amacı, büyük uygulama yapılarını daha küçük bileşenlere bölmek oldu.
Mikroservis mimarisinin özellikleri
Bugün özellikle yazılımlardaki esnekliği artıran ve geliştiricilere çevik bir müdahale alanı sunan mikroservis mimarisi, bir uygulamanın farklı parçalarının ayrı ayrı çalışabilmesine olanak tanıyor. Tüm bu küçük uygulama parçaları, genel bir hizmette, büyük bir uygulamada birleşiyor ve son kullanıcının karşısında monolitik bir yapıymış gibi çıkıyor. Bu sayede bir sürecin tam çalışmaması durumu sistemin tamamını olumsuz etkilemiyor ve SPoF ortadan kaldırılıyor. Mikroservis mimarisi, insan müdahalesi olmadan da, sistemlerin kendi kendisini iyileştirmesini ve kod hatalarını gidermesini olanaklı kılıyor. Kubernetes gibi konteyner düzenleme araçları, bu işlemi kendi kendine gerçekleştirebiliyor. Mikroservis mimarisi, farklı ölçeklerdeki uygulamaların özel bulutlarda, veri merkezlerinde ya da hibrit çoklu bulut platformlarında çalışmasını olanaklı kılıyor. Uygulamalar bulutta çalışabilir biçimde, cloud-native geliştirildikçe, geliştirme süreçlerine erişilebilirlik artıyor.
Mikroservis mimarisi ne için kullanılır?
Mikroservis mimarisi, genelde uygulama geliştirmeyi hızlandırmak için kullanılıyor. Mikroservis mimariler, web sitesi taşımadan medya içeriklerini oynatmaya, ödeme izleme ve siparişi takip etmekten veri işlemeye kadar birçok alanda geliştiricilerin hayatını kolaylaştırıyor.
Örneğin monolitik bir yapıda faaliyet gösteren bir web sitesi ya da uygulaması, bulut tabanlı ve konteyner bazlı bir mikroservis platformuna taşınabiliyor. Öte yandan dizi ve filmler gibi büyük medya dosyaları, mikroservis mimarisi kullanılarak ölçeklenebilir bir depolama sisteminde saklanabiliyor ve doğrudan web’de ya da mobil uygulamalarda sunulabiliyor. Eğer e-ticaret sitenizde faturalama altyapısı çalışmıyorsa, monolitik bir yapıdayken bu ödeme sistemlerinin de çalışmaması anlamına gelirdi. Mikroservis mimarisi farklı iş süreçlerini birbirinden ayırmaya olanak tanıdığı için faturalama sistemi çalışmasa dahi e-ticaret siteniz ödeme almaya devam edebiliyor.
Google mikroservis çözümleri nelerdir?
Teknoloji odaklı araştırma ve danışmanlık şirketi Gartner’ın altyapı operasyonlarını şekillendirdiğine inandığı 10 teknoloji trendi içinde sıraladığı mikroservis mimarisi, bulutta uygulama geliştirme ve çalıştırmanın endüstriyel standardına dönüşürken, Google Cloud, mikroservisleri kolayca dağıtmaya yarayan çözümler sunuyor. Google Kubernetes Engine, Cloud Run gibi dağıtım araçlarının yanı sıra Cloud SQL ve diğer Google Cloud ürün ve hizmetleri, mikroservis mimarilerini desteklemek için kolayca entegre edilebiliyor.
Global IT olarak, Google’ın mikroservis mimarisi çözümlerini işletmelere ulaştırıyor, iş süreçlerini dijitalde yürütmek isteyenlere en uygun altyapıları mikroservisin sunduğu olanaklarla sağlıyoruz. Türkiye’deki en eski ve tek Google Cloud İş Ortağı ve 15 yıllık deneyimiyle 700’ü aşkın şirketi bulut platformlara taşıyan Global IT, Forrester’a göre konteyner platformları arasında lider pozisyonda olan Google Cloud’un internetin geleceğine yön veren teknolojilerini on binlerce son kullanıcı için erişilebilir kılıyoruz.