Aracılığıyla paylaş


Mikro hizmetleri Azure Container Apps'e dağıtma

Azure Container Apps
Azure Cosmos DB
Azure Service Bus

Bu senaryoda başlangıçta Kubernetes için tasarlanmış olan ve Azure Container Apps'te çalıştırılacak şekilde yeniden hazırlanmış mevcut bir iş yükü gösterilmektedir. Container Apps, ekiplerin altyapıyı ve konteyner düzenlemeyi basitleştirmek istediği durumlarda brownfield iş yüklerini destekler.

Örnek iş yükü kapsayıcılı mikro hizmetler uygulamasıdır. Azure Kubernetes Service (AKS) üzerindeki Mikro hizmetler mimarisinde tanımlanan iş yükünü yeniden kullanır. Bu mimari, iş yükünü uygulama platformu olarak Container Apps üzerinde yeniden barındırır.

Önemli

Bu mimari, uygulama kodu değişikliklerini en aza indirmeye ve aks'den Container Apps'e platform geçişi olarak geçişe yaklaşmaya odaklanır. Amaç, mevcut uygulamayı çoğaltmak ve geçişi tehlikeye atabilecek kod veya altyapı iyileştirmelerini ertelemektir.

Yeni kurulum iş yükü için bkz. Container Apps ve Dapr kullanarak mikro hizmetleri dağıtın.

İpucu

Örnek bir uygulama bu mimariyi destekler ve bu makalede açıklanan bazı tasarım seçeneklerini gösterir.

Mimari

Çözümün çalışma zamanı mimarisini gösteren diyagram.

Bu mimarinin bir Visio dosyasını indirin.

Aynı ortam avantajını aşağıdaki yollarla paylaşan hizmetler:

  • İç giriş ve hizmet bulma
  • Çalışma zamanı günlüğü için tek bir Log Analytics çalışma alanı
  • Gizli bilgiler ve sertifikalar için güvenli bir yönetim yöntemi

Veri akışı

  1. Alım hizmeti: İstemci isteklerini alır, arabelleğe alır ve ardından Azure Service Bus'ta yayımlar. İş yükündeki tek giriş noktasıdır.

  2. İş akışı hizmeti: Service Bus'tan gelen iletileri tüketir ve temel mikro hizmetlere iletir.

  3. Paket hizmeti: Paketleri yönetir. Hizmet, Azure Cosmos DB'de kendi durumunu korur.

  4. İnsansız hava aracı zamanlayıcı hizmeti: İnsansız hava araçlarını zamanlar ve uçuşta insansız hava araçlarını izler. Hizmet, Azure Cosmos DB'de kendi durumunu korur.

  5. Teslim hizmeti: Zamanlanmış veya aktarımlı teslimatları yönetir. Hizmet, Azure Yönetilen Redis'te kendi durumunu korur.

  6. Gizli bilgilerin alınması: Bu mevcut bir iş yükü olduğundan, çalışma zamanı gizli bilgilerini almak için Azure Key Vault'a yalnızca bazı bileşenler erişebilir. Diğer hizmetler bu gizli bilgileri Container Apps ortamından alır.

  7. Günlükler ve ölçümler: Ortam ve tüm kapsayıcı uygulamaları, Azure İzleyici'nin özelliklerine sahip olan günlükleri ve ölçümleri yayar ve ardından toplar ve görselleştirir.

  8. Kapsayıcı görüntüleri: Kapsayıcı görüntüleri daha önce AKS için kullanılan ve Container Apps ortamına dağıtılan mevcut Azure Container Registry'den alınır.

Bileşenler

İş yükü, aşağıdaki Azure hizmetlerini birbiriyle eşgüdümlü olarak kullanır:

  • Container Apps , kapsayıcı düzenleme ve yönetimini basitleştiren sunucusuz bir kapsayıcı platformudur. Bu mimaride, Container Apps tüm mikro hizmetler için birincil barındırma platformu olarak hizmet vermektedir.

    Aşağıdaki özellikler, önceki AKS mimarisinin birçok özelliğinin yerini alır:

    • Yerleşik hizmet bulma
    • Yönetilen HTTP ve HTTP/2 uç noktaları
    • Tümleşik yük dengeleme
    • Günlüğe kaydetme ve izleme
    • Kubernetes tabanlı Event Driven Autoscaling (KEDA) tarafından desteklenen HTTP trafiğine veya olaylarına dayalı otomatik ölçeklendirme
    • Uygulama yükseltmeleri ve sürüm oluşturma
  • Container Registry , özel kapsayıcı görüntülerini depolamaya ve yönetmeye yönelik yönetilen bir kayıt defteri hizmetidir. Bu mimaride, Container Apps ortamına dağıtılan tüm kapsayıcı imajlarının kaynağı burasıdır. Kayıt defteri, AKS uygulamasında kullanılan kayıt defteriyle aynıdır.

  • Azure Cosmos DB , genel olarak dağıtılmış, çok modelli bir veritabanı hizmetidir. Bu mimaride insansız hava aracı zamanlayıcı hizmeti veri deposu olarak Azure Cosmos DB'yi kullanır.

  • Azure DocumentDB , modern uygulamalar oluşturmaya yönelik tam olarak yönetilen bir MongoDB uyumlu veritabanı hizmetidir. Bu mimaride, paket hizmeti veri deposu olarak Azure DocumentDB'yi kullanır.

  • Service Bus , zaman uyumsuz iletişim özellikleri ve karma tümleştirme sağlayan bir bulut mesajlaşma hizmetidir. Bu mimaride, veri alma hizmeti ile görev tabanlı iş akışı mikro hizmeti arasında asenkron mesajlaşmayı yönetir. Mevcut uygulamadaki hizmetlerin geri kalanı, diğer hizmetlerin bunları HTTP istekleriyle çağırabilmesi için tasarlanmıştır.

  • Azure Yönetilen Redis, bellek içi önbelleğe alma hizmetidir. Bu mimaride gecikme süresini azaltır ve sık erişilen insansız hava aracı teslim verileri için aktarım hızını artırır.

  • Key Vault API anahtarları, parolalar ve sertifikalar gibi gizli dizileri güvenli bir şekilde depolamaya ve bunlara erişmeye yönelik bir bulut hizmetidir. Bu mimaride drone zamanlayıcı ve teslimat hizmetleri, Key Vault ile kimlik doğrulaması yapmak ve çalışma zamanı gereksinimleri için gereken gizli bilgileri almak için kullanıcı tarafından atanan yönetilen kimlikleri kullanır.

  • Azure İzleyici , telemetri verilerini toplayan ve analiz eden kapsamlı bir izleme çözümüdür. Bu mimaride log analytics çalışma alanı aracılığıyla tüm uygulama bileşenlerinden ölçümleri ve günlükleri toplar ve depolar. Bu verileri uygulamayı izlemek, uyarıları ve panoları ayarlamak ve hataların kök neden analizini gerçekleştirmek için kullanırsınız.

    • Application Insights , genişletilebilir izleme özellikleri sağlayan bir uygulama performans yönetimi hizmetidir. Bu mimaride her hizmet, uygulama performansını izlemek için Application Insights SDK'sı ile izlenir.

Alternatifler

Gelişmiş AKS mikro hizmetler mimarisi, kubernetes kullanan bu örneğin alternatif senaryolarını açıklar.

Senaryo ayrıntıları

Kapsayıcılı uygulamaları barındırmak için sunucusuz bir ortam olan Container Apps'i kullanarak mikro hizmet kapsayıcılarının dağıtımını ve yönetimini basitleştirebilirsiniz.

Kurgusal bir şirket olan Fabrikam, Inc., kullanıcıların teslimat için bir insansız hava aracı talep ettiği bir insansız hava aracı teslim iş yükü uyguluyor. Müşteri teslim alma zamanladığında arka uç sistemi bir insansız hava aracı atar ve kullanıcıya tahmini teslim alma süresini bildirir.

Mikro hizmetler uygulaması bir AKS kümesine dağıtıldı. Ancak Fabrikam ekibi gelişmiş veya platforma özgü AKS özelliklerinden yararlanmıyordu. Uygulamayı Container Apps'e geçirerek aşağıdaki eylemleri gerçekleştirmelerini sağladılar:

  • Uygulamayı AKS'den Container Apps'e taşıdığınızda en az kod değişikliğini kullanın. Kod değişiklikleri, kubernetes düğüm bilgileriyle günlükleri ve ölçümleri genişleten gözlemlenebilirlik kitaplıklarıyla ilgiliydi ve bu yeni ortamla ilgili değildi.

  • Bicep şablonlarıyla hem altyapıyı hem de iş yükünü dağıtın: Uygulama kapsayıcılarını dağıtmak için Kubernetes YAML bildirimi gerekmezdi.

  • Yönetilen giriş aracılığıyla uygulamayı kullanıma sunma. Alım hizmetini kullanıma sunma amacıyla dış, HTTPS tabanlı giriş için yerleşik destek, kendi girişlerini yapılandırma gereksinimini ortadan kaldırdı.

  • Kapsayıcı görüntülerini Container Registry'den çekin. Container Apps, kullanılabilir herhangi bir depoda depolanan tüm Linux temel görüntüleriyle uyumludur.

  • Uygulama yaşam döngüsü gereksinimlerini desteklemek için düzeltme özelliğini kullanın. Belirli bir kapsayıcı uygulamasının birden çok sürümünü çalıştırabilir ve A/B testi veya mavi/yeşil dağıtım senaryoları için bunlar arasında trafiği bölebilir.

  • Key Vault ve Container Registry ile kimlik doğrulaması yapmak için yönetilen kimlik kullanın.

Olası kullanım örnekleri

Yönetimi basitleştirmek ve kapsayıcı düzenleyici çalıştırmanın karmaşıklığını önlemek için brownfield mikro hizmet tabanlı bir uygulamayı hizmet olarak platforma (PaaS) dağıtın. Brownfield iş yükü, aşağıdaki nedenlerle Kubernetes dağıtımı üzerinden bu mimariyi kullanarak tasarruf etti:

  • İş yükü profilleri seçimi
  • Operasyon ekibi için 2. günlük operasyonel görevlerde daha az zaman harcandı
  • Fazla sağlamadan kaçınma özelliği

Uyarı

Tüm iş yükleri bu maliyet tasarruflarını sağlamaz.

Container Apps'in diğer yaygın kullanımlarını göz önünde bulundurun:

  • Kapsayıcılı iş yüklerini sunucusuz, tüketim tabanlı bir platformda çalıştırın.
  • HTTP veya HTTPS trafiğine ve KEDA tarafından desteklenen olay temelli tetikleyicilere göre uygulamaları otomatik ölçeklendirme.
  • Kapsayıcılı uygulamalar için bakım yükünü en aza indirin.
  • API uç noktalarını dağıtma.
  • Arka plan işleme uygulamalarını barındır.
  • Olay yönlendirmeli işlemeyi yönet.

Optimizations

İş yükü ekibinin hedefi, mevcut iş yükünü en az kod değişikliğiyle Container Apps'e geçirmektir. Ancak geçiş sonrasında mimariyi ve iş yükü uygulamasını geliştirmek için çeşitli iyileştirmeler yapmanız gerekir.

Sır yönetimini geliştirin

İş yükü, sırları yönetmek için birleşik bir yaklaşım kullanır. Yönetilen kimlikler yalnızca yönetilen kimliklere geçmenin kod değişikliği gerektirmediği hizmetler için geçerlidir. Drone zamanlayıcı ve teslimat hizmetleri, depolanan gizli bilgilere erişmek için Key Vault ile kullanıcıların atadığı yönetilen kimlikler kullanır. Kalan hizmetler, yönetilen kimlikleri benimsemek için kod değişiklikleri gerektirir, bu nedenle bu hizmetler Container Apps ortamının sağladığı gizli dizileri kullanır.

Daha iyi bir yaklaşım, ortam tarafından sağlanan gizli anahtarlar yerine uygulama veya iş kimliğini kullanarak yönetilen kimlikleri destekleyecek şekilde tüm kodları güncellemektir. İş yükü kimlikleri hakkında daha fazla bilgi için bkz. Container Apps'te yönetilen kimlikler.

Tek düzeltme modu gerektiren tasarımlardan kaçının

İş akışı hizmeti kapsayıcı uygulaması tek düzeltme modunda çalışır. Tekli revizyon modunda, uygulamanın sıfır veya daha fazla kopya ile desteklenen bir revizyonu vardır. Replika, uygulama kapsülü ve gereken yan bileşenlerden oluşur. Bu örnekte sidecar kullanılmadığından, her çoğaltma tek bir kapsayıcıdan oluşur. İş akışı hizmeti, ileti şemalarına ileriye dönük uyumluluk sağlayacak şekilde tasarlanmamıştır. Hizmetin iki farklı sürümü hiçbir zaman eşzamanlı olarak çalışmamalıdır.

Service Bus ileti şemasının değişmesi gerekiyorsa, yeni iş akışı hizmeti sürümünü dağıtmadan önce veri yolunu boşaltmanız gerekir. Daha iyi bir yaklaşım, ileriye dönük uyumluluk için hizmet kodunu güncelleştirmek ve kuyrukları boşaltmayla ilişkili kapalı kalma süresini azaltmak için çoklu düzeltme modunu kullanmaktır.

İş tabanlı çalışmayı göz önünde bulundurun

İş akışı hizmeti uzun süre çalışan bir kapsayıcı uygulaması olarak uygulanır. Ancak Container Apps'te bir iş olarak da çalışabilir. Görev, isteğe bağlı olarak başlayan, mevcut işi tamamlayana kadar çalışan, ardından kapanıp kaynakları serbest bırakan kapsayıcılı bir uygulamadır. İşler sürekli çalışan çoğaltmalardan daha ekonomik olabilir. Hizmeti, kuyruktaki mevcut işe dayalı olarak Container Apps işinde çalıştırmak amacıyla taşımak, pratik bir seçenek olabilir. Tipik kuyruk hacmine ve iş akışı hizmetinin ne kadar sonlu, paralelleştirilebilir ve kaynak kullanımı için optimize edilmiş olduğuna bağlıdır. En iyi yaklaşımı belirlemek için deneme yapın ve doğrulayın.

Giriş denetimi uygulama

İş yükü, veri alma hizmetini açığa çıkarmak için Container Apps'in yerleşik harici giriş özelliğini kullanır. Giriş denetimi yaklaşımı, giriş noktanızı bir web uygulaması güvenlik duvarının (WAF) arkasına tamamen yerleştirme veya Azure DDoS Koruması planlarına ekleme olanağı sağlamaz. Web'e açık tüm iş yüklerini bir WAF ile korumanız gerekir. Bu yapılandırmayı Container Apps ortamında başarmak için yerleşik genel girişi devre dışı bırakmanız ve Application Gateway veya Azure Front Door eklemeniz gerekir.

Uyarı

Ağ geçitleri, giriş hizmetini canlı tutan ve sıfıra ölçeklendirmesini engelleyen etkili durum denetimleri gerektirir.

Dapr ile Modernleşme

Dağıtılmış Uygulama Çalışma Zamanı (Dapr) ile tümleştirerek iş yükünü daha da modernleştirebilirsiniz. İş yükü kodu ile durum depoları, mesajlaşma sistemleri ve hizmet bulma mekanizmaları arasında soyutlama ekler. Daha fazla bilgi için bkz. Container Apps ve Dapr ile mikro hizmetleri dağıtma. Kubernetes'teki iş yükünüz zaten Dapr veya ortak KEDA ölçeklendiricileri kullanıyorsa, Container Apps'e geçiş genellikle doğrudan yapılır ve bu özelliği koruyabilir.

Kullanıcı kimlik doğrulamasına ve yetkilendirmesine geçiş

İş yükü, yetkilendirmeyi bir ağ geçidine devretmez. İçe aktarma hizmeti, istemcilerinin yetkilendirilmesini işlemektedir. Daha iyi bir yaklaşım, bu sorumluluğu genellikle Kolay Kimlik Doğrulaması olarak adlandırılan yerleşik kimlik doğrulama ve yetkilendirme özelliğine devredmektir. Bu değişiklik platform özelliklerinden yararlanır ve alım mikro hizmetinde özel kodu azaltır.

Dikkat edilmesi gereken noktalar

Aşağıdaki önemli noktalar, bir iş yükünün kalitesini artırmak için kullanabileceğiniz bir dizi yol gösterici ilke olan Microsoft Azure Well-Architected Framework'ün yapı taşlarını uygular. Daha fazla bilgi için bkz. Azure 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, iş yükündeki uygulamaları dağıtmanıza, yönetmenize, korumanıza ve izlemenize yardımcı olur. Temel önerileri izleyerek güvenilirliği artırabilirsiniz. Kubernetes'ten geçiş sırasında bazı öneriler uygulanır.

  • Düzeltmeler, uygulama güncelleştirmelerini sıfır kapalı kalma süresiyle dağıtmanıza yardımcı olur. Mavi/yeşil dağıtımları ve A/B testini desteklemek üzere uygulama güncelleştirmelerinin dağıtımını yönetmek ve trafiği düzeltmeler arasında bölmek için düzeltmeleri kullanabilirsiniz.

  • Container Apps gözlemlenebilirlik özellikleriyle, ortamda çalışan bileşenler hakkında içgörüye sahipsiniz. Container Apps, Application Insights ve Log Analytics ile tümleşir. Bu verileri, gözlemlenebilirlik sisteminizin bir parçası olarak işlemleri izlemek ve ölçümlere ve olaylara göre uyarılar ayarlamak için kullanırsınız.

    Performans izleme, uygulamayı yük altında değerlendirmenize yardımcı olur. Ölçümler ve günlükler eğilimleri tanımak, hataları araştırmak ve kök neden analizi gerçekleştirmek için veriler sağlar.

  • Yavaş başlatan kapsayıcıları yönetmek ve hazır olmadan önce trafik göndermekten kaçınmak için sağlık ve hazırlık probelerini kullanın. Kubernetes uygulaması bu uç noktaları içerir. Etkili sinyaller sağlarlarsa bunları kullanmaya devam edin.

  • Bir hizmet beklenmedik bir şekilde sonlandırıldığında, Container Apps hizmeti otomatik olarak yeniden başlatır. hizmet bulma, iş akışı hizmetinin aşağı akış mikro hizmetlerini bulabilmesi için etkinleştirilir. Zaman aşımlarını işlemek ve kodu daha fazla ayarlamaya gerek kalmadan devre kesici mantığını tanıtmak için dayanıklılık ilkelerini kullanın.

  • Trafik ve iş yükleri arttıkça talebi karşılamak için otomatik ölçeklendirme kurallarını etkinleştirin.

  • Kullanılabilirliği geliştirmek için Container Apps'in dinamik yük dengeleme ve ölçeklendirme özelliklerini kullanın. Ortamınızın alt ağını, gelecekteki çoğaltmalar veya işler için her zaman yeterli kullanılabilir IP adresine sahip olması için fazladan tahsis edin.

  • Çoğaltma kapatıldığında tüm durum kaybedildiğinden, durumu doğrudan Container Apps ortamında depolamaktan kaçının. Her bir mikro hizmet için ayrılmış bir durum deposuna durumu dışa aktar. Bu mimari durumu üç ayrı depoya dağıtır: Azure Managed Redis, NoSQL için Azure Cosmos DB ve Azure DocumentDB.

  • Çok bölgeli bir topoloji kullanarak Container Apps de dahil olmak üzere tüm kaynakları dağıtın. Daha fazla bilgi için bkz. Container Apps'te kullanılabilirlik alanı desteği.

    Geçici olmayan uygulamalar için en düşük çoğaltma sayısını her kullanılabilirlik alanı için en az bir çoğaltma olarak ayarlayın. Tipik çalışma koşulları sırasında çoğaltmalar bölgedeki kullanılabilirlik alanları arasında güvenilir bir şekilde dağıtılır ve dengelenir.

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üvenlikiçin tasarım gözden geçirme denetim listesi .

Gizli Diziler

  • Kapsayıcı uygulamanız gizli değerleri gizli dizi olarak depolayabilir ve alabilir. Kapsayıcı uygulaması için bir gizli anahtar belirledikten sonra, bu anahtar uygulama ve ilişkili ölçek kuralları tarafından kullanılabilir. Çoklu düzeltme modunda çalışıyorsanız, tüm düzeltmeler aynı gizli dizileri paylaşır. Gizli anahtarlar uygulama kapsamı değişiklikleri olarak kabul edildiğinden, bir gizli anahtarın değerini değiştirirseniz yeni bir revizyon oluşturulmaz. Ancak, aktif düzeltmelerin yeni gizli değerini yükleyebilmesi için bunları yeniden başlatmanız gerekir. Bu senaryoda, uygulama ve ortam değişkeni değerleri kullanılır.

  • Hizmet kodunu, önceden paylaşılan gizli diziler yerine, bağımlılıklarda kimlik doğrulaması yapmak için uygulamanın yönetilen kimliğini kullanacak şekilde yeniden yazın. Tüm bağımlılıklarda yönetilen kimlik kimlik doğrulamasını destekleyen SDK'lar vardır.

  • Hassas değerleri uygulama düzeyinde ortam değişkenlerinde güvenli bir şekilde depolayabilirsiniz. Ortam değişkenleri değiştiğinde kapsayıcı uygulaması yeni bir düzeltme oluşturur.

Ağ güvenliği

  • Dış erişimi sınırlamak için yalnızca veri alma hizmeti dış giriş için yapılandırılır. Arka uç hizmetlerine yalnızca Container Apps ortamındaki iç sanal ağ üzerinden erişilebilir ve iç mod olarak yapılandırılır. Hizmetleri yalnızca gerektiğinde İnternet'te kullanıma sunma.

    Bu mimari yerleşik dış giriş özelliğini kullandığından, bu çözüm giriş noktanızı bir WAF'nin arkasına tamamen yerleştirme veya DDoS Koruması planlarına ekleme olanağı sağlamaz. Web uygulaması güvenlik duvarı ile web'e yönelik tüm iş yüklerinin önüne geçin. Giriş geliştirmeleri hakkında daha fazla bilgi için bkz. Giriş denetimi uygulama.

  • Ortam oluşturduğunuzda, özel bir sanal ağ sağlayabilirsiniz. Aksi takdirde, Microsoft otomatik olarak bir sanal ağ oluşturur ve yönetir. Microsoft tarafından yönetilen bu sanal ağı, örneğin ağ güvenlik grupları (NSG) ekleyerek veya trafiği çıkış güvenlik duvarına zorlama yoluyla değiştiremezsiniz. Örnekte otomatik olarak oluşturulan bir sanal ağ kullanılır, ancak özel bir sanal ağ güvenlik denetimini geliştirir. Özel ağ, Azure Güvenlik Duvarı aracılığıyla NSG'ler ve kullanıcı tanımlı yol (UDR) tabanlı yönlendirme uygulamanıza olanak tanır.

Giriş için özel uç nokta desteği de dahil olmak üzere ağ topolojisi seçenekleri hakkında daha fazla bilgi için bkz. Container Apps'te ağ mimarisi.

İş yükü kimlikleri

  • Container Apps, uygulamanızın kapsayıcı uygulamanızda kimlik bilgilerini yönetmeden Key Vault gibi Microsoft Entra ID ile korunan diğer kaynaklarda kimliğini doğrulamasını sağlayan Microsoft Entra yönetilen kimliklerini destekler. Kapsayıcı uygulaması sistem tarafından atanan kimlikleri, kullanıcı tarafından atanan kimlikleri veya her ikisini birden kullanabilir. Microsoft Entra Id kimlik doğrulamasını desteklemeyen hizmetler için gizli dizileri Key Vault'ta depolayın ve gizli dizilere erişmek için yönetilen kimlik kullanın.

  • Container Registry erişimi için ayrılmış, kullanıcı tarafından atanan yönetilen bir kimlik kullanın. Container Apps, iş yükü işlemi için kapsayıcı kayıt defteri erişiminden farklı bir yönetilen kimlik kullanmayı destekler. Bu yaklaşım ayrıntılı erişim denetimi sağlar. İş yükünüz birden çok Container Apps ortamına sahipse, kimliği örnekler arasında paylaşmayın.

  • Kimlik yaşam döngüsünü iş yükü bileşeni yaşam döngüsüne bağlamak için iş yükü kimlikleri için sistem tarafından atanan yönetilen kimlikleri kullanın.

Diğer güvenlik önerileri

  • Bu iş yükünün Kubernetes uygulaması , Kapsayıcılar için Microsoft Defender özelliklerini kullanarak koruma sağlar. Bu mimaride Kapsayıcılar için Defender yalnızca Container Registry'nizdeki kapsayıcıların güvenlik açığını değerlendirir . Kapsayıcılar için Defender, Container Apps uygulamaları için çalışma zamanı korumasını sağlamaz. Çalışma zamanı koruması gerekliyse, Microsoft dışı güvenlik çözümleriyle destek sağlamayı değerlendirin.

  • İş yükünü paylaşılan bir Container Apps ortamında çalıştırmayın. Bu mikro hizmetlere erişmesi gerekmeyen diğer iş yüklerinden veya bileşenlerden segmentlere ayırın. Ayrı Container Apps ortamları oluşturun. Bir Container Apps ortamında çalışan uygulamalar ve işler, iç erişim etkinleştirildiğinde ortamda çalışan tüm hizmetleri keşfedip bu hizmetlere erişebilir.

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.

  • İş yükü için örnek fiyat tahminini gözden geçirin. Azure fiyatlandırma hesaplayıcısını kullanın. Yapılandırmalar farklılık gösterir, bu nedenle senaryonuza uyacak şekilde ayarlayın.

  • Bu senaryoda Azure Cosmos DB, Azure Yönetilen Redis ve Service Bus Premium başlıca maliyet etmenleridir.

  • Genellikle düşük CPU ve bellek miktarı tüketen kapsayıcılar için önce tüketim iş yükü profilini değerlendirin. Temel maliyet verilerini toplamaya ve diğer profilleri değerlendirmeye yardımcı olmak için kullanımınıza göre tüketim profilinin maliyetini tahmin edin. Örneğin, yüksek oranda öngörülebilir ve kararlı kullanımı olan ve ayrılmış düğümleri paylaşabilen bileşenler için ayrılmış bir iş yükü profili kullanabilirsiniz. Maliyet optimizasyonu için, kullanılabilirlik alanları arasında yeterli işlem birimleri ve çoğaltma dağıtımı sağlamak amacıyla her ayrılmış profil için üç katı sayıda düğüm bulundurun.

  • Bileşenlerin yalnızca gerektiğinde ödeme yapmak için sıfıra ölçeklenebilmesini sağlayarak işlem yapılmadığı dönemlerde işlem maliyetlerini ortadan kaldırın. Bu yaklaşım, değişken veya seyrek kullanımı olan uygulamaların giderlerini azaltır. Sağlık kontrolleri genellikle tam ölçeğin sıfıra indirilmesini engeller. Mimaride, boş dönemlerde sıfıra ölçeklemeden yararlanmak için iş akışı hizmetini iş olarak yeniden değerlendirebilirsiniz. Bu yaklaşım, tüketim planı kullanabilen iş yükleriyle iyi bir şekilde uyum sağladığı için uygundur.

  • Bölgeler arası ağ ücretlerinden kaçınmak için, durum depoları ve kapsayıcı kayıt defteri gibi tüm bileşenleri aynı bölgede konuşlandırı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ükemmellikiçin tasarım gözden geçirme denetim listesi .

  • Otomatik sürekli tümleştirme ve sürekli dağıtım (CI/CD) işlem hatlarını ayarlamak için GitHub Actions'ı veya Azure Pipelines tümleştirmesini kullanın.

  • İş yükü kodunuzda ve ölçek kurallarınızda yapılan değişiklikleri test etmek için trafiği bölerken çoklu düzeltme modunu kullanın.

  • İş yükünüz hakkında içgörü sağlamak için Application Insights ve Log Analytics ile tümleştirin. Tüm iş yükü içgörülerini bir arada tutmak için iş yükünüzün diğer bileşenleriyle aynı Log Analytics çalışma alanını kullanın.

  • Tüm altyapı dağıtımlarını yönetmek için Bicep veya Terraform gibi kod olarak altyapıyı (IaC) kullanın. Dağıtımlar Container Apps ortamını, kapsayıcı kayıt defterini ve mikro hizmet durum depolarını içerir. Mikro hizmet dağıtım işlem hatlarını altyapı işlem hatlarından ayırın çünkü genellikle benzer bir yaşam döngüsünü paylaşmaz. Azure altyapısı için bildirim temelli işlem hattınız, kapsayıcı uygulaması kaynakları dışındaki tüm kaynakları dağıtmalıdır.

  • Kapsayıcı uygulamaları oluşturmak, güncellemek ve ortamdan kaldırmak için emirsel bir yaklaşım kullanın. Özellikle sürümler arasında trafik kaydırma mantığını dinamik olarak ayarlıyorsanız bu önemlidir. Dağıtım iş akışlarınızda GitHub eylemi veya Azure Pipelines görevi kullanın. Bu kesinlik temelli yaklaşım YAML uygulama tanımlarını temel alabilir. Sistem durumu denetimi hatalarını en aza indirmek için, kapsayıcı uygulamasını başlatmadan önce işlem hattınızın kapsayıcı kayıt defterini yeni kapsayıcı görüntüsüyle doldurduğundan emin olun.

    Kubernetes uygulamasındaki önemli bir değişiklik, Kubernetes bildirim dosyalarını yönetimden, Deployment gibi Kubernetes nesnelerini tanımlamaya yönelik bir değişimdir. Kubernetes, bu bildirim nesnesi aracılığıyla mikro hizmet dağıtımına atomik bir başarı veya birlikte başarısız yaklaşımı sağlar. Container Apps'te her mikro hizmet bağımsız olarak dağıtılır. Dağıtım işlem hatlarınız, güvenli bir dağıtıma sahip olmak için gereken tüm sıralama ve geri alma stratejilerini düzenleme sorumluluğunu alır.

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.

  • İş yükü birden çok mikro hizmet uygulaması arasında dağıtılır.

  • Her mikro hizmet bağımsızdır ve bağımsız ölçeklendirmeyi sağlayan diğer mikro hizmetlerle hiçbir durum paylaşmaz.

  • Sonlu işlem çalışmaları için Container Apps işlerini, geçici çalışma zamanları ortamlarını uygulayarak ve boşta kalan hizmetler için kaynak tüketimini azaltmak amacıyla kullanın. İş yüklerini başlatıp durdurmanın ve bileşenleri sıcak ve hazır tutmanın performans etkilerini değerlendirin.

  • Otomatik ölçeklendirme etkinleştirildi. Mümkün olduğunda ölçüm tabanlı ölçeklendirmeye göre olay tabanlı ölçeklendirmeyi tercih edin. Örneğin, iş akışı hizmeti bunu destekleyecek şekilde tasarlandıysa Service Bus kuyruk derinliğine göre ölçeklendirilebilir. Varsayılan otomatik ölçeklendirici HTTP isteklerini temel alır. Yeniden platform oluşturma sırasında, aynı ölçeklendirme yaklaşımıyla başlayıp ölçeklendirme iyileştirmelerini daha sonra değerlendirmek önemlidir.

  • İstekler, bir sürümün mevcut kopyaları arasında dinamik olarak yük dengelenir.

  • CPU, bellek, bant genişliği bilgileri ve depolama kullanımı dahil olmak üzere ölçümler Azure İzleyici aracılığıyla kullanılabilir.

Bu senaryoyu dağıtın

Container Apps örnek senaryo deposundaki README.md adımları izleyin.

Katkıda Bulunanlar

Microsoft bu makaleyi korur. Bu makaleyi aşağıdaki katkıda bulunanlar yazdı.

Katkıda bulunan:

Sonraki adımlar