60'lı ve 70'li yıllarda, yekpare mimari tüm işlevlerin tek bir uyumlu birimde birleştirilmesini gerektiren sınırlı bilgi işlem kaynakları nedeniyle uygulama geliştirmede tercih edildi.
Bu, 90'lı yılların sonlarına ve 2000'li yıllara kadar, özellikle internetin ve dağıtılmış sistemlerin yükselişiyle birlikte monolitik yapının, uygulamaların giderek büyüyen boyutu ve karmaşıklığı için çok sınırlı olmaya başladığı zamana kadardı.
Bu, aşağıdaki gibi daha modüler yaklaşımların geliştirilmesine yol açtı: hizmet odaklı mimariler (SOA) ve daha sonra, mikro hizmet mimarisi (MSA)Sonunda 2010'ların başında öne çıktı.
Bununla birlikte, bu mikro hizmetlerin temel konsepti ve kullanımına ilişkin yalnızca kısa bir açıklamadır. Öyleyse mikro hizmetlerin monolitik mimarinin yerini nasıl aldığını, mikro hizmetlerin nasıl çalıştığını ve bazı mikro hizmet örneklerini tartışalım. Daha sonra, mikro hizmet dağıtımının temel yönlerini ve mikro hizmetleri dağıtmak istiyorsanız ne yapmanız gerektiğini tartışacağız.
Mikro Hizmetler Nelerdir? Nasıl Çalışırlar?
Daha önce de belirttiğim gibi mikro hizmetler, artan uygulama karmaşıklığına ve boyutuna bir çözüm olarak ortaya çıktı ve şirketlerin işlevleri bağımsız olarak dağıtılabilir hizmetlere ayırmasına olanak tanıdı.
"Mikro hizmetler" terimi, Martin Fowler ve James Lewis gibi sektör uzmanları tarafından popüler hale getirildi ve bu uzmanlar bu terimi 2014 yılında bir blog yazısında resmen tanıttılar. Çalışmaları, bağımsız olarak konuşlandırılabilen hizmetlere olan ihtiyaç, merkezi olmayan veri yönetimi ve teknoloji agnostisizmi de dahil olmak üzere temel ilkeleri ve özellikleri tanımladı.
O zamandan beri mikro hizmetler, teknolojideki gelişmelerle desteklenen ana mimari tercih haline geldi. Docker gibi konteynerleştirme teknolojileri, Kubernetes gibi düzenleme araçları ve sunucusuz bilgi işlem platformları. Peki mikro hizmetler nasıl çalışır?
Mikro Hizmetler Nasıl Çalışır?
Mikro hizmet mimarisi, özünde büyük bir uygulamayı, her biri belirli bir iş yeteneğinden sorumlu olan daha küçük, farklı hizmetlere böler. Bu hizmetler birbirleriyle genellikle REST API'leri, gRPC veya RabbitMQ veya Apache Kafka gibi mesaj aracıları aracılığıyla bir ağ üzerinden iletişim kurar.
Martin Fowler ve James Lewis'in tanımına göre mikro hizmetlerin tümü aşağıdaki dört temel özelliğe sahiptir:
- Tek Sorumluluk: Her mikro hizmet, uzmanlaşmaya olanak tanıyacak ve karmaşıklığı azaltacak şekilde belirli bir görevi veya işlevi gerçekleştirmek üzere tasarlanmıştır.
- Bağımsızlık: Mikro hizmetler birbirlerinden bağımsız olarak geliştirilebilir, dağıtılabilir ve ölçeklendirilebilir; bu da esneklik ve dayanıklılık sağlar.
- Merkezi Olmayan Veri Yönetimi: Mikro hizmetlerin genellikle kendi veritabanları vardır, bu da tek bir merkezi veritabanı ihtiyacını ortadan kaldırır.
- Teknoloji Agnostisizmi: Ekipler, diğer hizmetlerin tercihlerine bağlı kalmadan her hizmet için en iyi teknolojiyi seçebilir.
Bu yaklaşım, tüm uygulama bileşenlerinin tek ve uyumlu bir birime sıkı bir şekilde entegre edildiği geleneksel monolitik mimariyle tezat oluşturuyor.
Mikro Hizmet Dağıtımının Temel Aşamaları
Bir mikro hizmet mimarisi, yüksek ölçeklenebilirlik, esneklik, verimlilik, hata izolasyonu vb. gibi sayısız avantaj sunarken, mikro hizmetlerin etkili bir şekilde nasıl dağıtılacağını bilmeyi ve başarılı olması için iyi bir planlama gerektirir.
Bu nedenle, mikro hizmetlerin dağıtımında temel kavramlar, aşamalar ve mikro hizmetlerin en iyi uygulamaları hakkında kapsamlı bir fikre sahip olmak, başarılı bir mikro hizmet mimarisi için çok önemlidir. Şimdi mikro hizmet dağıtımının temel aşamalarını ve her aşamanın neleri gerektirdiğini inceleyelim.
Mikro Hizmetlerin Dağıtımını Planlama ve Hazırlama
Tüm iyi şeyler planlama ve sabır gerektirir ve mikro hizmetleri başarılı bir şekilde dağıtmak için kesinlikle çok fazla planlama ve sabra ihtiyacınız olacak. Bu nedenle mikro hizmetlerin en iyi uygulamalarını takip etmek ve mikro hizmetleri dağıtırken ihtiyacınız olan her şeyi planlayıp hazırlamak önemlidir.
Daha önce de belirttiğim gibi mikro hizmetlerin temel prensip ve özelliklerinden biri Tek Sorumluluk Prensibi. Bu prensibe sadık kalarak ve her mikro hizmetin tek bir işleve ve yeteneğe odaklandığından ve bunlardan sorumlu olduğundan emin olarak ekibinizin hizmetleri bağımsız olarak geliştirmesine, dağıtmasına ve ölçeklendirmesine olanak tanırsınız.
Ayrıca bu prensibin bir alt kategorisi de gevşek kaplin tasarım prensibi. Bu, her hizmetin iletişim için bağımsız olarak çalışabileceği ve diğer hizmetlere minimum düzeyde bağımlı olduğu anlamına gelir. Bu da bir hizmette yapılan değişikliklerin veya güncellemelerin diğer hizmetleri etkilememesine olanak tanıyarak mikro hizmetlerin bağımsız ölçeklendirilmesine olanak tanır.
Bu, sistemin bir bölümündeki bir sorun veya arızanın zincirleme bir reaksiyonu tetiklediği, sistem genelinde arızalara yol açan ve tüm hizmetin çökmesine neden olan ardışık arıza riskini azaltır.
Önemli bir mikro hizmet uygulaması, gevşek bağlantı tasarım ilkesinin bir uzantısı olarak mikro hizmetler dağıtılırken her hizmet için özel veri depolama alanına sahip olmaktır; bu, çatışmaları önler ve daha iyi hizmet ölçeklenebilirliğine olanak tanır.
Ek olarak, her hizmetin doğrudan bağımlılıklar olmadan iletişim kurabilmesini sağlamak için mesaj aracıları gibi eşzamansız mikro hizmet iletişim modellerine ihtiyacınız olacak.
Bulmacanın son parçası, mikro hizmetler için Sürekli Entegrasyon ve Sürekli Teslimat (CI/CD) işlem hatlarını uygulamaktır. Bu işlem hatları, ekiplerin yeni özellikleri veya düzeltmeleri dağıtmasına olanak tanır. CI/CD araçları Jenkins ve GitLab gibi kuruluşların sık sık yeni özellikler sunarken sistem istikrarını korumalarına olanak tanır.
Artık mikro hizmet dağıtımı için gerekli planlama ve hazırlık hakkında genel bir fikriniz olduğuna göre, mikro hizmet dağıtım stratejilerinden bahsedelim.
Mikro Hizmet Dağıtım Stratejileri
Mikro hizmetleri dağıtırken bir dağıtım stratejisi seçmek, hizmet işlevine, trafiğe, altyapı kurulumuna, ekip uzmanlığına ve maliyet hususlarına bağlıdır. Ancak genel olarak mikro hizmet dağıtım stratejileri aşağıdaki gibidir:
- Konteyner Başına Hizmet Eşgörünümü: Bu yaklaşımda, her mikro hizmet kendi kapsayıcısında çalışır ve ana bilgisayar modeli başına birden fazla örnekten daha iyi izolasyon sunar. Kapsayıcılar kolay ölçeklendirmeyi kolaylaştırır ve kaynak tahsisini iyileştirir.
- Sanal Makine Başına Hizmet Örneği: Her hizmet ayrı bir sanal makinede (VM) çalışır ve konteynerlerden daha fazla izolasyon sağlar. Bu, güvenliği ve kararlılığı artırırken, genellikle daha fazla yüke neden olur.
- Aşamalı Sürümler: Başlangıçta, mikro hizmet sürümlerini küçük bir kullanıcı alt kümesine dağıtın ve tam kullanıma sunmadan önce kararlılıklarını test edin. Bu yaklaşım, sorunların ortaya çıkması durumunda etkiyi en aza indirir ve sistem bütünlüğünü korumak için hızlı geri alma işlemlerine olanak tanır.
- Mavi-Yeşil Dağıtım: Bu yöntem iki özdeş üretim ortamını kullanır; bir ortam canlı trafiğe hizmet ederken diğeri bir sonraki sürümü test etmek için kullanılır. Mavi-yeşil dağıtım, trafik iki ortam arasında sorunsuz bir şekilde değiştirilebildiğinden, kolay geri alma işlemlerine ve sıfır kesinti süreli güncellemelere olanak tanır.
- Aşamalı Yayınlar: Bu strateji, güncellemelerin farklı kullanıcı segmentlerine veya ortamlarına kademeli olarak dağıtılmasını içerir. Genellikle üretime ulaşmadan önce iç ortamlarla başlar, olası sorunların patlama yarıçapını sınırlandırır ve ekiplerin sorunları aşamalı olarak ele almasına olanak tanır.
- Sunucusuz Dağıtım: Bu yaklaşım, sizin için ölçeklendirme ve kaynak tahsisini gerçekleştirerek altyapı yönetimini otomatikleştiren AWS Fargate ve Google Cloud Run gibi sunucusuz platformlardan yararlanır. Sunucusuz dağıtım sayesinde, temel sunucuları yönetmeye gerek kalmaz ve mikro hizmetlerinize odaklanmanıza olanak tanır.
Mikro hizmetleri dağıtmak için yukarıdaki mikro hizmetlerden birini seçtikten sonra, bir mikro hizmet düzenleme aracına ihtiyacınız olacaktır.

Mikro Hizmet Düzenlemesi
Birçok mikro hizmet dağıtım stratejisinden birini seçtikten sonra, mikro hizmet orkestrasyonu için bir tür iletkene ihtiyacınız olacak. Mikro hizmet düzenleme araçları, örneğin Kubernet'ler, mikro hizmet dağıtımını, mikro hizmetleri ölçeklendirmeyi, mikro hizmetleri izlemeyi ve kapsayıcıya alınmış mikro hizmetlerin yönetimini otomatikleştirmeye yardımcı olur.
Örneğin Airbnb, Kubernetes'i kullanarak mühendislerinin mikro hizmetlerinde manuel gözetim olmadan yüzlerce değişiklik yapmasına olanak tanıyor. Kubernetes gibi mikro hizmet düzenleme araçlarının önemli özelliklerinden biri de yerleşik yük dengelemesidir.
Yetkili bir yük dengeleme özelliğine sahip olmak, gelen trafiğin bir mikro hizmetin birden çok örneğine dağıtılmasına yardımcı olur. Bu, herhangi bir örneğin darboğaza dönüşmesini önler ve sistemin talepteki ani artışlarla başa çıkma becerisini artırır.
Kubernetes, arızalı konteynerlerin otomatik olarak değiştirildiği ve yeniden başlatıldığı kendi kendini iyileştirme özellikleri sayesinde mikro hizmetlerin yönetilmesinde önemli bir rol oynar. New York Times, mikro hizmetlerini kullanıcı deneyimini etkilemeden ve kesinti yaşamadan sürdürmek için bu özellikten yararlanıyor.
Ayrıca Kubernetes, ConfigMaps ve Secrets'ı kullanarak veritabanı kimlik bilgileri veya API anahtarları gibi yapılandırmalar ve sırlar olarak mikro hizmet güvenliğini de geliştirir. Bu, Uber gibi hassas müşteri ve kullanıcı bilgileriyle ilgilenen şirketler ve hizmetler için özellikle önemlidir.
Son olarak, Kubernetes gibi mikro hizmet düzenleme araçları, aşamalı sürümler gibi sürekli güncellemeleri ve geri almaları içeren mikro hizmet stratejileri için özellikle faydalıdır. Devam eden güncellemeler, eski sürümün bazı örneklerinin çalışır durumda kalmasını sağlayarak yeni mikro hizmet sürümlerinin hizmet kesintisi olmadan dağıtılmasına olanak tanır.
Mikro hizmet düzenleme aracınızı kurduktan sonra, oluşturmanız ve otomatikleştirmeniz gerekecektir. CI/CD ardışık düzenleri Mikro hizmetlerin dağıtımı için.
Mikro Hizmet Dağıtımı için CI/CD İşlem Hatları
Daha önce de bahsettiğimiz gibi, mikro hizmetler için Sürekli Entegrasyon ve Sürekli Teslimat işlem hatları, mikro hizmetlerin dağıtımının önemli yönleridir. CI/CD işlem hatlarındaki CD işlem hatları, CI/CD işlem hattının test ve entegrasyon aşamalarını geçer geçmez kod değişikliklerinin üretime otomatik olarak dağıtılmasından sorumludur.
Ardından, CI/CD işlem hatlarının CD kısmı devreye giriyor, böylece kod değişiklikleri test ve entegrasyon aşamalarını geçtiğinde, hizmet Kubernetes kümesi gibi bir mikro hizmet düzenleme aracına dağıtılıyor.
Ayrıca birim testleri, entegrasyon testleri ve uçtan uca testler boru hattına dahil edildiğinden test ve entegrasyon aşamalarının tümü CI/CD işlem hatları tarafından otomatik olarak yapılır.
Bu, ekiplerin sistem kararlılığını korurken her aşamada güncellemeleri doğrulamasına olanak tanır. Ayrıca, çeşitli testlere rağmen kod değişiklikleriyle ilgili herhangi bir sorun olması durumunda, otomatik geri alma işlemleri önceki kararlı sürüme geri dönebilir.
Son olarak, mikro hizmetlerin en iyi uygulamalarına göre mikro hizmetler için CI/CD ardışık düzenlerinin uygulanması, kuruluşların daha hızlı geliştirme yapmasına, manuel hataları azaltmasına ve yüksek kalite standartlarını korumasına yardımcı olur.
Spotify, Expedia, iRobot, Lufthansa, Pandora vb. gibi birçok şirket, dağıtım süreçlerini otomatikleştirmek, tutarlı kod kalitesi sağlamak ve sistem kararlılığını korurken hızla yeni özellikler sunmak için CircleCI, AWS CodePipeline ve GitLab gibi CI/CD araçları aracılığıyla mikro hizmetler için CI/CD işlem hatlarını kullanıyor.
Mikro Hizmetler İletişim Kalıpları
Mikro hizmetlerin birbirleriyle nasıl iletişim kurduğu tamamen işleve, genel mimariye, istenen ölçeklenebilirliğe ve mikro hizmetlerinizin güvenilirliğine bağlıdır. Genel olarak iki ana tür mikro hizmet iletişim modeli kullanılır: senkron Ve asenkron mikro hizmetler iletişim kalıpları.
Senkronize mikro hizmet iletişim modellerinde, hizmetler gerçek zamanlı olarak etkileşime girer; bu, hizmetin bir istek göndereceği ve devam etmeden önce yanıt bekleyeceği anlamına gelir. En yaygın kullanılan eşzamanlı mikro hizmet iletişim kalıpları şunlardır: REST (Temsili Durum Aktarımı) API'leri, gRPC (Google Uzaktan Prosedür Çağrısı), Ve GrafikQL.
Tipik olarak bu tür mikro hizmet iletişim kalıpları, gerçek zamanlı veri işleme ve anında yanıt gerektiren sektörlerde ve şirketler tarafından kullanılır. Finans, sağlık hizmetleri ve e-ticaret gibi sektörler, işlemlerin, veri alımının veya etkileşimlerin anında gerçekleşmesini sağlamak ve sorunsuz ve duyarlı bir kullanıcı deneyimi sağlamak için sıklıkla eşzamanlı iletişim modellerini kullanır.
Bununla birlikte, eşzamanlı mikro hizmet iletişim modelleri, gerçek zamanlı yanıtlar ve basitlik gibi avantajlar sunarken, aynı zamanda sıkı bağlantılarından dolayı potansiyel darboğazlar, yüksek yükler altında düşük ölçeklenebilirlik, yavaş yanıt süreleri ve yüksek trafik örnekleri sırasında yüksek gecikme gibi bazı dezavantajlara da sahiptir.
Öte yandan, asenkron mikro hizmet iletişim kalıpları, daha önce tartıştığımız Gevşek Bağlantı ilkesine dayandıkları için genellikle mikro hizmetler için daha uygundur.
Bu tür mikro hizmet iletişim modeli, hizmetleri Kafka veya RabbitMQ gibi bir aracı aracılığıyla mesaj gönderip almalarına izin vererek ayırır. Servisler, tampon görevi gören bir kuyruğa mesaj göndererek, senkronize iletişim modellerinde olduğu gibi yanıt beklemek yerine bağımsız olarak iletişim kurar. Bu arabellek, diğer hizmetlerin mesajları kendi hızlarında işlemesine olanak tanıyarak gönderenin, alıcıyı beklemeden işine devam etmesine olanak tanır.
Eşzamansız mikro hizmet iletişim modeli yalnızca mikro hizmet dağıtımı için ayrılmış bir yapı sunmakla kalmaz, aynı zamanda eşzamanlı mikro hizmet iletişim modellerinin sunduğu aynı gerçek zamanlı yanıtı da sunar.
Bunun nedeni, hizmetlerin belirli bir eylem gerçekleştiğinde olaylar yayarak iletişim kurması nedeniyle eş zamanlı olmayan olaya dayalı mikro hizmet iletişim modellerinin olaya dayalı mimarisidir. Diğer hizmetler bu olaylara abone olabilir ve buna göre tepki verebilir. Bu, hizmetler arasında doğrudan bağlantı olmadan, değişikliklere gerçek zamanlı olarak tepki veren, oldukça duyarlı sistemlere olanak tanır.
Ayrıca asenkron olarak Yayınla-Abone Ol (Yayın/Abone Ol) mikro hizmetlerin iletişim kalıpları, hizmetler (yayıncılar) bir konuya mesaj gönderir ve diğer hizmetler (aboneler) güncellemeleri almak için o konuyu dinler. Bu model birden fazla aboneyi destekler ve aynı anda birçok hizmete mesaj yayınlar.
Son olarak, olaya dayalı kalıplara benzer şekilde, eşzamansız koreografiye dayalı destan Mikro hizmetlerin iletişim kalıpları aynı zamanda birbirleriyle iletişim kurmak için olayları kullanır; ancak bu modelde belirli bir düzen mevcuttur; bu, olayların bir sonraki adımı ve belirli bir hizmetin etkinleştirilmesini tetiklediği anlamına gelir.
Buradaki fark, olay odaklı kalıplarda belirli bir sıra veya iş akışının olmaması ve koreografi tabanlı destan kalıbında belirli bir süreç ve düzen yerine birden fazla hizmetin bir olaya tepki verebilmesidir.
Hangi tür eşzamansız mikro hizmet iletişim modelini kullanacağınız, mikro hizmetlerinizin görevine ve genel işlevine bağlıdır. RabbitMQ ve Amazon SQS gibi mesaj kuyrukları genellikle görev planlama, iş yükü dağıtımı ve sipariş işleme ve bildirim sistemlerine yönelik e-ticaret için kullanılır.
Apache Kafka ve AWS EventBridge gibi olay odaklı mesaj aracıları, genellikle büyük ölçekli olay akışlarını gerçek zamanlı olarak işlemek ve finansal hizmetler ile AWS ortamları gibi alanlardaki mikro hizmetler arasında olay yönlendirmek için kullanılır.
Google Cloud Pub/Sub ve Redis Streams gibi Yayınla-Abone Ol (Pub/Sub) mesaj aracılarına gelince, bu mesaj aracıları genellikle gerçek zamanlı analiz ve etkinlik alımı ile gerçek zamanlı bildirimler ve sohbet uygulamaları için dağıtılmış sistemlerde ölçeklenebilir mesajlaşma için kullanılır.
Son olarak, koreografi tabanlı destan mesaj komisyoncuları esas olarak e-Ticaret sipariş işleme, seyahat rezervasyon sistemleri ve karmaşık, çok adımlı işlemlerin merkezi kontrol olmadan birden fazla hizmet arasında koordine edilmesi gereken kullanım durumları için kullanılır.

Mikro Hizmet Hizmet Keşfi
İhtiyaçlarınıza uygun bir iletişim modeli kurup uyguladıktan sonra, ilk etapta hizmetlerinizin birbirini bulabildiğinden emin olmanız gerekir. Daha önce de belirttiğim gibi Kubernetes gibi mikro hizmet düzenleme araçları, mikro hizmet hizmet keşfinde önemli bir rol oynamaktadır.
Bu, Kubernetes DNS'nin sağladığı, hizmetler ölçeklendiğinde veya küme içindeki konum değiştikçe IP adreslerini ve DNS kayıtlarını dinamik olarak güncelleyen yerleşik hizmet keşfi aracılığıyla gerçekleştirilir.
Mikro hizmet hizmet keşfinin bu yöntemine, yönlendirme sorumluluğu bir yük dengeleyiciye devredildiğinden, sunucu tarafı keşfi adı verilir; yük dengeleyici daha sonra kayıt defterini sorgular ve trafiği uygun örneğe yönlendirir.
Öte yandan, mikro hizmet hizmeti keşfi için, hizmetin veya API ağ geçidinin kullanılabilir örnekleri bulmak için Consul veya Eureka gibi bir hizmet kaydını sorguladığı istemci tarafı keşif yöntemimiz de vardır.
Mikro hizmet dağıtımınız için hangi hizmet bulma yönteminin en iyi olduğunu seçmek, sistemin gereksinimlerine ve ölçeğine bağlıdır.
İstemci tarafı mikro hizmet hizmeti keşfiyle istemci, hangi bulut sunucusuyla iletişim kurduğu üzerinde tam kontrole sahip olur. Bu, yalnızca daha fazla özelleştirmeye izin vermekle kalmaz, aynı zamanda merkezi bir keşif hizmetine gerek olmadığından karmaşıklığı da azaltır.
Örneğin, Netflix'in mikro hizmet dağıtımı, yük dengeleme için Eureka ve Ribbon ile istemci tarafı mikro hizmet hizmeti keşfini kullanarak müşterinin gecikme ve sunucu yükü gibi kriterlere göre en iyi örneği seçmesine olanak tanır.
Bununla birlikte, merkezi bir hizmet keşfi verimliliği artırabildiğinden ve dağıtılmış bir sistem genelinde tutarlı yük dengelemeye olanak tanıdığından, sunucu tarafı mikro hizmet hizmet keşfi daha büyük ortamlar için daha uygundur.
Kubernetes, AWS Elastic Load Balancing ve API Ağ Geçitleri (Kong, NGINX vb.) gibi sunucu tarafı mikro hizmet hizmeti keşif çözümleri, trafiği verimli bir şekilde yönlendirmeye ve yüksek kullanılabilirliği korumaya yardımcı olur ve Airbnb, Pinterest, Expedia, Lyft vb. şirketler tarafından kullanılır.
Mikro Hizmet Güvenliği
Monolitik mimari çoğunlukla MSA'dan daha düşük seviyede olsa da monolitik mimarinin üstün olduğu yönlerden biri de güvenlikti. Mikro hizmetler Gevşek Bağlantı prensibi üzerine kurulduğundan ve doğada dağıtıldığından tekil, genel bir güvenlik önlemi uygulanamaz.
Her hizmetin bağımsız olarak güvence altına alınması gerektiğinden, mikro hizmetlerde saldırı yüzeyi çok daha büyük olduğundan ek korumalar gereklidir. Bu amaçla, tahmin edebileceğiniz gibi kimlik doğrulama ve yetkilendirme için OAuth2 ve JSON Web Tokens (JWT) gibi standartlar yaygın olarak kullanılıyor.
Ek olarak, giriş noktasında kimlik doğrulama ve yetkilendirmeyi zorunlu kıldığından mikro hizmetler genelinde güvenliği yönetmek için sıklıkla bir API ağ geçidi kullanılır. Ayrıca, ağ geçidi API'leri aynı zamanda ek mikro hizmet güvenliği katmanları sağlayan hız sınırlama, günlük kaydı ve izleme de uygulayabilir.
Bunlar ana giriş noktasını güvence altına alırken, hizmetler arası iletişimi kapsamak için daha fazla mikro hizmet güvenlik önlemi gereklidir.
Burası, bir ağ mikro hizmet güvenliği katmanı ekledikleri, hizmetler arasındaki trafiği şifreledikleri ve karşılıklı TLS gibi politikaları uyguladıkları için hizmet ağlarının devreye girdiği yerdir. Bu sunucu ağları temel olarak mikro hizmet güvenliğini önemli ölçüde artıran kapsamlı bir uçtan uca şifreleme oluşturur.
Mikro Hizmet Ölçeklendirme
MSA'nın en büyük avantajlarından biri ve monolitik mimarinin yerini alacak şekilde geliştirilmesinin nedeni, yüksek ölçeklenebilirliğidir. Tipik olarak mikro hizmetlerin ölçeklendirilmesi iki şekilde gerçekleşebilir: dikey ve yatay.
Temel olarak, dikey mikro hizmet ölçeklendirmesi (ölçek büyütme), mevcut bir örneğe CPU veya bellek gibi daha fazla kaynak eklemektir. Alternatif olarak, yatay mikro hizmet ölçeklendirmesi (ölçek genişletme) yükü dağıtır ve kapasiteyi artırır.
Uygulama açısından, dikey mikro hizmet ölçeklendirmesi ikisinden daha kolaydır, çünkü tek yapmanız gereken daha büyük bir sunucuya yükseltme yaparak, bir bulut örneğinde belleği veya işlem gücünü artırarak veya daha fazla depolama ekleyerek tek bir örneği değiştirmektir.
Bu tür ölçeklendirme genellikle RAM veya CPU gücünün artırılmasının, bellek içi önbelleğe alma işleminden sorumlu hizmetler gibi sorgu performansını ve veri işlemeyi iyileştirebildiği durumlarda kullanılır.
Bununla birlikte, dikey mikro hizmet ölçeklendirmesi daha kolay olsa ve anında performans artışı sağlasa da dezavantajları da vardır. Dikey ölçeklendirme, sunucunun donanım kapasitesiyle sınırlıdır; bu nedenle, bir noktada dikey ölçeklendirmeye devam etmek için yatay ölçeklendirmeye geçmeniz gerekecektir.
Ayrıca, donanım ve daha büyük örnekler genellikle yüksek fiyat etiketiyle geldiğinden dikey ölçeklendirmenin maliyetleri yüksektir. Son olarak, büyütülmüş örnek başarısız olursa, yükü kaldıracak ek örnek olmadığından hizmet tamamen kapatılır.
Yatay mikro hizmet ölçeklendirmesi için tek bir örneğin kaynağını yükseltmek yerine o hizmetin yeni örneklerini dağıtırsınız. Bu örnekler bağımsız olarak çalışsa da aynı hizmeti ve aynı iş yükünün parçalarını işlemeye devam ederler.
Dikey ölçeklendirmenin aksine, yatay mikro hizmet ölçeklendirme sınırsızdır; bu, artan iş yükleri ve trafik artışlarıyla başa çıkmak için istediğiniz kadar örnek ekleyebileceğiniz anlamına gelir ve daha fazla ölçeklenebilirlik sunar.
Üstelik birden fazla örneğiniz olduğundan, biri bozulursa tüm yumurtalarınızı tek bir sepete koymazsınız çünkü diğer örnekler istekleri karşılamaya devam edebilir. Son olarak, daha güvenilir, daha güçlü bir performans oluşturmak için daha küçük ve daha ucuz birkaç örnek kullanabileceğiniz için yatay ölçeklendirme uzun vadede çok daha uygun maliyetlidir.
Bununla birlikte, yatay ölçeklendirme ve daha fazla örnek eklemek, daha fazla yük dengeleyici, mikro hizmet hizmet keşif mekanizması ve mikro hizmet orkestrasyon aracı gerektirerek mikro hizmet mimarinizi çok daha karmaşık hale getirir.
Yatay ölçeklendirme, genellikle dalgalanan trafik ve yüksek hacimli isteklerle karşılaşan web hizmetleri ve e-ticaret veya sosyal medya platformları gibi uygulamalar gibi kullanım durumları için daha uygundur.
Bununla birlikte, her iki ölçeklendirme türü de mikro hizmetlerde desteklendiğinden ve birçok durumda gerekli olduğundan, aslında bu bir durum ya da durum değildir. Tipik olarak küçük kuruluşlar, uygulanması ve yönetilmesi çok daha kolay olduğundan dikey ölçeklendirmeyi kullanır, ancak zamanla ve uygulama büyüdükçe, yoğun talebi karşılamak için yatay ölçeklendirme kullanılmaya başlanır.
Son olarak, bulut platformları, gerçek zamanlı talebe göre örnekleri otomatik olarak ekleyen veya kaldıran otomatik ölçeklendirme hizmetleri sunar; bu da kuruluşların dikey ve yatay ölçeklendirmeyi dengelemesine önemli ölçüde yardımcı olur.
Mikro Hizmet İzleme
Bu aşamada mikro hizmet dağıtımınızı büyük ölçüde tamamladınız; geriye kalan tek şey tutarlı ve güvenilir bir şekilde çalıştığından emin olmaktır. Mikro hizmet izleme araçlarının bulunduğu yer burasıdır Prometheus ve Grafana içeri girin.
Bu araçlar, ekiplerin kaynak kullanımını, gecikmeyi ve hata oranlarını takip edebilmesi için hizmet ölçümlerine ilişkin gerçek zamanlı bilgiler sağlar. Ayrıca bu araçlar, hizmetler arasındaki istek akışlarının görselleştirilmesine yardımcı olan ve sorunların teşhis edilmesinde büyük ölçüde faydalı olabilecek dağıtılmış izleme (Jaeger, Zipkin vb.) de sunar.
Son olarak, mikro hizmetlerin dağıtılmış tasarımı nedeniyle hatalar hizmetler arasında art arda yayılabileceğinden, günlük toplama, mikro hizmet izlemede kritik bir uygulamadır. Günlükleri merkezi bir platformda birleştirerek ve gerçek zamanlı uyarılar ayarlayarak, sorunların her zaman iki adım önünde olursunuz ve kullanıcıları etkilemeden önce bunlara proaktif olarak yanıt verebilirsiniz.
Son Düşünceler
Mikro hizmet dünyasını anlamak kesinlikle zor olsa da, mikro hizmet dağıtımının temellerini ve temel aşamalarını anlamak tüm süreci çok daha kolaylaştırabilir. Ayrıca, yıllar geçtikçe, önemli ölçüde daha fazla özelliğe sahip giderek daha fazla araç kullanımınıza sunuluyor ve bu da mikro hizmetlerin dağıtımını her zamankinden daha kolay hale getiriyor.
SSS
Mikro hizmetler için yaygın olarak hangi dağıtım stratejileri kullanılır?
Mikro hizmet dağıtımı için pek çok farklı strateji olsa da en sık kullanılan dağıtım stratejileri arasında konteyner başına hizmet örnekleri, aşamalı sürümler, mavi-yeşil dağıtım ve sunucusuz dağıtım yer alır ve bunların her biri farklı düzeyde izolasyon, esneklik ve ölçeklenebilirlik sunar.
Mikro hizmetlerin düzenlenmesinde Kubernetes'in rolü nedir?
Mikro hizmetler, konteynerli hizmetlerin dağıtımını otomatikleştirmek, ölçeklendirmek ve yönetmek için Kubernetes gibi mikro hizmet düzenleme araçlarına bağımlıdır; esnek ve verimli mikro hizmetler sağlamak için yük dengeleme, otomatik ölçeklendirme ve kendi kendini iyileştirme yetenekleri sağlar.
Mikro hizmet ortamında güvenliği nasıl sağlayabilirim?
Dağıtılmış doğaları nedeniyle mikro hizmetler, güvenlik söz konusu olduğunda monolitik mimariye göre daha karmaşıktır. Mikro hizmetlerde güvenlik, isteklerin doğrulanmasını ve yetkilendirilmesini, hizmetler arası iletişimin şifrelenmesini ve merkezi güvenlik yönetimi için API ağ geçitlerinin ve Istio gibi hizmet ağlarının uygulanmasını içerir.