Mapování eShopOnContainers na služby Azure

Návod

Tento obsah je výňatek z elektronické knihy Architektura cloud-native .NET aplikací pro Azure, která je k dispozici na .NET Docs nebo jako bezplatné PDF ke stažení, které si můžete přečíst offline.

miniatura obálky e-knihy Cloud-nativní aplikace .NET pro Azure.

I když to není povinné, Azure je vhodná pro podporu eShopOnContainers, protože projekt byl vytvořen jako aplikace nativní pro cloud. Aplikace je sestavená pomocí .NET, takže může běžet v kontejnerech Linuxu nebo Windows v závislosti na hostiteli Dockeru. Aplikace se skládá z několika autonomních mikroslužeb, z nichž každá má vlastní data. Různé mikroslužby představují různé přístupy, od jednoduchých operací CRUD až po složitější vzory DDD a CQRS. Mikroslužby komunikují s klienty přes protokol HTTP a mezi sebou prostřednictvím komunikace založené na zprávách. Aplikace podporuje také více platforem pro klienty, protože přijímá protokol HTTP jako standardní komunikační protokol a zahrnuje mobilní aplikace ASP.NET Core a Xamarin, které běží na platformách Android, iOS a Windows. (Od května 2024 není Xamarin podporován.)

Architektura aplikace se zobrazuje na obrázku 2–5. Vlevo jsou klientské aplikace rozdělené na mobilní, tradiční webové a jednostránkové aplikace (SPA). Napravo jsou komponenty na straně serveru, které tvoří systém, z nichž každý může být hostovaný v kontejnerech Dockeru a clusterech Kubernetes. Tradiční webová aplikace využívá ASP.NET aplikaci Core MVC zobrazenou žlutou barvou. Tato aplikace a mobilní a webové aplikace SPA komunikují s jednotlivými mikroslužbami prostřednictvím jedné nebo více bran rozhraní API. Brány rozhraní API se řídí vzorem back-endů pro front-endy (BFF), což znamená, že každá brána je navržená tak, aby podporovala daného front-endového klienta. Jednotlivé mikroslužby jsou uvedeny napravo od bran rozhraní API a zahrnují obchodní logiku i určitý druh úložiště trvalosti. Různé služby využívají databáze SQL Serveru, instance mezipaměti Redis a úložiště MongoDB/CosmosDB. Úplně vpravo je sběrnice událostí systému, která se používá pro komunikaci mezi mikroslužbami.

Architektura eShopOnContainers – obrázek 2–5 Architektura eShopOnContainers.

Komponenty této architektury na straně serveru se snadno mapují na služby Azure.

Orchestrace kontejnerů a shlukování

Služby hostované kontejnerem aplikace, od aplikací ASP.NET Core MVC až po jednotlivé mikroslužby katalogu a objednávání, je možné hostovat a spravovat ve službě Azure Kubernetes Service (AKS). Aplikace se může spouštět místně v Dockeru a Kubernetes a stejné kontejnery je pak možné nasadit do přípravného a produkčního prostředí hostovaného v AKS. Tento proces je možné automatizovat, jak uvidíme v další části.

AKS poskytuje služby pro správu pro jednotlivé clustery kontejnerů. Aplikace nasadí samostatné kontejnery pro každou mikroslužbu v clusteru AKS, jak je znázorněno výše v diagramu architektury. Tento přístup umožňuje každé jednotlivé službě nezávisle škálovat podle požadavků na prostředky. Každou mikroslužbu je také možné nasadit nezávisle a v ideálním případě by taková nasazení měla mít nulový výpadek systému.

Brána rozhraní API

Aplikace eShopOnContainers má několik front-endových klientů a více různých back-endových služeb. Mezi klientskými aplikacemi a mikroslužbami, které je podporují, neexistuje žádná korespondence 1:1. V takovém scénáři může být složité psát klientský software tak, aby bezpečně interagoval s různými back-endovými službami. Každý klient by potřeboval vyřešit tuto složitost samostatně, což by vedlo k duplikaci a mnoha místům, kde by bylo možné provádět aktualizace při změně služeb nebo nových zásadách.

Azure API Management (APIM) pomáhá organizacím publikovat rozhraní API konzistentním a spravovatelným způsobem. APIM se skládá ze tří komponent: brány rozhraní API a portálu pro správu (portál Azure Portal) a portálu pro vývojáře.

Brána rozhraní API přijímá volání rozhraní API a směruje je do příslušného back-endového rozhraní API. Může také poskytovat další služby, jako je ověřování klíčů rozhraní API nebo tokenů JWT a transformace rozhraní API za běhu bez úprav kódu (například pro klienty, kteří očekávají starší rozhraní).

Na webu Azure Portal definujete schéma rozhraní API a zabalíte různá rozhraní API do produktů. Také nastavíte uživatelský přístup, zobrazíte sestavy a nakonfigurujete politiky pro kvóty nebo transformace.

Portál pro vývojáře slouží jako hlavní prostředek pro vývojáře. Poskytuje vývojářům dokumentaci k rozhraní API, interaktivní testovací konzolu a reporty o jejich vlastním používání. Vývojáři také používají portál k vytváření a správě vlastních účtů, včetně podpory klíče předplatného a rozhraní API.

Pomocí služby APIM můžou aplikace zveřejnit několik různých skupin služeb, z nichž každý poskytuje back-end pro konkrétního front-endového klienta. ApiM se doporučuje pro složité scénáře. Pro jednodušší potřeby lze použít odlehčenou službu API Gateway Ocelot. Aplikace eShopOnContainers používá Ocelot kvůli své jednoduchosti a proto, že ji lze nasadit do stejného aplikačního prostředí jako samotná aplikace. Přečtěte si další informace o eShopOnContainers, APIM a Ocelot.

Další možností, pokud vaše aplikace používá AKS, je nasadit Azure Gateway Ingress Controller jako pod v rámci vašich clusterů AKS. Tento přístup umožňuje vaší clusteru integrovat se službou Azure Application Gateway, což bráně umožňuje vyrovnávat zatížení provozu do podů AKS. Přečtěte si další informace o kontroleru příchozího přenosu dat služby Azure Gateway pro AKS.

Údaje

Různé back-endové služby používané eShopOnContainers mají různé požadavky na úložiště. Několik mikroslužeb používá databáze SQL Serveru. Mikroslužba Basket využívá mezipaměť Redis pro svou trvalost. Mikroslužba Locations očekává rozhraní MongoDB API pro svá data. Azure podporuje každý z těchto formátů dat.

Pro podporu databáze SQL Serveru nabízí Azure produkty pro všechno od jednotlivých databází až po vysoce škálovatelné elastické fondy SQL Database. Jednotlivé mikroslužby je možné nakonfigurovat tak, aby komunikovaly s vlastními databázemi SQL Serveru rychle a snadno. Tyto databáze je možné podle potřeby škálovat tak, aby podporovaly jednotlivé samostatné mikroslužby podle svých potřeb.

Aplikace eShopOnContainers ukládá aktuální nákupní košík uživatele při žádostech. Tento aspekt spravuje mikroslužba košíku, která ukládá data do mezipaměti Redis. Ve vývoji je možné tuto mezipaměť nasadit v kontejneru, zatímco v produkčním prostředí může využívat Azure Cache for Redis. Azure Cache for Redis je plně spravovaná služba nabízející vysoký výkon a spolehlivost bez nutnosti nasazovat a spravovat instance nebo kontejnery Redis sami.

Mikroslužba Locations používá pro trvalost databázi MongoDB NoSQL. Během vývoje je možné databázi nasadit ve vlastním kontejneru, zatímco v produkčním prostředí může služba využívat rozhraní API služby Azure Cosmos DB pro MongoDB. Jednou z výhod služby Azure Cosmos DB je její schopnost využívat několik různých komunikačních protokolů, včetně rozhraní SQL API a běžných rozhraní API NoSQL, včetně MongoDB, Cassandra, Gremlin a Azure Table Storage. Azure Cosmos DB nabízí plně spravovanou a globálně distribuovanou databázi jako službu, která může škálovat podle potřeb služeb, které ji používají.

Distribuovaná data v aplikacích nativních pro cloud jsou podrobněji popsána v kapitole 5.

Event Bus

Aplikace používá události ke komunikaci změn mezi různými službami. Tuto funkci lze implementovat s různými implementacemi a místně aplikace eShopOnContainers používá RabbitMQ. Při hostování v Azure by aplikace využila službu Azure Service Bus pro zasílání zpráv. Azure Service Bus je plně spravovaný zprostředkovatel zpráv integrace, který umožňuje aplikacím a službám vzájemně komunikovat odděleným, spolehlivým a asynchronním způsobem. Azure Service Bus podporuje jednotlivé fronty i samostatná témata pro scénáře publikování a odběru. Aplikace eShopOnContainers by využila témata se službou Azure Service Bus, aby podpořila distribuci zpráv z jedné mikroslužby do jakékoli jiné mikroslužby, která by potřebovala reagovat na danou zprávu.

Odolnost

Po nasazení do produkčního prostředí by aplikace eShopOnContainers mohla využít několik dostupných služeb Azure ke zlepšení odolnosti. Aplikace zveřejňuje zdravotní kontroly, které lze integrovat s Application Insights, aby poskytovaly sestavy a upozornění založené na dostupnosti aplikace. Prostředky Azure také poskytují diagnostické protokoly, které je možné použít k identifikaci a opravám chyb a problémů s výkonem. Protokoly prostředků poskytují podrobné informace o tom, kdy a jak aplikace používá různé prostředky Azure. Další informace o funkcích odolnosti nativních pro cloud najdete v kapitole 6.