Mikro hizmetler geliştiriciler arasında popülerlik kazanmaktadır, çok sayıda kullanıcıya hizmet veren büyük İnternet hizmetleri için iyidirler. Eğer bir hizmette arıza olursa, diğerleri çalışmaya devam eder: bu büyük ve karmaşık sistemler için çok önemlidir. Yenilikler söz konusu olduğunda, basitçe yeni bir hizmet yazabilirsiniz, tüm sisteme kolayca uyum sağlar, uyumluluk sorunlarıyla uğraşmak zorunda kalmazsınız. Dahası, farklı programlama dilleri kullanan birkaç bağımsız ekibi çalışmaya dahil edebilirsiniz: mikro hizmetler bunu yapmanıza olanak tanır.
Mikro hizmet yaklaşımının hem avantajları hem de dezavantajları vardır. Bu makalede, mikro hizmet mimarisinin özünü, monolitik mimariden farklılıklarını, avantajlarını ve dezavantajlarını ve ayrıca mikro hizmetler ilkesi üzerine inşa edilen uygulamaların çalışma özelliklerini ayrıntılı olarak ele alacağız.
Mikro hizmet mimarisi nedir
Mikro hizmet mimarisi, bir sistemin monolitini bağımsız hizmetleri temsil eden ayrı bileşenlere bölmekten oluşan bir yazılım geliştirme tarzıdır. Her bir hizmet nispeten basit işlevleri yerine getirmek üzere tasarlanmıştır, uygulamanın çalışması teknik unsurların ve iş özelliklerinin takibi ile gerçek zamanlı olarak test edilir. Hizmetlerin net fiziksel sınırları vardır, bu da onları ölçeklenebilir hale getirir ve farklı programlama dillerinin kullanılmasını mümkün kılar. Gerekli değişiklikler tüm uygulamayı etkilemeden yapılır.
Mikroservis mimarisi ve monolit
Monolitik sistemler bir uygulamanın tüm hizmetlerini tek bir işlemde birleştirir ve daha sonra bu sistemi birden fazla sunucuda çoğaltır. Mikro hizmet mimarisinde her hizmet için ayrı bir paket vardır ve bunlar farklı sunucularda depolanır – birbirlerinden izole edilir, gerekirse çoğaltılır. Bu, her bir işlevsel unsurla ayrı ayrı çalışmanıza olanak tanır.
Mikroservis mimarisinin faydaları
Mikro hizmetlerin faydaları, Amazon, Netflix veya eBay gibi büyük kurumsal oyuncuların bunları sistemlerinde uygulamaları için yeterince güçlü olmuştur.
- Yüksek hata toleransı: hizmetlerden biri çökerse, diğerleri çalışmaya devam eder. Böylece, bireysel hizmetlerdeki arızalar tüm iş akışını etkilemeyecektir;
- Esneklik: Yeni bir teknolojiyi çok az kanla uygulamaya çalışabilirsiniz. Çok daha hızlı olacak ve arıza durumunda değişiklikleri kolayca geri alabileceksiniz. Hizmetlerden birini yerel olarak değiştirerek tüm sistemi riske atmayız ve değişiklikler için gereken süre daha azdır;
- Basitlik: ne kadar az kod olursa (ve her bir hizmet eksiksiz bir sistemdir, bu nedenle bu belirli işlevle ilgili olmayan çok sayıda ayrıntıyı anlamanız gerekmez), programcılar için neyin nasıl çalıştığını anlamak o kadar kolay olur. Buna ek olarak, daha az zaman alacaktır;
- Yazılan kodu işe koyma kolaylığı: az miktarda kod hızlı bir dağıtım sağlar;
- Ölçeklenebilirlik: En gerekli ve ihtiyaç duyulan hizmetler ihtiyaç duyulduğunda eklenebilir ve genişletilebilir. Tüm sistem aynı kalır.
Monolitik mimari ile karşılaştırıldığında, mikro hizmet mimarisi daha fazla esnekliğe ve bireysel hizmetleri bağımsız olarak ölçeklendirme yeteneğine sahiptir. Tüm sistemi riske atmadan kodda yerel değişiklikler yapmak daha kolaydır, ancak bunun yerine hizmetler arasındaki etkileşimin karmaşıklığı artar.
Mikroservis mimarisinin dezavantajları
Mikro hizmet mimarisinin modaya uygunluğuna ve çok sayıda avantajına rağmen, bazı dezavantajları da vardır.
- Hizmetlerin kendi aralarındaki iletişim karmaşıktır. Her bir işlevsel unsur izole edildiğinden, her durumda birbirleriyle istek ve yanıt alışverişinde bulunmaları gerekeceğinden, aralarında yetkin iletişim kurarken özel dikkat gösterilmesi gerekir. Hizmetlerin sayısı arttıkça, mesajlarının oluşturulmasındaki karmaşıklığın da artacağı açıktır.
- Hizmetlerin sayısının artması, bu hizmetlerin ilişkili olduğu veritabanlarının sayısının da artmasını gerektirir, çünkü monolitik mimarinin aksine mikro hizmetler birden fazla ortak veritabanı kullanır.
- Testin karmaşıklığı, önce her bir hizmetle ayrı ayrı ilgilenmeniz ve ardından diğer mikro hizmetlerle doğru etkileşimini test etmeniz gerektiği gerçeğiyle ifade edilir.
- Mikro hizmetler bireysel kuruluşlarda kullanım için daha kötüdür, onlar için kullanımı makul olmayan bir şekilde zor olabilirken, kitlesel İnternet hizmetleri için mükemmeldir
Mikroservis Mimarisi Uygulama İstismarı
- İzleme
Zaman içinde küçük sorunlar büyük sorunlara yol açabilir. Bu nedenle, zamanında ve mikro hizmetler söz konusu olduğunda sürekli izleme esastır. Bir mikro hizmet mimarisini izlemek, monolitik bir uygulamayı izlemekten çok daha karmaşıktır ve bakımı daha pahalıdır. - Hata toleransının gerçekleştirilmesi
Hem monolitik hem de mikro hizmet mimarileri uygulama arızalarını önleyemez. Mikro hizmetler üzerine bir uygulama inşa ederken önemli bir ilke, sistem arızalarının er ya da geç gerçekleşeceğini varsaymaktır. Ve bu başlangıç varsayımı ile uygulama oluşturulur.
Kod, üretime geçmeden önce kapsamlı bir şekilde test edilmelidir. Bununla birlikte, bazı hataların gözden kaçma ihtimali her zaman vardır. Bu tür durumlar için kaos test sistemi icat edilmiştir. Hatalar ve sorunlar otomatik ve kasıtlı olarak oluşturulur – bunları önceden incelemek ve hızlı bir çözüm veya bunları önlemenin bir yolunu bulmak için. - Ölçeklendirme
Mikro hizmetlerin bulut tabanlı doğası ve bunların temelini oluşturan sanallaştırma, ölçeklenebilirliği ana avantajı haline getirmektedir. Her hizmet belirli bir işlevi yerine getirir, tüm hizmetler nispeten küçüktür – mimarinin tüm bu özellikleri ölçeklendirmeyi daha kolay ve daha acısız hale getirir.
Mikroservis mimarisini kullanmak ne zaman uygundur
Mikro hizmet mimarisi özellikle aynı anda çok sayıda kullanıcıya çevrimiçi hizmet sağlayan şirketler için geçerlidir. Bu tür hizmetler arasında büyük çevrimiçi mağazalar, yayın platformları ve sosyal ağlar yer alır.
Farklı sistem bileşenlerinin bağımsız olarak ölçeklendirilebilmesi onlar için önemlidir. Örneğin, satış günlerinde sipariş verme hizmeti üzerindeki yük büyük ölçüde artarken, diğer hizmetler normal modda çalışır. Mikro hizmetler, diğer alt sistemleri etkilemeden özellikle ödeme hizmeti için bilgi işlem gücünü ve bant genişliğini esnek bir şekilde artırmanıza olanak tanır.
Hata toleransı, geniş bir kitleye sahip çevrimiçi hizmetler için de kritik öneme sahiptir – bir hizmet arızalanırsa, uygulamanın geri kalanı normal şekilde çalışmaya devam etmelidir. Bağımsız mikro hizmetlere ayırma tam da böyle bir arıza izolasyonu sağlar.
Buna ek olarak, mikro hizmetler büyük dağıtık geliştirme ekipleri için uygundur – her ekip kendi hizmetiyle ilgilenebilir, bu da koordinasyonu basitleştirir ve sürüm sürecini hızlandırır.
Aynı zamanda, mikro hizmetler küçük projeler veya şirketlerin iç sistemleri için gereksiz bir çözüm olabilir. Bu gibi durumlarda, geliştirme ve destek açısından daha basit ve ucuz olması nedeniyle monolitik mimarinin kullanılması tercih edilir.
Mikroservis mimarisi kullanım örnekleri
Amazon
Mikro hizmetleri benimseyen ilk şirketlerden biri. Amazon’un tüm altyapısı, ürün kataloğu, kullanıcı hesapları, arama, öneriler vb. için yüzlerce bağımsız hizmetten oluşturulmuştur. Bu, Amazon’un artan iş yüklerini karşılamak için kaynakları kolayca ölçeklendirmesine ve mikro hizmet geliştirme yoluyla yeni ürünleri hızla kullanıma sunmasına olanak tanır.
Netflix
Netflix’in yayın hizmeti 800’den fazla mikro hizmete ayrılmıştır. Bunlar video kod dönüştürme, öneriler, arayüzlerin A/B testi ve diğer görevlerden sorumludur. Mikro hizmetlerin esnekliği, Netflix’in trafik arttığında sunucu filosunu hızla genişletmesine ve sistemi tehlikeye atmadan UI/UX ile denemeler yapmasına olanak tanıyor.
Uber
Şirket coğrafi konum belirleme, haritalama, ödeme işleme, lojistik ve daha fazlası için yüzlerce mikro hizmet kullanıyor. Bu, büyük yükler altında sistem güvenilirliği ve esnekliği sağlar ve Uber’in hızla ölçeklenmesine ve yeni pazarlara girmesine olanak tanır.
Sonuçlar
Mikro hizmetler, kurumsal bilgi sistemleri geliştirmek için bir mimari olarak kullanılmaya daha uygun değildir. Böyle bir varyantta, işletme ve bakım açısından aşırı derecede karmaşık bir sistem elde edeceğiz. Ve işletme maliyetlerindeki artış, mikro hizmet mimarisini kullanmanın avantajlarını karşılamayacaktır, çünkü bunlar bir, hatta büyük bir kuruluş içinde tam olarak ortaya çıkmayacaktır.
Mikro hizmetlerin etkili bir şekilde uygulandığı ana alan, çok sayıda kullanıcı için gerçek zamanlı olarak çalışan büyük İnternet hizmetleridir.