Klíčové poznatky architektury mikroslužeb .NET
Tip
Tento obsah je výňatek z eBooku, architektury mikroslužeb .NET pro kontejnerizované aplikace .NET, které jsou k dispozici na .NET Docs nebo jako zdarma ke stažení PDF, které lze číst offline.
Shrnutí a klíčové poznatky jsou nejdůležitější závěry tohoto průvodce.
Výhody používání kontejnerů Řešení založená na kontejnerech poskytují důležité úspory nákladů, protože pomáhají snížit problémy s nasazením způsobené selháním závislostí v produkčních prostředích. Kontejnery výrazně zlepšují DevOps a produkční operace.
Kontejnery budou všudypřítomné. Kontejnery založené na Dockeru se v odvětví stávají de facto standardem, který podporují klíčové dodavatele v ekosystémech Windows a Linuxu, jako jsou Microsoft, Amazon AWS, Google a IBM. Docker bude pravděpodobně brzy všudypřítomný v cloudových i místních datacentrech.
Kontejnery jako jednotka nasazení Kontejner Dockeru se stává standardní jednotkou nasazení pro libovolnou serverovou aplikaci nebo službu.
Mikroslužby. Architektura mikroslužeb se stává upřednostňovaným přístupem pro distribuované a rozsáhlé nebo složité důležité aplikace založené na mnoha nezávislých subsystémech ve formě autonomních služeb. V architektuře založené na mikroslužbách je aplikace vytvořená jako kolekce služeb, které se vyvíjejí, testují, nasazují, nasazují a škálují nezávisle. Každá služba může obsahovat jakoukoli související autonomní databázi.
Návrh řízený doménou a SOA. Vzory architektury mikroslužeb se odvozují od architektury orientované na služby (SOA) a návrhu řízeného doménou (DDD). Při návrhu a vývoji mikroslužeb pro prostředí s vyvíjejícími se obchodními potřebami a pravidly je důležité zvážit přístupy a vzory DDD.
Problémy s mikroslužbami Mikroslužby nabízejí mnoho výkonných funkcí, jako je nezávislé nasazení, silná hranice subsystému a technologická rozmanitost. Kromě toho také vyvolávají řadu nových problémů souvisejících s vývojem distribuovaných aplikací, jako jsou fragmentované a nezávislé datové modely, odolná komunikace mezi mikroslužbami, konečná konzistence a provozní složitost, která vede k agregaci informací o protokolování a monitorování z několika mikroslužeb. Tyto aspekty představují mnohem vyšší úroveň složitosti než tradiční monolitická aplikace. V důsledku toho jsou vhodné pouze konkrétní scénáře pro aplikace založené na mikroslužbách. Patří sem velké a složité aplikace s několika vyvíjejícími se subsystémy. V těchto případech je vhodné investovat do složitější softwarové architektury, protože bude poskytovat lepší dlouhodobou flexibilitu a údržbu aplikací.
Kontejnery pro libovolnou aplikaci. Kontejnery jsou vhodné pro mikroslužby, ale mohou být užitečné také pro monolitické aplikace založené na tradiční rozhraní .NET Framework při použití kontejnerů Systému Windows. Výhody používání Dockeru, jako je řešení mnoha problémů s nasazením do produkčního prostředí a poskytování špičkových vývojových a testovacích prostředí, platí pro mnoho různých typů aplikací.
Rozhraní příkazového řádku a integrované vývojové prostředí (IDE) Pomocí nástrojů Microsoftu můžete pomocí preferovaného přístupu vyvíjet kontejnerizované aplikace .NET. Pomocí rozhraní příkazového řádku a prostředí založeného na editoru můžete vyvíjet pomocí rozhraní příkazového řádku Dockeru a editoru Visual Studio Code. Nebo můžete použít přístup zaměřený na integrované vývojové prostředí (IDE) se sadou Visual Studio a jeho jedinečné funkce pro Docker, jako je ladění s více kontejnery.
Odolné cloudové aplikace. V cloudových systémech a distribuovaných systémech obecně existuje vždy riziko částečného selhání. Vzhledem k tomu, že klienti a služby jsou samostatné procesy (kontejnery), nemusí služba včas reagovat na žádost klienta. Služba může být například z důvodu částečného selhání nebo údržby. služba může být přetížena a pomalu reaguje na požadavky; nebo kvůli problémům se sítí nemusí být po krátkou dobu přístupná. Cloudová aplikace proto musí tyto chyby přijmout a mít zavedenou strategii pro reakci na tato selhání. Tyto strategie můžou zahrnovat zásady opakování (opětovné odeslání zpráv nebo žádosti o opakování) a implementaci vzorů jističe, aby se zabránilo exponenciálnímu zatížení opakovaných požadavků. Cloudové aplikace musí mít v podstatě odolné mechanismy , a to buď na základě cloudové infrastruktury, nebo vlastní, protože ty vysoké úrovně poskytované orchestrátory nebo sběrnicemi služeb.
Zabezpečení. Náš moderní svět kontejnerů a mikroslužeb může vystavit nová ohrožení zabezpečení. Existuje několik způsobů implementace základního zabezpečení aplikací na základě ověřování a autorizace. Zabezpečení kontejnerů ale musí zvážit další klíčové komponenty, které mají za následek ze své podstaty bezpečnější aplikace. Důležitým prvkem vytváření bezpečnějších aplikací je zabezpečený způsob komunikace s jinými aplikacemi a systémy, což často vyžaduje přihlašovací údaje, tokeny, hesla a podobně, běžně označované jako tajné kódy aplikací. Jakékoli zabezpečené řešení musí dodržovat osvědčené postupy zabezpečení, jako je šifrování tajných kódů během přenosu a neaktivních uložených dat a zabránění úniku tajných kódů při použití konečné aplikace. Tyto tajné kódy je potřeba bezpečně ukládat a uchovávat stejně jako při použití služby Azure Key Vault.
Orchestrátory. Orchestrátory založené na kontejnerech, jako jsou Azure Kubernetes Service a Azure Service Fabric, jsou klíčovou součástí jakékoli významné mikroslužby a aplikace založené na kontejnerech. Tyto aplikace s sebou nesou vysokou složitost, potřeby škálovatelnosti a procházejí konstantním vývojem. Tato příručka představila orchestrátory a jejich roli v řešeních založených na mikroslužbách a kontejnerech. Pokud se vaše aplikace potřebuje přesunout ke složitým kontejnerizovaným aplikacím, najdete v ní užitečné další zdroje informací o orchestrátorech.