Představení referenční aplikace eShopOnContainers

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.

Microsoft ve spolupráci s předními odborníky z komunity vytvořil plnohodnotnou referenční aplikaci pro mikroslužby nativní pro cloud, eShopOnContainers. Tato aplikace je sestavená tak, aby předváděla použití .NET a Dockeru a volitelně Azure, Kubernetes a Sady Visual Studio k vytvoření online výkladní skříně.

eShopOnContainers Sample App Screenshot.

Obrázek 2–1 Snímek obrazovky ukázkové aplikace eShopOnContainers

Před zahájením této kapitoly doporučujeme stáhnout referenční aplikaci eShopOnContainers. Pokud to uděláte, mělo by být pro vás snazší postupovat společně s zobrazenými informacemi.

Funkce a požadavky

Začněme kontrolou funkcí a požadavků aplikace. Aplikace eShopOnContainers představuje online obchod, který prodává různé fyzické produkty, jako jsou trička a kávové hrnky. Pokud jste si předtím koupili cokoliv online, měli byste mít zkušenosti s používáním obchodu poměrně známé. Tady jsou některé základní funkce, které store implementuje:

  • Výpis položek katalogu
  • Filtrování položek podle typu
  • Filtrování položek podle značky
  • Přidání položek do nákupního košíku
  • Úprava nebo odebrání položek z košíku
  • Pokladna
  • Registrace účtu
  • Přihlásit se
  • Odhlásit se
  • Kontrola objednávek

Aplikace má také následující požadavky, které nejsou funkční:

  • Musí být vysoce dostupná a musí se automaticky škálovat, aby splňovala zvýšený provoz (a po poklesu provozu se zase sníží).
  • Měl by poskytovat snadno použitelné monitorování jeho stavu a diagnostických protokolů, které vám pomůžou vyřešit případné problémy, se kterými se setká.
  • Měla by podporovat agilní proces vývoje, včetně podpory kontinuální integrace a nasazování (CI/CD).
  • Kromě dvou webových front-endů (tradiční a jednostrábová aplikace) musí aplikace také podporovat mobilní klientské aplikace s různými druhy operačních systémů.
  • Měla by podporovat hostování napříč platformami a vývoj pro různé platformy.

eShopOnContainers reference application development architecture.

Obrázek 2–2 Referenční architektura vývoje aplikací pro eShopOnContainers

Aplikace eShopOnContainers je přístupná z webových nebo mobilních klientů, kteří přistupují k aplikaci přes HTTPS, a to buď na serverovou aplikaci ASP.NET Core MVC, nebo z příslušné brány rozhraní API. Brány rozhraní API nabízejí několik výhod, jako je oddělení back-endových služeb od jednotlivých front-endových klientů a zajištění lepšího zabezpečení. Aplikace také využívá související vzor označovaný jako back-endy pro front-endy (BFF), který doporučuje vytvořit samostatné brány rozhraní API pro každého front-endového klienta. Referenční architektura ukazuje rozdělení bran rozhraní API na základě toho, jestli požadavek pochází z webového nebo mobilního klienta.

Funkce aplikace jsou rozdělené do mnoha různých mikroslužeb. Za ověřování a identitu jsou zodpovědné služby, výpis položek z katalogu produktů, správa nákupních košíků uživatelů a zadávání objednávek. Každá z těchto samostatných služeb má své vlastní trvalé úložiště. Neexistuje žádné primární úložiště dat, se kterým spolupracují všechny služby. Místo toho se koordinace a komunikace mezi službami provádí podle potřeby a pomocí sběrnice zpráv.

Každá z různých mikroslužeb je navržena odlišně podle jejich individuálních požadavků. Tento aspekt znamená, že se jejich technologická sada může lišit, i když jsou všechny vytvořené pomocí .NET a navržené pro cloud. Jednodušší služby poskytují základní přístup CRUD (Create-Read-Update-Delete) k podkladovým úložištům dat, zatímco pokročilejší služby používají přístupy a vzory návrhu řízené doménou ke správě obchodní složitosti.

Different kinds of microservices

Obrázek 2–3 Různé druhy mikroslužeb.

Přehled kódu

Vzhledem k tomu, že používá mikroslužby, aplikace eShopOnContainers obsahuje v úložišti GitHub poměrně několik samostatných projektů a řešení. Kromě samostatných řešení a spustitelných souborů jsou různé služby navržené tak, aby běžely uvnitř vlastních kontejnerů, a to jak během místního vývoje, tak i v době běhu v produkčním prostředí. Obrázek 2–4 znázorňuje úplné řešení sady Visual Studio, ve kterém jsou uspořádané různé projekty.

Projects in Visual Studio solution.

Obrázek 2–4 Projekty v řešení sady Visual Studio

Kód je uspořádaný tak, aby podporoval různé mikroslužby, a v rámci každé mikroslužby se kód rozdělí na logiku domény, aspekty infrastruktury a uživatelské rozhraní nebo koncový bod služby. V mnoha případech závislosti jednotlivých služeb mohou být splněny službami Azure v produkčním prostředí a alternativními možnostmi místního vývoje. Pojďme se podívat, jak se požadavky aplikace mapují na služby Azure.

Principy mikroslužeb

Tato kniha se zaměřuje na aplikace nativní pro cloud sestavené pomocí technologie Azure. Další informace o osvědčených postupech mikroslužeb a o tom, jak navrhovat aplikace založené na mikroslužbách, najdete v doprovodné knize Mikroslužby .NET: Architektura pro kontejnerizované aplikace .NET.