Tento článek popisuje řešení pro spuštění systému správy objednávek s 10 mikroslužbami v Azure 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.
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
Stáhněte si soubor PowerPointu této architektury.
Tok dat
Toto řešení používá šablony Bicep ke spuštění nasazení systému správy objednávek Reddog a jeho podpůrné infrastruktury Azure. Architektura se skládá z jediného prostředí Azure Container Apps, které hostuje 10 aplikací mikroslužeb .NET Core. Sadu .NET Core Dapr SDK použijete k integraci s prostředky Azure prostřednictvím publikování a odběru (pub/sub) a stavebních bloků stavu a vazby. I když Dapr obvykle poskytuje flexibilitu při implementaci komponent, je toto řešení založeno na stanovisku. Služby také využívají pravidla škálování KEDA, která umožňují škálování na základě triggerů událostí a škálování na nula scénářů.
Následující seznam popisuje jednotlivé mikroslužby a konfiguraci Azure Container Apps, se kterými se nasazuje. Pokud chcete kód zobrazit, podívejte se na úložiště reddog-code na GitHubu.
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.
Uživatelské rozhraní: Řídicí panel, který zobrazuje objednávku v reálném čase a agregovaná prodejní data pro systém správy objednávek Reddog.
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.
Služba objednávek: Rozhraní CRUD API pro umístění a správu objednávek.
Úč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é jsou prezentovány uživatelským rozhraním.
Služba účtenek: Archivní program, který generuje a ukládá potvrzení objednávek pro účely auditování a historických účelů.
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.
Makeline service: Služba, která odpovídá za správu fronty aktuálních objednávek čekající na plnění. Sleduje zpracování a dokončení objednávek službou virtuálního pracovního procesu.
Virtuální pracovní proces: Program simulace pracovního procesu, který simuluje dokončení objednávek zákazníků.
Bootstrapper (není zobrazeno): Služba, která používá Entity Framework Core k inicializaci tabulek ve službě Azure SQL Database pro použití s účetní službou.
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í služby do služby | – |
Služba objednávek | Interní | Pub/sub: Azure Service Bus | HTTP |
Účetní služba | Interní | Pub/sub: Azure Service Bus | Délka tématu služby Azure Service Bus, HTTP |
Služba účtenek | Interní | Pub/sub: Azure Service Bus Vazba: Objekt blob Azure |
Délka tématu služby Azure Service Bus |
Věrnostní služba | Interní | Pub/sub: Azure Service Bus Stav: Azure Cosmos DB |
Délka tématu služby Azure Service Bus |
Makeline service | Interní | Pub/sub: Azure Service Bus Stav: Azure Redis |
Délka tématu služby Azure Service Bus, HTTP |
Virtuální pracovní proces | Nic | Vyvolání služby do služby Vazba: Cron |
– |
Poznámka:
Bootstrapper můžete také spustit v aplikaci kontejneru. Tato služba se však spustí jednou za účelem vytvoření databáze a po vytvoření potřebných objektů ve službě Azure SQL Database se škáluje na nulu.
Komponenty
Toto řešení používá následující komponenty:
- Skupiny prostředků Azure jsou logické kontejnery pro prostředky Azure. Ke strukturování všech souvisejících s tímto řešením na webu Azure Portal použijete jednu skupinu prostředků.
- Azure Container Apps je plně spravovaná služba bezserverového kontejneru, která se používá k sestavování a nasazování moderních aplikací ve velkém měřítku. V tomto řešení hostujete všech 10 mikroslužeb v Azure Container Apps a nasazujete je do jednoho prostředí Container App. Toto prostředí funguje jako zabezpečená hranice kolem systému.
- Azure Service Bus je plně spravovaný podnikový zprostředkovatel zpráv s frontami a tématy publikování a odběru. V tomto řešení ho použijte pro implementaci komponenty Dapr pub/sub. 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.
- Azure Cosmos DB je databázová služba spravovaná více modely NoSQL. Použijte ji 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 Cache for Redis je distribuovaná škálovatelná mezipaměť Redis spravovaná v paměti. Používá se jako komponenta úložiště stavů Dapr pro službu Makeline k ukládání dat do objednávek, které se zpracovávají.
- Azure SQL Database je inteligentní škálovatelná relační databázová služba vytvořená pro cloud. Vytvořte ji 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 a pak se spustí jednou před navázáním připojení k účetní službě.
- Azure Blob Storage ukládá obrovské objemy nestrukturovaných dat, jako jsou textové nebo binární soubory. Služba účtenek používá službu Blob Storage prostřednictvím výstupní vazby Dapr k uložení potvrzení objednávky.
- Traefik je přední moderní reverzní proxy server a nástroj pro vyrovnávání zatížení, který usnadňuje nasazování mikroslužeb. V tomto řešení 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ánkové aplikace (SPA). Tato konfigurace také umožňuje přímé volání rozhraní API do back-endových služeb pro účely testování.
- Azure Monitor umožňuje shromažďovat, analyzovat a reagovat na data zákaznického obsahu z prostředí infrastruktury Azure. Použijete ji s Application Insights k zobrazení protokolů kontejneru a shromažďování metrik z mikroslužeb.
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ů. Dvě další oblíbené projekty jsou NGINX a HAProxy.
Veškerá infrastruktura Azure s výjimkou Azure 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 případě byly vybrány služby Azure Service Bus, Azure Cosmos DB, Cache for Redis a Blob Storage, aby představily některé z dostupných 70 komponent Dapr. Seznam alternativních zprostředkovatelů pub/sub brokerů, úložišť stavů a výstupních vazeb najdete v dokumentaci k Dapr.
Podrobnosti scénáře
Mikroslužby jsou stále oblíbenější styl architektury, který může mít mnoho výhod, včetně vysoké škálovatelnosti, kratších vývojových cyklů a zvýšené jednoduchosti. 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 mnoho faktorů. Platforma infrastruktury obvykle vyžaduje značné znalosti složitých technologií, jako jsou orchestrátory kontejnerů.
Azure 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. Tímto způsobem nebudete muset spravovat složitou infrastrukturu. Azure Container Apps využívá opensourcové technologie.
Tato architektura využívá integraci Azure Container Apps se spravovanou verzí modulu Dapr (Distributed Application Runtime). Dapr je opensourcový projekt, který vývojářům pomáhá se souvisejícími problémy v distribuovaných aplikacích, jako je správa stavu a vyvolání služeb.
Azure Container Apps také poskytuje spravovanou verzi automatického škálování řízeného událostmi Kubernetes (KEDA). KEDA umožňuje vašim kontejnerům automatické škálování na základě příchozích událostí z externích služeb, jako je Azure Service Bus a Azure Cache for Redis.
Příchozí přenos dat HTTPS můžete také povolit ve službě Azure 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.
Pokud chcete zjistit, jak azure Container Apps porovnává s jinými platformami hostování kontejnerů v Azure, přečtěte si téma Porovnání služby Container Apps s dalšími možnostmi kontejneru Azure.
Tento článek popisuje řešení pro spuštění systému správy objednávek s 10 mikroslužbami v Azure 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í.
Tato další ř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 Microsoft Azure Well-Architected Framework.
Spolehlivost
Spolehlivost zajišťuje, že vaše aplikace může splňovat závazky, které uděláte pro vaše zákazníky. Další informace najdete v tématu Přehled pilíře spolehlivosti.
Azure Container Apps běží na pozadí v Kubernetes. Mechanismy odolnosti jsou integrované v Kubernetes, které monitorují a restartují kontejnery nebo pody, pokud dojde k problémům. Mechanismy odolnosti kombinují s integrovaným nástrojem pro vyrovnávání zatížení, aby bylo spuštěno více replik každé aplikace kontejneru. Díky této redundanci může řešení tolerovat nedostupnost instance.
Azure Monitor a Application Insights můžete použít k monitorování Azure Container Apps. Protokoly kontejnerů můžete zobrazit tak, že přejdete na portál do podokna Protokoly v každé aplikaci kontejneru a pak 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, abyste zobrazili něco podobného jako v následujícím příkladu.
Další informace o monitorování azure Container Apps najdete v tématu Monitorování aplikace v Azure Container Apps.
Optimalizace nákladů
Optimalizujte náklady tím, že se podíváte na způsoby, jak snížit zbytečné výdaje a zlepšit efektivitu provozu. Další informace najdete v tématu Přehled pilíře optimalizace nákladů.
Pomocí cenové kalkulačky Azure můžete odhadnout náklady na služby v této architektuře.
Efektivita výkonu
Efektivita výkonu je schopnost vaší úlohy škálovat tak, aby splňovala požadavky, které na ni umístíte efektivním způsobem. Další informace najdete v tématu Přehled pilíře efektivity výkonu.
Toto řešení spoléhá na implementaci KEDA ve službě Azure Container Apps pro škálování řízené událostmi. Když nasadíte virtuální zákaznickou službu, bude průběžně zadávat objednávky, což způsobí vertikální navýšení kapacity služby objednávek 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 neustále kontroluje plnění objednávky. Další informace o škálování v kontejnerových aplikacích najdete v tématu Nastavení pravidel škálování v Azure Container Apps. Další informace o nástrojích KEDA Scalers najdete v dokumentaci KEDA ve službě Scalers.
Nasazení tohoto scénáře
Pokyny k nasazení najdete v ukázce Red Dog: Nasazení Azure Container Apps na GitHubu.
Integrace mikroslužeb Red Dog: Integrace mikroslužeb je zabalená šablona aplikace, která vychází z předchozích prostředků kódu, která demonstruje integraci Azure Container Apps, App Service, Functions a API Management a zřídí infrastrukturu, nasadí kód pomocí GitHub Actions.
Přispěvatelé
Tento článek spravuje Microsoft. Původně byla napsána následujícími přispěvateli.
Hlavní autor:
- Alice Gibbons | Cloud Native Global Black Belt
Další přispěvatelé:
- Kendall Roden | Vedoucí programový manažer
- Lynn Orrell | Hlavní specialista řešení (GBB)
Pokud chcete zobrazit neveřejné profily LinkedIn, přihlaste se na LinkedIn.
Další kroky
- Dokumentace ke službě Azure Container Apps
- Porovnání nabídek kontejnerů v Azure
- Další implementace systému správy objednávek Reddog: