Sdílet prostřednictvím


Mapování aplikace eShopOnContainers ke službám Azure

Tip

Tento obsah je výňatek z eBooku, Architekting Cloud Native .NET Applications for Azure, který je k dispozici na webu Docs pro .NET nebo jako soubor PDF zdarma ke stažení, který si můžete přečíst offline.

Cloud Native .NET apps for Azure eBook cover thumbnail.

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.

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.

eShopOnContainers ArchitectureObrázek 2–5 Architektura eShopOnContainers.

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

Orchestrace kontejnerů a clustering

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 při psaní klientského softwaru pro rozhraní s různými back-endovými službami zabezpečeně složité. 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é nakonfigurujete uživatelský přístup, zobrazíte sestavy a nakonfigurujete zásady 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 sestavy o vlastním využití. 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 kontroler příchozího přenosu dat služby Azure Gateway jako pod v rámci clusteru AKS. Tento přístup umožňuje clusteru integrovat se službou Aplikace Azure 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.

Data

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. podpora Azure 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 mezi požadavky. 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.

Sběrnice událostí

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 podporu scénářů pro předplatitele vydavatele. Aplikace eShopOnContainers využívá témata se službou Azure Service Bus k podpoře distribuce zpráv z jedné mikroslužby do jakékoli jiné mikroslužby, která 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 publikuje kontroly stavu, které je možné integrovat s aplikačními Přehledy, aby poskytovala sestavy a výstrahy na základě 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.