Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
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 vytvořená k ukázce použití .NET a Dockeru, a volitelně Azure, Kubernetes a Visual Studio, pro vytvoření internetového obchodu.
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ší sledovat předkládané informace.
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 již dříve nakupovali online, zážitek z používání obchodu by měl být 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é nástroje pro monitorování stavu a diagnostických protokolů, které pomohou při odstraňování jakýchkoliv problémů, 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ánková 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.
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 nazývaný jako backendy pro frontendy (BFF), který doporučuje vytvořit samostatné API brány 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 úložištím dat, zatímco pokročilejší služby používají návrhové přístupy a vzory Domain-Driven ke správě komplexnosti podnikání.
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.
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. Zkoumejme, 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.