Azure Container Apps ve Dapr ile mikro hizmetler dağıtma
Bu makalede, Azure Container Apps'te 10 mikro hizmeti olan bir sipariş yönetim sistemi çalıştırmaya yönelik bir çözüm açıklanmaktadır. Çözüm ayrıca Kubernetes olay temelli otomatik ölçeklendirme (KEDA) ile Dağıtılmış Uygulama Çalışma Zamanı (Dapr) ve olay temelli ölçeklendirme aracılığıyla mikro hizmetlerin en iyi yöntemlerini kullanır.
Dapr ve Traefik, ilgili şirketlerin ticari markalarıdır. Bu işaretlerin kullanılması herhangi bir onay anlamına gelmez.
Mimari
Bu mimarinin PowerPoint dosyasını indirin.
Veri akışı
Bu çözüm, kurgusal bir Red Dog sipariş yönetim sistemini ve destekleyici Azure altyapısını açıklar. Mimari, 10 .NET Core mikro hizmet uygulamasını barındıran tek bir Container Apps ortamından oluşur. Çözüm, Azure kaynaklarıyla yayımlama-abone olma, durum ve bağlama yapı taşları aracılığıyla tümleştirmek için Dapr SDK'sını kullanır. Hizmetler ayrıca olay tetikleyicilerine ve sıfıra ölçeklendir senaryolarına göre ölçeklendirmeye olanak sağlamak için KEDA ölçek kurallarını kullanır.
Aşağıdaki veri akışı önceki diyagrama karşılık gelir:
Traefik: Kullanıcı isteklerini kullanıcı arabiriminden etkileşimli pano için muhasebe ve Makeline hizmetlerine yönlendirmeye yönelik temel ara sunucu.
kullanıcı arabirimi: Red Dog sipariş yönetim sistemi için gerçek zamanlı sipariş ve toplu satış verilerini gösteren bir pano.
Sanal müşteri: Sipariş hizmeti aracılığıyla sipariş veren müşterilerin simülasyonunu sağlayan bir müşteri simülasyon programı.
Sipariş hizmeti: Sipariş vermek ve yönetmek için api oluşturma, okuma, güncelleştirme ve silme.
Muhasebe hizmeti: Sipariş verilerini işleyen, depolayan ve toplayan bir hizmettir. Müşteri siparişlerini kullanıcı arabiriminin sergilediğini anlamlı satış ölçümlerine dönüştürür.
Makbuz hizmeti: Denetim ve geçmişe dönük amaçlarla sipariş makbuzları oluşturan ve depolayan bir arşiv programı.
Sadakat hizmeti: Müşteri ödül puanlarını sipariş harcamalarına göre izleyerek sadakat programını yöneten bir hizmettir.
Makeline hizmeti: Yerine getirilmeyi bekleyen geçerli siparişlerin sırasını yöneten bir hizmet. Sanal çalışan hizmeti tarafından siparişlerin işlenmesini ve tamamlanmasını izler.
Sanal çalışan:Müşteri siparişlerinin tamamlanmasını simüle eden bir çalışan simülasyon programı.
Hizmet | Giriş | Dapr bileşenleri | KEDA ölçek kuralları |
---|---|---|---|
Traefik | Harici | Dapr etkin değil | HTTP |
Kullanıcı arabirimi | Şirket İçi | Dapr etkin değil | HTTP |
Sanal müşteri | Hiçbiri | Hizmet-hizmet çağrısı | Yok |
Sipariş hizmeti | Şirket İçi | Yayımla-abone ol: Azure Service Bus | HTTP |
Muhasebe hizmeti | Şirket İçi | Yayımla-abone ol: Service Bus | Service Bus konu uzunluğu, HTTP |
Makbuz hizmeti | Şirket İçi | Yayımla-abone ol: Service Bus Bağlama: Azure Blob Depolama |
Service Bus konu uzunluğu |
Sadakat hizmeti | Şirket İçi | Yayımla-abone ol: Service Bus Durum: Azure Cosmos DB |
Service Bus konu uzunluğu |
Makeline hizmeti | Şirket İçi | Yayımla-abone ol: Service Bus Durum: Redis için Azure Cache |
Service Bus konu uzunluğu, HTTP |
Sanal çalışan | Hiçbiri | Hizmet-hizmet çağrısı Bağlama: Cron |
Yok |
Not
Bootstrap'i bir kapsayıcı uygulamasında da uygulayabilirsiniz. Ancak, bu hizmet veritabanı oluşturma işlemini gerçekleştirmek için bir kez çalışır ve Azure SQL Veritabanı'nda gerekli nesneleri oluşturduğunda sıfıra ölçeklendirilir.
Bileşenler
Application Insights , canlı uygulamaları izlemek ve performans anomalilerini otomatik olarak algılamak için kullanabileceğiniz genişletilebilir bir uygulama performans yönetimi hizmetidir. Bu mimaride, kapsayıcı günlüklerini görüntülemek ve mikro hizmetlerden ölçüm toplamak için Azure İzleyici ile Application Insights'ı kullanacaksınız.
Blob Depolama , metin veya ikili dosyalar gibi çok büyük miktarlarda yapılandırılmamış verileri depolamak için bulut tabanlı bir çözümdür. Bu mimaride, makbuz hizmeti sipariş makbuzlarını depolamak için Bir Dapr çıkış bağlaması aracılığıyla Blob Depolama'yı kullanır.
Redis için Azure Cache dağıtılmış, bellek içi, ölçeklenebilir yönetilen bir Redis önbelleğidir. Bu mimaride, makeline hizmetinin işlenen siparişlerdeki verileri depolaması için bir Dapr durum deposu bileşeni olarak kullanılır.
Azure Cosmos DB , NoSQL, çok modelli yönetilen bir veritabanı hizmetidir. Bu mimaride, müşterilerin sadakat verilerini depolamak için bağlılık hizmeti için bir Dapr eyalet deposu bileşeni olarak kullanılır.
Azure İzleyici, Azure altyapı ortamlarınızdan müşteri içerik verilerini toplamanızı, analiz etmenizi ve üzerinde işlem yapmanızı sağlayan birleşik bir platformdur. Bu mimaride, kapsayıcı günlüklerini görüntülemek ve mikro hizmetlerden ölçüm toplamak için Application Insights ile Azure İzleyici'yi kullanacaksınız.
Service Bus, kuyrukları ve yayımlama-abone olma konularını içeren tam olarak yönetilen bir kurumsal ileti aracısıdır. Bu mimaride, Dapr publish-subscribe bileşeni uygulaması için Service Bus kullanırsınız. Birden çok hizmet bu bileşeni kullanır. Sipariş hizmeti iletileri otobüste yayımlar ve Makeline, accounting, loyalty ve receipt hizmetleri bu iletilere abone olur.
Container Apps , modern uygulamaları büyük ölçekte derlemek ve dağıtmak için kullanılan, tam olarak yönetilen, sunucusuz bir kapsayıcı hizmetidir. Bu mimaride, 10 mikro hizmetin tümünü Container Apps'te barındırır ve bunları tek bir Container Apps ortamına dağıtırsınız. Bu ortam, sistemin çevresinde güvenli bir sınır görevi görür.
SQL Veritabanı , bulut için oluşturulmuş akıllı, ölçeklenebilir, ilişkisel bir veritabanı hizmetidir. Bu mimaride, veritabanıyla arabirim oluşturmak için Entity Framework Core kullanan muhasebe hizmeti için veri deposu işlevi görür. Önyükleyici hizmeti, veritabanındaKI SQL tablolarını ayarlamakla sorumludur. Ardından muhasebe hizmetiyle bağlantıyı kurmadan önce bir kez çalışır.
Traefik , mikro hizmetleri dağıtmayı kolaylaştıran önde gelen bir modern ters proxy ve yük dengeleyicidir. Bu mimaride, Vue.js tek sayfalı bir uygulama olan kullanıcı arabiriminden yol tabanlı yönlendirme yapmak için Traefik'in dinamik yapılandırma özelliğini kullanın. Bu yapılandırma, test için arka uç hizmetlerine doğrudan API çağrıları da sağlar.
Alternatifler
Bu mimaride, Vue.js API'si için yol tabanlı yönlendirmeyi etkinleştirmek üzere bir Traefik proxy'si dağıtacaksınız. Bu amaçla kullanabileceğiniz birçok alternatif açık kaynak proxy vardır. Diğer iki yaygın proje NGINX ve HAProxy'dir.
SQL Veritabanı dışındaki tüm Azure altyapısı birlikte çalışabilirlik için Dapr bileşenlerini kullanır. Dapr'ın avantajlarından biri, kapsayıcı uygulamaları dağıtım yapılandırmasını değiştirerek tüm bu bileşenleri değiştirebilmenizdir. Bu senaryoda Service Bus, Azure Cosmos DB, Redis için Azure Cache ve Blob Depolama, kullanılabilir 70'ten fazla Dapr bileşeninden bazılarını gösterir. Alternatif yayımlama-abone olma aracılarının, durum depolarının ve çıkış bağlamalarının listesi Dapr belgelerinde bulunur.
Senaryo ayrıntıları
Mikro hizmetler yaygın olarak benimsenen bir mimari stilidir. Ölçeklenebilirlik, çeviklik ve bağımsız dağıtımlar gibi avantajlar sağlar. Mikro hizmet uygulamalarını dağıtmak için kapsayıcıları bir mekanizma olarak kullanabilir ve ardından işlemleri basitleştirmek için Kubernetes gibi bir kapsayıcı düzenleyici kullanabilirsiniz. Büyük ölçekli mikro hizmet mimarileri için dikkate alınması gereken birçok faktör vardır. Altyapı platformu genellikle kapsayıcı düzenleyicileri gibi karmaşık teknolojilerin önemli ölçüde anlaşılmasını gerektirir.
Container Apps , modern uygulamaları büyük ölçekte çalıştırmak için tam olarak yönetilen sunucusuz bir kapsayıcı hizmetidir. Temel alınan platformun özetini kullanarak kapsayıcılı uygulamaları dağıtmanıza olanak tanır. Bu yöntemi kullanarak karmaşık bir altyapıyı yönetmeniz gerekmez.
Bu mimariDepr'in yönetilen sürümüyle Container Apps tümleştirmesini kullanır. Dapr, geliştiricilerin dağıtılmış uygulamalardaki durum yönetimi ve hizmet çağırma gibi doğal zorlukları aşmalarına yardımcı olan açık kaynak bir projedir.
Container Apps ayrıca KEDA'nın yönetilen bir sürümünü de sağlar. KEDA, Service Bus ve Redis için Azure Cache gibi dış hizmetlerden gelen olaylara göre kapsayıcılarınızın otomatik olarak ölçeklendirilmesini sağlar.
Daha fazla Azure ağ kaynağı oluşturmadan Container Apps'te HTTPS girişi de etkinleştirebilirsiniz. Trafik bölme senaryolarına da izin veren Envoy proxy'sini kullanabilirsiniz.
Daha fazla bilgi için bkz. Container Apps'i diğer Azure kapsayıcı seçenekleriyle karşılaştırma.
Bu makalede, Container Apps'te 10 mikro hizmeti olan bir sipariş yönetim sistemi çalıştırmaya yönelik bir çözüm açıklanmaktadır. Çözüm ayrıca KeDA ile Dapr ve olay temelli ölçeklendirme aracılığıyla mikro hizmetlerin en iyi yöntemlerini kullanır.
Olası kullanım örnekleri
Bu çözüm, dağıtılmış sistemler için durum bilgisi olmayan ve durum bilgisi olan mikro hizmetler kullanan tüm kuruluşlar için geçerlidir. Çözüm, sipariş ve karşılama sistemine sahip tüketici paketli mallar ve üretim endüstrileri için en iyisidir.
Aşağıdaki çözümler benzer tasarımlara sahiptir:
- Azure Kubernetes Service (AKS) üzerinde mikro hizmetler mimarisi
- Azure İşlevleri'da mikro hizmetler mimarisi
- Olay temelli mimariler
Dikkat edilmesi gereken noktalar
Bu önemli noktalar, bir iş yükünün kalitesini artırmak için kullanabileceğiniz bir dizi yol gösteren ilke olan Azure İyi Tasarlanmış Çerçeve'nin yapı taşlarını uygular. Daha fazla bilgi için bkz. Well-Architected Framework.
Güvenilirlik
Güvenilirlik, uygulamanızın müşterilerinize sağladığınız taahhütleri karşılayabilmesine yardımcı olur. Daha fazla bilgi için bkz. Güvenilirlikiçin tasarım gözden geçirme denetim listesi
Container Apps, temel alınan altyapı olarak çalışan bir Kubernetes temeli üzerine kurulmuştur. Dayanıklılık mekanizmaları Kubernetes'de yerleşik olarak bulunur ve kapsayıcıları veya sorun varsa podları izler ve yeniden başlatır. Dayanıklılık mekanizmaları, trafiği her kapsayıcı uygulamasının birden çok çoğaltması arasında dağıtan yerleşik bir yük dengeleyici içerir. Bu yedeklilik, bir çoğaltma kullanılamaz duruma gelse bile sistemin çalışır durumda kalmasını sağlar.
Güvenlik
Güvenlik, kasıtlı saldırılara ve değerli verilerinizin ve sistemlerinizin kötüye kullanımına karşı güvence sağlar. Daha fazla bilgi için bkz . Güvenlik için tasarım gözden geçirme denetim listesi.
Aşağıdaki listede, bu mimaride atlanmış olan çeşitli güvenlik özelliklerinin yanı sıra diğer öneriler ve dikkat edilmesi gerekenler özetlenmektedir:
Bu mimari, sanal ağınızdan bir IP adresi atayarak Azure hizmetlerine daha güvenli ve özel bağlantı sağlayan özel uç noktaları kullanmaz. Özel uç noktalar kullanıldığında, genel ağ erişimi devre dışı bırakılabilir. Bu yaklaşım, Trafiği Microsoft omurgası üzerinde tutar ve güvenlik ile uyumluluğu geliştirir.
Kötüye kullanımı algılamak ve önlemek için ağ etkinliği sürekli izlenmelidir. Azure Güvenlik Duvarı ve yönlendirme tabloları kullanarak bu yaklaşımı gerçekleştirebilirsiniz. Yol tabloları, bir sanal ağdan ayrılan trafiğin önce güvenlik duvarından geçirilmesini sağlar. Bu işlem, mimarinizin veri sızdırma saldırılarına karşı savunmasız olmadığından emin olmak için önemli bir adımdır.
Yaygın güvenlik açıklarına karşı koruma sağlamak için bir web uygulaması güvenlik duvarı (WAF) kullanın. Bu mimaride WAF uygulamak için Azure Front Door veya Azure Application Gateway kullanın.
Kolay Kimlik Doğrulaması olarak bilinen Container Apps için yerleşik kimlik doğrulaması ve yetkilendirme özelliğini kullanmayı göz önünde bulundurun. Kolay Kimlik Doğrulaması, kimlik sağlayıcılarını web uygulamanıza tümleştirme işlemini basitleştirir. Web uygulamanızın dışında kimlik doğrulamasını işler, bu nedenle önemli kod değişiklikleri yapmanız gerekmez.
İş yükü kimlikleri için yönetilen kimlik kullanın. Yönetilen kimlik, geliştiricilerin kimlik doğrulama kimlik bilgilerini yönetme gereksinimini ortadan kaldırır. Örneğin, temel mimari bir bağlantı dizesindeki parolayla SQL Server'da kimlik doğrulaması yapar. Mümkün olduğunda, Azure SQL Server'da kimlik doğrulaması yapmak için Microsoft Entra Kimliklerini kullanın.
Maliyet İyileştirme
Maliyet İyileştirme, gereksiz giderleri azaltmanın ve operasyonel verimlilikleri iyileştirmenin yollarına odaklanır. Daha fazla bilgi için bkz. Maliyet İyileştirmeiçin tasarım gözden geçirme denetim listesi.
Bu mimarideki hizmetlerin maliyetini tahmin etmek için Azure fiyatlandırma hesaplayıcısını kullanın.
Operasyonel Mükemmellik
Operasyonel Mükemmellik, bir uygulamayı dağıtan ve üretimde çalışır durumda tutan operasyon süreçlerini kapsar. Daha fazla bilgi için bkz . Operasyonel Mükemmellik için tasarım gözden geçirme denetim listesi.
Container Apps'i izlemek için Azure İzleyici ve Application Insights'ı kullanabilirsiniz. Portalda her kapsayıcı uygulamasındaki Günlükler bölmesine gidip aşağıdaki Kusto sorgusunu çalıştırarak kapsayıcı günlüklerini görüntüleyebilirsiniz. Bu örnekte, Makeline hizmet uygulamasının günlükleri gösterilir.
ContainerAppConsoleLogs_CL |
where ContainerAppName_s contains "make-line-service" |
project TimeGenerated, _timestamp_d, ContainerGroupName_s, Log_s |
order by _timestamp_d asc
Application Insights'taki uygulama haritası, hizmetlerin gerçek zamanlı olarak nasıl iletişim kurdunuzlarını da gösterir. Daha sonra bunları hata ayıklama senaryoları için kullanabilirsiniz. Aşağıdaki haritaya benzer bir şey görüntülemek için Application Insights kaynağının altındaki uygulama haritasına gidin.
Daha fazla bilgi için bkz. Container Apps'te bir uygulamayı izleme.
Performans Verimliliği
Performans Verimliliği, iş yükünüzün kullanıcı taleplerini verimli bir şekilde karşılayacak şekilde ölçeklendirebilmesini ifade eder. Daha fazla bilgi için bkz. Performans Verimliliğiiçin Tasarım gözden geçirme denetim listesi.
Bu çözüm, olay odaklı ölçeklendirme için Container Apps'teki KEDA uygulamasına dayanır. Sanal müşteri hizmetini dağıttığınızda, sürekli siparişler verir. Bu ölçeklendirme, sipariş hizmetinin HTTP KEDA ölçekleyicisi aracılığıyla ölçeği artırmasına neden olur. Sipariş hizmeti siparişleri servis veri yolu üzerinde yayımladıkça, servis veri yolu KEDA ölçekleyicileri muhasebe, makbuz, Makeline ve sadakat hizmetlerinin ölçeğini artırmaya neden olur. Kullanıcı arabirimi ve Traefik kapsayıcı uygulamaları da HTTP KEDA ölçekleyicilerini yapılandırarak uygulamaların panoya daha fazla kullanıcı eriştikten sonra ölçeklendirilmesini sağlar.
Sanal müşteri çalışmadığında, bu çözümdeki tüm mikro hizmetler sanal çalışan ve Makeline hizmetleri dışında sıfır olarak ölçeklendirilir. Sipariş karşılamayı sürekli denetlediğinden sanal çalışan ölçeği azaltmaz. Daha fazla bilgi için bkz. Container Apps'te ölçeklendirme kurallarını ayarlama.
Katkıda Bulunanlar
Microsoft bu makaleyi korur. Bu makaleyi aşağıdaki katkıda bulunanlar yazdı.
Asıl yazar:
- Alice Gibbons | Buluta Özel Küresel Siyah Kuşak
Diğer katkıda bulunanlar:
- Lynn Orrell | Ana Çözüm Uzmanı (GBB)
- Kendall Roden | Üst Düzey Program Yöneticisi
Nonpublic LinkedIn profillerini görmek için LinkedIn'de oturum açın.