Aracılığıyla paylaş


Mikro hizmetler mimarisi

İpucu

Bu içerik, .NET Docs'ta veya çevrimdışı olarak okunabilen ücretsiz indirilebilir bir PDF olarak sağlanan Kapsayıcılı .NET Uygulamaları için .NET Mikro Hizmet Mimarisi e-Kitabı'ndan bir alıntıdır.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

Adından da anlaşılacağı gibi mikro hizmet mimarisi, bir sunucu uygulamasını küçük hizmetler kümesi olarak oluşturmaya yönelik bir yaklaşımdır. Bu, bir mikro hizmet mimarisinin temel olarak arka uca yönelik olduğu anlamına gelir, ancak yaklaşım ön uç için de kullanılır. Her hizmet kendi işleminde çalışır ve HTTP/HTTPS, WebSockets veya AMQP gibi protokolleri kullanarak diğer işlemlerle iletişim kurar. Her mikro hizmet belirli bir bağlam sınırı içinde belirli bir uçtan uca etki alanı veya iş özelliği uygular ve her birinin otonom olarak geliştirilmesi ve bağımsız olarak dağıtılabilmesi gerekir. Son olarak, her mikro hizmet ilgili etki alanı veri modeline ve etki alanı mantığına (egemenlik ve merkezi olmayan veri yönetimi) sahip olmalıdır ve farklı veri depolama teknolojilerini (SQL, NoSQL) ve farklı programlama dillerini temel alabilir.

Mikro hizmet hangi boyutta olmalıdır? Mikro hizmet geliştirirken boyut önemli bir nokta olmamalıdır. Bunun yerine önemli nokta, her hizmet için geliştirme, dağıtım ve ölçeklendirme özerkliğiniz olması için gevşek bir şekilde bağlanmış hizmetler oluşturmak olmalıdır. Elbette, mikro hizmetleri tanımlarken ve tasarlarken, diğer mikro hizmetlerle çok fazla doğrudan bağımlılığınız olmadığı sürece bunları mümkün olduğunca küçük hale getirmeye çalışmanız gerekir. Mikro hizmetin boyutundan daha önemli olan, sahip olması gereken iç uyum ve diğer hizmetlerden bağımsızlığıdır.

Neden mikro hizmet mimarisi? Kısacası, uzun vadeli çeviklik sağlar. Mikro hizmetler, her birinin ayrıntılı ve otonom yaşam döngülerine sahip birçok bağımsız dağıtılabilir hizmeti temel alan uygulamalar oluşturmanıza olanak tanıyarak karmaşık, büyük ve yüksek oranda ölçeklenebilir sistemlerde daha iyi bakım olanağı sağlar.

Ek bir avantaj olarak mikro hizmetler bağımsız olarak ölçeği genişletebilir. Birim olarak ölçeği genişletmeniz gereken tek bir monolitik uygulamaya sahip olmak yerine, bunun yerine belirli mikro hizmetlerin ölçeğini genişletebilirsiniz. Bu şekilde, uygulamanın ölçeklendirilmesi gerekmeyen diğer alanlarını genişletmek yerine talebi desteklemek için yalnızca daha fazla işlem gücüne veya ağ bant genişliğine ihtiyaç duyan işlevsel alanı ölçeklendikleyebilirsiniz. Bu, daha az donanıma ihtiyacınız olduğundan maliyet tasarrufu anlamına gelir.

Diagram of the differences between the two deployment methods.

Şekil 4-6. Monolitik dağıtım ile mikro hizmetler yaklaşımı karşılaştırması

Şekil 4-6'da gösterildiği gibi, geleneksel monolitik yaklaşımda uygulama, uygulamanın tamamını çeşitli sunucularda/VM'de kopyalayarak ölçeklendirilir. Mikro hizmetler yaklaşımında işlevsellik daha küçük hizmetlere ayrılmıştır, böylece her hizmet bağımsız olarak ölçeklendirilebilir. Karmaşık, büyük ve ölçeklenebilir uygulamaların belirli, küçük alanlarını değiştirebildiğiniz için mikro hizmetler yaklaşımı çevik değişikliklere ve her mikro hizmetin hızlı yinelenmesine olanak tanır.

Ayrıntılı mikro hizmet tabanlı uygulamaların mimarisini oluşturma, sürekli tümleştirme ve sürekli teslim uygulamaları sağlar. Ayrıca uygulamaya yeni işlevlerin teslimini hızlandırır. Uygulamaların ayrıntılı bileşimi, mikro hizmetleri yalıtılmış olarak çalıştırmanıza ve test etmenizi ve aralarında net sözleşmeler tutarken bunları otonom olarak geliştirmenizi de sağlar. Arabirimleri veya sözleşmeleri değiştirmediğiniz sürece, herhangi bir mikro hizmetin iç uygulamasını değiştirebilir veya diğer mikro hizmetleri bozmadan yeni işlevler ekleyebilirsiniz.

Aşağıda, mikro hizmet tabanlı bir sistemle üretime geçmekte başarılı olmak için önemli yönler yer alır:

  • Hizmetlerin ve altyapının izleme ve sistem durumu denetimleri.

  • Hizmetler (bulut ve düzenleyiciler) için ölçeklenebilir altyapı.

  • Birden çok düzeyde güvenlik tasarımı ve uygulaması: kimlik doğrulaması, yetkilendirme, gizli dizi yönetimi, güvenli iletişim vb.

  • Hızlı uygulama teslimi, genellikle farklı ekipler farklı mikro hizmetlere odaklanır.

  • DevOps ve CI/CD uygulamaları ve altyapısı.

Bunlardan yalnızca ilk üçü bu kılavuzda ele alınmıştır veya tanıtılmaktadır. Uygulama yaşam döngüsüyle ilgili son iki nokta, Microsoft Platform ve Araçlar ile Kapsayıcılı Docker Uygulama Yaşam Döngüsü e-kitabında ele alınmıştır.

Ek kaynaklar