Sdílet prostřednictvím


Nasazení mikroslužeb pomocí Azure Container Apps a Dapr

Azure Container Apps
.NET
Azure SQL Database
Azure Cosmos DB
Azure Cache for Redis

Tento článek popisuje řešení pro spuštění systému správy objednávek, který má 10 mikroslužeb v Azure Container Apps. Řešení také využívá osvědčené postupy mikroslužeb prostřednictvím distribuovaného aplikačního modulu Runtime (Dapr) a škálování řízeného událostmi pomocí automatického škálování řízeného událostmi Kubernetes (KEDA).

Dapr a Traefik jsou ochranné známky příslušných společností. Použití těchto značek nevyžaduje žádné doporučení.

Architektura

Diagram znázorňující systém správy objednávek s mikroslužbami v Container Apps

Stáhněte si soubor PowerPointu této architektury.

Tok dat

Toto řešení popisuje fiktivní systém správy objednávek Red Dog a jeho podpůrnou infrastrukturu Azure. Architektura se skládá z jediného prostředí Container Apps, které hostuje 10 aplikací mikroslužeb .NET Core. Řešení využívá sadu Dapr SDK k integraci s prostředky Azure prostřednictvím stavebních bloků publikování a odběru, stavu a vazeb. Služby také používají pravidla škálování KEDA, která umožňují škálování na základě triggerů událostí a scénářů škálování na nulu.

Následující tok dat odpovídá předchozímu diagramu:

  1. Traefik: Základní proxy server pro směrování uživatelských požadavků z uživatelského rozhraní do účtů a služeb Makeline pro interaktivní řídicí panel.

  2. uživatelské rozhraní : řídicí panel, který zobrazuje data o objednávkách v reálném čase a agregovaná prodejní data pro systém správy objednávek Red Dog.

  3. Virtuální zákazník: Program simulace zákazníka, který simuluje zákazníky, kteří umisťují objednávky prostřednictvím služby objednávek.

  4. Objednávka služby: Vytvoření, čtení, aktualizace a odstranění rozhraní API pro umístění a správu objednávek.

  5. Účetní služba: Služba, která zpracovává, ukládá a agreguje data objednávek. Transformuje objednávky zákazníků na smysluplné prodejní metriky, které uživatelské rozhraní prezentuje.

  6. Služba účtenek: Archivní program, který generuje a ukládá potvrzení objednávek pro účely auditování a historických účelů.

  7. Věrnostní služba: Služba, která spravuje program věrnosti sledováním bodů odměn zákazníků na základě výdajů na objednávku.

  8. Makeline service: Služba, která spravuje frontu aktuálních objednávek čekajících na splnění. Sleduje zpracování a dokončení objednávek službou virtuálního pracovního procesu.

  9. Virtuální pracovní proces:Program simulace pracovního procesu, který simuluje dokončení objednávek zákazníků.

Služba Příchozí přenos dat Komponenty Dapr Pravidla škálování KEDA
Traefik Externí Nepovoleno dapr HTTP
uživatelské rozhraní Interní Nepovoleno dapr HTTP
Virtuální zákazník Nic Vyvolání mezi službami
Služba objednávek Interní Publikování a přihlášení k odběru: Azure Service Bus HTTP
Účetní služba Interní Publikování a přihlášení k odběru: Service Bus Délka tématu služby Service Bus, HTTP
Služba účtenek Interní Publikování a přihlášení k odběru: Service Bus
Vazba: Azure Blob Storage
Délka tématu služby Service Bus
Věrnostní služba Interní Publikování a přihlášení k odběru: Service Bus
Stav: Azure Cosmos DB
Délka tématu služby Service Bus
Makeline service Interní Publikování a přihlášení k odběru: Service Bus
Stav: Azure Cache for Redis
Délka tématu služby Service Bus, HTTP
Virtuální pracovní proces Nic Vyvolání mezi službami
Vazba: Cron

Poznámka:

Bootstrap můžete také implementovat v aplikaci kontejneru. Tato služba ale jednou spustí vytvoření databáze a po vytvoření potřebných objektů ve službě Azure SQL Database se škáluje na nulu.

Komponenty

  • Application Insights je rozšiřitelná služba pro správu výkonu aplikací, kterou můžete použít k monitorování živých aplikací a automatickému zjišťování anomálií výkonu. V této architektuře pomocí Application Insights se službou Azure Monitor zobrazíte protokoly kontejneru a shromáždíte metriky z mikroslužeb.

  • Blob Storage je cloudové řešení pro ukládání velkých objemů nestrukturovaných dat, jako jsou textové nebo binární soubory. V této architektuře služba účtenek používá službu Blob Storage prostřednictvím výstupní vazby Dapr k uložení potvrzení objednávek.

  • Azure Cache for Redis je distribuovaná škálovatelná mezipaměť Redis spravovaná v paměti. V této architektuře se používá jako komponenta úložiště stavu Dapr pro službu Makeline k ukládání dat do objednávek, které se zpracovávají.

  • Azure Cosmos DB je vícemodelová spravovaná databázová služba NoSQL. V této architektuře se používá jako součást úložiště stavů Dapr pro věrnostní službu k ukládání zákaznických věrnostních dat.

  • Azure Monitor je jednotná platforma, která umožňuje shromažďovat, analyzovat a reagovat na data zákaznického obsahu z prostředí infrastruktury Azure. V této architektuře pomocí služby Azure Monitor s Application Insights zobrazíte protokoly kontejneru a shromáždíte metriky z mikroslužeb.

  • Service Bus je plně spravovaný podnikový zprostředkovatel zpráv, který obsahuje fronty a témata publikování a odběru. V této architektuře použijete Service Bus pro implementaci komponenty pro publikování a odběr dapr. Tuto komponentu používá více služeb. Služba objednávek publikuje zprávy na sběrnici a služby Makeline, accounting, věrnosti a účtenky odebírají tyto zprávy.

  • Container Apps je plně spravovaná bezserverová služba kontejneru, která se používá k sestavování a nasazování moderních aplikací ve velkém měřítku. V této architektuře hostujete všech 10 mikroslužeb v Container Apps a nasadíte je do jednoho prostředí Container Apps. Toto prostředí slouží jako zabezpečená hranice kolem systému.

  • SQL Database je inteligentní škálovatelná relační databázová služba vytvořená pro cloud. V této architektuře slouží jako úložiště dat pro účetní službu, která používá Entity Framework Core pro rozhraní s databází. Služba bootstrapper zodpovídá za nastavení tabulek SQL v databázi. Potom se spustí jednou předtím, než naváže připojení k účetní službě.

  • Traefik je reverzní proxy server a nástroj pro vyrovnávání zatížení používaný ke směrování síťového provozu do mikroslužeb. V této architektuře použijte funkci dynamické konfigurace Traefik k provádění směrování na základě cest z uživatelského rozhraní, což je Vue.js jednostráčková aplikace. Tato konfigurace také umožňuje přímé volání rozhraní API do back-endových služeb pro účely testování.

Alternativy

V této architektuře nasadíte proxy server Traefik, který povolí směrování na základě cesty pro rozhraní API Vue.js. K tomuto účelu můžete použít mnoho alternativních opensourcových proxy serverů. Mezi dva další běžné projekty patří NGINX a HAProxy.

Veškerá infrastruktura Azure s výjimkou služby SQL Database používá komponenty Dapr pro interoperabilitu. Jednou z výhod Dapr je, že všechny tyto komponenty můžete prohodit změnou konfigurace nasazení aplikací kontejnerů. V tomto scénáři představuje Service Bus, Azure Cosmos DB, Azure Cache for Redis a Blob Storage některé z více než 70 dostupných komponent Dapr. Seznam alternativních zprostředkovatelů publikování a odběrů, úložišť stavů a výstupních vazeb jsou k dispozici v dokumentaci k Dapr.

Podrobnosti scénáře

Mikroslužby jsou široce přijímaný styl architektury. Poskytují výhody, jako jsou škálovatelnost, flexibilita a nezávislá nasazení. Kontejnery můžete použít jako mechanismus k nasazení aplikací mikroslužeb a pak ke zjednodušení operací použít orchestrátor kontejnerů, jako je Kubernetes. U architektur mikroslužeb ve velkém měřítku je potřeba zvážit řadu faktorů. Platforma infrastruktury obvykle vyžaduje značné znalosti složitých technologií, jako jsou orchestrátory kontejnerů.

Container Apps je plně spravovaná služba bezserverového kontejneru pro spouštění moderních aplikací ve velkém měřítku. Umožňuje nasadit kontejnerizované aplikace prostřednictvím abstrakce základní platformy. Pomocí této metody nemusíte spravovat složitou infrastrukturu.

Tato architektura využívá integraci Container Apps se spravovanou verzí Dapr. Dapr je opensourcový projekt, který vývojářům pomáhá překonat základní výzvy v distribuovaných aplikacích, jako je správa stavu a vyvolání služeb.

Container Apps také poskytuje spravovanou verzi KEDA. KEDA umožňuje automatické škálování kontejnerů na základě příchozích událostí z externích služeb, jako je Service Bus a Azure Cache for Redis.

Příchozí přenos dat HTTPS můžete také povolit v Container Apps, aniž byste museli vytvářet další síťové prostředky Azure. Můžete použít proxy server envoy, který také umožňuje rozdělení provozu scénáře.

Další informace najdete v tématu Porovnání kontejnerových aplikací s dalšími možnostmi kontejneru Azure.

Tento článek popisuje řešení pro spuštění systému správy objednávek, který má 10 mikroslužeb v Container Apps. Toto řešení také využívá osvědčené postupy mikroslužeb prostřednictvím dapr a škálování řízeného událostmi pomocí KEDA.

Potenciální případy použití

Toto řešení platí pro všechny organizace, které používají bezstavové a stavové mikroslužby pro distribuované systémy. Řešení je nejvhodnější pro spotřební zabalené zboží a výrobní odvětví, které mají systém objednávání a plnění.

Následující řešení mají podobné návrhy:

  • Architektura mikroslužeb v Azure Kubernetes Service (AKS)
  • Architektura mikroslužeb ve službě Azure Functions
  • Architektury řízené událostmi

Důležité informace

Tyto aspekty implementují pilíře dobře architektuře Azure, což je sada hlavních principů, které můžete použít ke zlepšení kvality úlohy. Další informace naleznete v tématu Well-Architected Framework.

Spolehlivost

Spolehlivost pomáhá zajistit, aby vaše aplikace splňovala závazky, které jste pro své zákazníky udělali. Další informace naleznete v tématu Kontrolní seznam pro kontrolu spolehlivosti.

Container Apps je založená na základu Kubernetes, který funguje jako základní infrastruktura. Mechanismy odolnosti jsou integrované v Kubernetes, které monitorují a restartují kontejnery nebo pody, pokud dojde k problémům. Mechanismy odolnosti zahrnují integrovaný nástroj pro vyrovnávání zatížení, který distribuuje provoz napříč několika replikami každé aplikace kontejneru. Tato redundance umožňuje systému zůstat funkční, i když bude jedna replika nedostupná.

Zabezpečení

Zabezpečení poskytuje záruky proti záměrným útokům a zneužití cenných dat a systémů. Další informace najdete v kontrolním seznamu pro kontrolu návrhu zabezpečení.

Následující seznam popisuje několik funkcí zabezpečení, které jsou v této architektuře vynechány, spolu s dalšími doporučeními a aspekty:

  • Tato architektura nepoužívá privátní koncové body, které umožňují bezpečnější privátní připojení ke službám Azure tím, že jim přiřadíte IP adresu z vaší virtuální sítě. Při použití privátních koncových bodů je možné zakázat přístup k veřejné síti. Tento přístup udržuje provoz v páteřní síti Microsoftu a zlepšuje zabezpečení a dodržování předpisů.

  • Síťová aktivita by se měla průběžně monitorovat, aby se zjistilo a zabránilo zneužití. Tento přístup můžete dosáhnout pomocí brány Azure Firewall a směrovacích tabulek. Směrovací tabulky umožňují provoz, který opustí virtuální síť, aby se nejprve předala přes bránu firewall. Tento proces je důležitým krokem při zajištění toho, aby vaše architektura nebyla zranitelná vůči útokům na exfiltraci dat.

  • K ochraně před běžnými ohroženími zabezpečení použijte firewall webových aplikací (WAF). K implementaci WAF v této architektuře použijte Azure Front Door nebo Azure Application Gateway.

  • Zvažte použití integrované funkce ověřování a autorizace pro Container Apps, která se označuje jako Easy Auth. Snadné ověřování zpracovává integraci se zprostředkovateli identit mimo webovou aplikaci, což může snížit množství kódu, který potřebujete k údržbě.

  • Používejte spravovanou identitu pro identity úloh. Spravovaná identita eliminuje potřebu vývojářů spravovat přihlašovací údaje pro ověřování. Například základní architektura se ověřuje pro SQL Server prostřednictvím hesla v připojovacím řetězci. Pokud je to možné, použijte id Microsoft Entra k ověření na Azure SQL Serveru.

Optimalizace nákladů

Optimalizace nákladů se zaměřuje na způsoby, jak snížit zbytečné výdaje a zlepšit efektivitu provozu. Další informace naleznete v tématu Kontrolní seznam pro kontrolu návrhu proOptimalizace nákladů .

Pomocí cenové kalkulačky Azure můžete odhadnout náklady na služby v této architektuře.

Efektivita provozu

Efektivita provozu se zabývá provozními procesy, které nasazují aplikaci a udržují ji spuštěnou v produkčním prostředí. Další informace najdete v kontrolním seznamu pro kontrolu návrhu pro efektivitu provozu.

Ke sledování kontejnerových aplikací můžete použít Azure Monitor a Application Insights. Protokoly kontejnerů můžete zobrazit tak, že na portálu přejdete do podokna Protokoly v každé aplikaci kontejneru a potom spustíte následující dotaz Kusto. Tento příklad ukazuje protokoly pro aplikaci služby Makeline.

ContainerAppConsoleLogs_CL |
    where ContainerAppName_s contains "make-line-service" |
    project TimeGenerated, _timestamp_d, ContainerGroupName_s, Log_s |
    order by _timestamp_d asc

Mapa aplikace v Application Insights také ukazuje, jak služby komunikují v reálném čase. Pak je můžete použít pro scénáře ladění. Přejděte na mapu aplikace pod prostředkem Application Insights a zobrazte něco podobného jako na následující mapě.

Snímek obrazovky znázorňující mapu aplikace v Application Insights

Další informace najdete v tématu Monitorování aplikace v kontejnerových aplikacích.

Efektivita výkonu

Efektivita výkonu odkazuje na schopnost vaší úlohy efektivně škálovat tak, aby splňovala požadavky uživatelů. Další informace naleznete v tématu Kontrola návrhu kontrolní seznam pro zvýšení efektivity výkonu.

Toto řešení spoléhá na implementaci KEDA ve službě Container Apps pro škálování řízené událostmi. Když nasadíte virtuální zákaznickou službu, průběžně ukládá objednávky. Toto škálování způsobí vertikální navýšení kapacity služby objednávky prostřednictvím škálovače HTTP KEDA. Vzhledem k tomu, že služba objednávek publikuje objednávky ve službě Service Bus, škálovací služby KEDA service bus způsobí vertikální navýšení kapacity účetnictví, účtenky, makeline a věrnostních služeb. Aplikace kontejneru UI a Traefik také konfiguruje škálovací nástroje HTTP KEDA tak, aby se aplikace škálovat jako více uživatelů přistupovali k řídicímu panelu.

Pokud virtuální zákazník není spuštěný, všechny mikroslužby v tomto řešení se škálují na nulu s výjimkou virtuálních pracovních procesů a služeb Makeline. Virtuální pracovní proces nejde vertikálně snížit kapacitu, protože průběžně kontroluje plnění objednávky. Další informace najdete v tématu Nastavení pravidel škálování v Container Apps.

Přispěvatelé

Microsoft udržuje tento článek. Tento článek napsali následující přispěvatelé.

Hlavní autor:

Další přispěvatelé:

Pokud chcete zobrazit nepublikované profily LinkedIn, přihlaste se na LinkedIn.

Další kroky