Co je .NET Aspire?

Dokončeno

Cloudové ekosystémy, jako jsou Microsoft Azure a Amazon Web Services (AWS), jsou hluboce vložené do IT průmyslu a oblíbených hostitelských řešení pro webové aplikace a webové služby. Je pravděpodobné, že cloudový hostitelský systém je výchozí volbou pro vaše aplikace. Proto je potřeba zajistit, aby vytvořené aplikace byly navrženy tak, aby z nich využívaly maximální výhody.

Nativní cloudová aplikace je aplikace, kterou navrhujete speciálně tak, aby běžela v cloudu. Aplikace často vykazují určité architektonické vzory, takže výkon, škálovatelnost a spolehlivost jsou optimální.

Představte si, že pracujete pro venkovní oblečení a vybavení společnosti. Rada vás požádá o vývoj nové webové aplikace eShop pro hlavní web společnosti určený pro zákazníky. Váš tým je obeznámen s modelem mikroslužeb a chcete vědět, jestli použití rozhraní .NET Aspire může usnadnit projekt.

V této lekci se dozvíte více o architekturách nativních pro cloud a seznámíte se s výzvami, které je možné při jejich sestavování zapojit. Uvidíte také, jak může Aspirace platformy .NET tyto výzvy řešit.

Co je aplikace nativní pro cloud?

Nativní cloudová aplikace je aplikace, která je navržená tak, aby optimálně využívala cloudové infrastruktury k zajištění nejlepšího výkonu, dostupnosti a odolnosti. Existuje šest pilířů softwarových architektur nativních pro cloud:

  • Cloudová infrastruktura. Aplikace nativní pro cloud se nasazují do řešení pro hostování cloudu a ne do místních serverových farem.
  • Mikroslužby. Nativní cloudové aplikace se implementují jako sada mikroslužeb, z nichž každá implementuje malou část obchodních funkcí.
  • Jsou jím kontejnery. Mikroslužby a další části aplikace se vyvíjejí a nasazují v kontejnerech, aby se zajistilo konzistentní spouštěcí prostředí.
  • Backing services. Pomocné prostředky, jako jsou databáze a služby ukládání do mezipaměti, lze použít k poskytování běžných funkcí mikroslužeb.
  • Moderní design. Nativní cloudové aplikace odpovídají metodologii dvanáctifaktorové aplikace, která zahrnuje principy, jako je kontinuální integrace nebo průběžné nasazování (CI/CD), disposability, vazba portů atd.
  • Automatizace. Aplikace nativní pro cloud používají infrastrukturu jako kód (IaC) k automatizaci zřizování a nasazení platformy.

Koncepční diagram znázorňující šest pilířů aplikací nativních pro cloud

Kvůli zajištění flexibility se aplikace nativní pro cloud skládá ze sady mikroslužeb. Každá mikroslužba:

  • Implementuje jednu část kompletních funkcí.
  • Provádí se ve vlastním procesu a je izolovaný od ostatních, často ve vyhrazeném kontejneru.
  • Sestavuje ho samostatný tým.
  • Komunikuje s ostatními, ale je volně svázán.

Každý tým zvolí jazyky a technologie, které preferují implementaci mikroslužby. Každá mikroslužba se nasazuje a škáluje nezávisle na ostatních.

Následující diagram znázorňuje rozdíly mezi tradiční monolitickou webovou aplikací a webovou aplikací složenou z mikroslužeb.

Koncepční diagram znázorňující rozdíly mezi monolitickou webovou aplikací a aplikací složenou z mikroslužeb

Aplikace nativní pro cloud můžou realizovat mnoho výhod pro vaši firmu. Příklad:

  • Hostováním aplikace v cloudu nemusíte vytvářet a udržovat infrastrukturu, jako jsou hostitelské servery, operační systémy a podpůrné služby sami.
  • Vzhledem k tomu, že každá mikroslužba se vyvíjí nezávisle, můžete v nich průběžně nasazovat nové funkce, aniž byste museli čekat na další týmy nebo milníky hlavní verze.
  • Vzhledem k tomu, že každá mikroslužba běží v jednom nebo několika kontejnerech, víte, že prostředí je ve všech testovacích, přípravných a produkčních prostředích stejné.
  • Vzhledem k tomu, že můžete použít systém orchestrace kontejnerů, jako je Kubernetes, můžete rychle nasadit další instance, aby reagovaly na rostoucí poptávku.

Výzvy předvzené aplikacemi nativními pro cloud

Aplikace nativní pro cloud, která se skládá z několika mikroslužeb a s mnoha funkcemi, se může stát složitými a představují výzvy, které nejdou objevit u monolitických aplikací. Příklad:

  • Definice aplikace Pokud není dokumentováno pečlivě, může být pro vývojáře obtížné pochopit, které integrace tvoří kompletní aplikaci nativní pro cloud.
  • Komunikace. Každá mikroslužba může potřebovat vyměňovat zprávy nebo data s jinými mikroslužbami, aby mohla formulovat odpověď na žádost uživatele. I když musíte takovou komunikaci povolit, musíte to udělat způsobem, který vzájemně nepropojí mikroslužby. Potřebujete také komunikaci, která zůstane spolehlivá v době vysoké poptávky nebo během selhání služeb.
  • Odolnost. Žádná hostitelská služba nemůže být k dispozici 100 %. Ve výjimečných případech, kdy je mikroslužba nedostupná, je nutné zajistit, aby aplikace zpracovávala chyby robustním způsobem a uchová požadavky, dokud služba nevrátí.
  • Distribuovaná data Každá mikroslužba implementuje vlastní vrstvu úložiště dat a nemusí používat stejný databázový server jako ostatní. Musíte zvážit, jak dotazovat na data z více mikroslužeb a jak implementujete transakce.
  • Tajemství. Pokud vaše aplikace zpracovává jakýkoli druh citlivých dat, každá mikroslužba musí před vrácením odpovědi ověřit všechny požadavky, které obdrží. Tajné kódy, jako jsou asymetrická a symetrická šifrovací klíče, se často používají k ochraně dat a k pozitivní identifikaci volajících uživatelů a mikroslužeb. Musíte zvážit, jak se tyto tajné kódy ukládají a vyměňují v nativní cloudové aplikaci.
  • Onboarding pro vývojáře Noví vývojáři musí být schopni porozumět architektuře aplikace a rychle s ní pracovat. Je nutné zajistit, aby se noví vývojáři mohli rychle zorientovat bez velkého množství znalostí mezi doménami nebo nutnosti místního nastavení.

Návrh aplikací nativních pro cloud v poslední době získává popularitu, ale výzvy podobné těm v této části nedoporučuje, aby některé týmy tento vzor přijali. .NET má například všechny funkce potřebné k vyřešení těchto problémů, ale řešení můžou potřebovat značné investice do trénování a vlastního kódu.

Co je .NET Aspire?

.NET Aspire je nová sada připravená pro cloud, která je navržená tak, aby vývojářům umožňovala rychle a snadno vytvářet aplikace nativní pro cloud. Pojďme se podívat na funkce rozhraní .NET Aspire, které řeší problémy, které jsme popsali.

Orchestrace

Mikroslužby a jejich volně svázané povahy zvyšují flexibilitu nasazené aplikace, ale mohou znesnadnit konfiguraci. Seznam služeb, které tvoří aplikaci, se může stát nejasným a koncový bod, kde je k dispozici mikroslužba, může být obtížné identifikovat. .NET Aspire poskytuje funkce orchestrace tak, aby:

  • Pro všechny týmy můžete jasně určit projekty .NET, kontejnery, spustitelné soubory a cloudové prostředky, které tvoří aplikaci.
  • Mikroslužby můžou automaticky zjišťovat koncové body pro všechny integrace aplikace. .NET Aspire provádí zjišťování této služby tím, že spravuje připojovací řetězec a v případě potřeby je vloží do mikroslužeb.

Při vytváření řešení .NET Aspire se v řešení zobrazí nový projekt s názvem <SolutionName>. AppHost. Tento projekt implementuje orchestraci pro vaši aplikaci a měli byste se ujistit, že se jedná o počáteční projekt řešení.

Integrace

Mikroslužby obvykle mají funkční požadavky na komplexní backingové služby, které podporují jejich funkce. Příklad:

  • Úložiště dat – Aby mikroslužby podporovaly katalogy produktů, nákupní košíky, úložiště identit a další funkce, musí mikroslužby uchovávat data ve strukturovaných nebo částečně strukturovaných úložištích.
  • Ukrývání. Aby se maximalizoval výkon, můžou mikroslužby ukládat částečné nebo úplné odpovědi do mezipaměti, aby následné podobné požadavky mohly být rychleji splněny.
  • Zasílání zpráv. Volně svázané mikroslužby musí vzájemně komunikovat a musíte zajistit, aby byla tato komunikace spolehlivá i v případě, že je provoz náročný na vysoké nebo síťové podmínky. Běžnou požadavkem je služba, která zařadí zprávy od odesílatelů do fronty a distribuuje je příjemcům.

V .NET Aspire je snadné implementovat tyto podpůrné služby v každé mikroslužbě, protože zásobník zahrnuje integrace s .NET Aspire. Každá integrace je balíček NuGet, který můžete přidat do svého řešení a implementuje standardní rozhraní do backingové služby. Toto standardní rozhraní zajišťuje, aby se vaše mikroslužba připojovala ke svým backing službám konzistentně a bezproblémově.

Integrované integrace rozhraní .NET Aspire zahrnují:

  • Integrace úložiště dat, například pro PostgreSQL, SQL Database, Azure Cosmos DB a MongoDB.
  • Integrace ukládání do mezipaměti, jako je integrace pro Redis.
  • Integrace zasílání zpráv, například pro RabbitMQ a Azure Service Bus

Důležité

.NET Aspire zahrnuje celou řadu integrací, které pracují se službami Azure, jako jsou Azure Storage a Azure Service Bus, ale Azure se nevyžaduje pro projekty .NET Aspire a fungují stejně dobře s backingovými službami mimo Azure, jako je RabbitMQ a MongoDB.

Nástroje

.NET Aspire také přidá do nástrojů dostupných pro vývojáře v sadě Visual Studio. Příklad:

  • Nové šablony projektů umožňují vytvářet řešení .NET Aspire s několika kroky v průvodci.
  • Řídicí panel .NET Aspire je webové rozhraní, které se zobrazí při každém spuštění řešení ze sady Visual Studio. Tento řídicí panel zobrazí všechny mikroslužby a backingové služby pro aplikaci a můžete je volat k testování. Zobrazuje také nástroje pro měření výkonu a monitorování.
  • Zobrazí se další položky nabídek, které můžete použít k přidání integrace .NET Aspire, registraci projektu pro podporu orchestrátoru .NET Aspire nebo dokončení dalších úkolů.

Poznámka:

Později v tomto modulu se dozvíte více o nástrojích .NET Aspire.

Další informace