Schémata komunikace nativní pro cloud

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.

Při vytváření systému nativního pro cloud se komunikace stává významným rozhodnutím o návrhu. Jak front-endová klientská aplikace komunikuje s back-endovou mikroslužbou? Jak vzájemně komunikují back-endové mikroslužby? Jaké jsou principy, vzory a osvědčené postupy, které je potřeba vzít v úvahu při implementaci komunikace v aplikacích nativních pro cloud?

Důležité informace o komunikaci

V monolitické aplikaci je komunikace jednoduchá. Moduly kódu se spouštějí společně ve stejném spustitelném prostoru (procesu) na serveru. Tento přístup může mít výhody výkonu, protože všechno běží společně ve sdílené paměti, ale výsledkem je úzce propojený kód, který se obtížně udržuje, vyvíjí a škáluje.

Nativní cloudové systémy implementují architekturu založenou na mikroslužbách s mnoha malými nezávislými mikroslužbami. Každá mikroslužba se spouští v samostatném procesu a obvykle běží uvnitř kontejneru, který je nasazený do clusteru.

Cluster seskupí fond virtuálních počítačů a vytvoří vysoce dostupné prostředí. Spravují se pomocí nástroje pro orchestraci, který zodpovídá za nasazení a správu kontejnerizovaných mikroslužeb. Obrázek 4–1 ukazuje cluster Kubernetes nasazený do cloudu Azure s plně spravovanými službami Azure Kubernetes Services.

A Kubernetes cluster in Azure

Obrázek 4–1 Cluster Kubernetes v Azure

V rámci clusteru vzájemně komunikují mikroslužby prostřednictvím rozhraní API a technologií zasílání zpráv.

I když poskytují mnoho výhod, mikroslužby nejsou k dispozici žádné obědy zdarma. Volání místních metod v procesu mezi komponentami jsou nyní nahrazena síťovými voláními. Každá mikroslužba musí komunikovat přes síťový protokol, což zvyšuje složitost systému:

  • Zahlcení sítě, latence a přechodné chyby jsou trvalým zájmem.

  • Odolnost (tj. opakování neúspěšných požadavků) je nezbytná.

  • Některá volání musí být idempotentní , pokud chcete zachovat konzistentní stav.

  • Každá mikroslužba musí ověřovat a autorizovat volání.

  • Každá zpráva musí být serializována a poté deserializována - což může být nákladné.

  • Šifrování a dešifrování zpráv je důležité.

Kniha Mikroslužby .NET: Architektura pro kontejnerizované aplikace .NET, která je k dispozici zdarma od Microsoftu, poskytuje podrobné pokrytí komunikačních vzorů pro aplikace mikroslužeb. V této kapitole poskytujeme základní přehled těchto vzorů spolu s možnostmi implementace, které jsou k dispozici v cloudu Azure.

V této kapitole budeme nejprve řešit komunikaci mezi front-endovými aplikacemi a back-endovými mikroslužbami. Pak se podíváme na back-endové mikroslužby, které vzájemně komunikují. Prozkoumáme komunikační technologii up a gRPC. Nakonec se podíváme na nové inovativní komunikační vzory využívající technologii service mesh. Podíváme se také na to, jak cloud Azure poskytuje různé druhy backingových služeb pro podporu komunikace nativní pro cloud.