Azure-beli üzemeltetési javaslatok ASP.NET Core-webalkalmazásokhoz

Tipp.

Ez a tartalom egy részlet az eBook, Architect Modern Web Applications with ASP.NET Core és Az Azure, elérhető a .NET Docs vagy egy ingyenesen letölthető PDF, amely offline olvasható.

Architect Modern Web Applications with ASP.NET Core and Azure eBook cover thumbnail.

"Az üzletági vezetők mindenhol megkerülik az informatikai részlegeket, hogy alkalmazásokat szerezzenek be a felhőből (más néven SaaS-ből), és úgy fizetnek érte, mintha magazin-előfizetést használnának. Ha a szolgáltatásra már nincs szükség, lemondhatják az előfizetést úgy, hogy a sarokban nem maradt használaton kívüli berendezés."
- Daryl Plummer, Gartner elemző

Az alkalmazás igényeitől és architektúrájától függetlenül a Microsoft Azure támogatja azt. Az üzemeltetési igények lehetnek olyan egyszerűek, mint egy statikus webhely vagy egy több tucat szolgáltatásból álló kifinomult alkalmazás. A ASP.NET Core monolitikus webalkalmazások és a támogató szolgáltatások esetében számos jól ismert konfiguráció ajánlott. A cikkben szereplő javaslatok a üzemeltetni kívánt erőforrás típusa alapján vannak csoportosítva, legyen szó teljes alkalmazásokról, egyéni folyamatokról vagy adatokról.

Webes alkalmazások

A webalkalmazások a következőkkel üzemeltethetők:

  • App Service Web Apps

  • Tárolók (több lehetőség)

  • Virtual Machines (VMs)

Ezek közül az App Service Web Apps az ajánlott módszer a legtöbb forgatókönyvhez, beleértve az egyszerű tárolóalapú alkalmazásokat is. A mikroszolgáltatás-architektúrák esetében fontolja meg a tárolóalapú megközelítést. Ha több vezérlésre van szüksége az alkalmazást futtató gépek felett, fontolja meg az Azure-beli virtuális gépeket.

App Service Web Apps

Az App Service Web Apps egy teljes körűen felügyelt, webalkalmazások üzemeltetésére optimalizált platformot kínál. Ez egy szolgáltatásként nyújtott platform (PaaS), amely lehetővé teszi az üzleti logikára való összpontosítást, míg az Azure gondoskodik az alkalmazás futtatásához és méretezéséhez szükséges infrastruktúráról. Az App Service Web Apps néhány fő funkciója:

  • DevOps-optimalizálás (folyamatos integráció és teljesítés, több környezet, A/B tesztelés, szkriptek támogatása).

  • Globális méret és magas rendelkezésre állás.

  • Csatlakozás saaS-platformokra és a helyszíni adatokra.

  • Biztonság és megfelelőség.

  • Visual Studio-integráció.

A legtöbb webalkalmazás esetében az Azure App Service a legjobb választás. Az üzembe helyezés és a kezelés integrálva van a platformba, a webhelyek gyorsan méretezhetők a nagyobb adatforgalom kezeléséhez, a beépített terheléselosztás és az adatforgalom-kezelő pedig biztosítja a magas rendelkezésre állást. A meglévő webhelyeket egyszerűen áthelyezheti Azure-alkalmazás szolgáltatásba egy online migrálási eszközzel. Használhat nyílt forráskódú alkalmazást a webalkalmazás-katalógusból, vagy létrehozhat egy új webhelyet a választott keretrendszer és eszközök használatával. A WebJobs funkció megkönnyíti a háttérfeladatok feldolgozását az App Service webalkalmazásba. Ha rendelkezik egy helyi adatbázissal üzemeltetett meglévő ASP.NET-alkalmazással, a migrálásnak egyértelmű elérési útja van. Az App Service Web App alkalmazást azure SQL Database-adatbázissal is használhatja (vagy ha szeretné, biztonságos hozzáférést biztosíthat a helyszíni adatbázis-kiszolgálóhoz).

Recommended migration strategy for on-premises .NET apps to Azure App Service

A legtöbb esetben a helyileg üzemeltetett ASP.NET-alkalmazásról az App Service Web App App alkalmazásra való áttérés egyszerű folyamat. Magának az alkalmazásnak csak kis mértékben vagy egyáltalán nem kell módosítania magát az alkalmazást, és gyorsan elkezdheti kihasználni a Service Web Apps Azure-alkalmazás által kínált számos funkciót.

A nem felhőre optimalizált alkalmazások mellett a Azure-alkalmazás Service Web Apps kiváló megoldás számos egyszerű monolitikus (nem elosztott) alkalmazáshoz, például számos ASP.NET Core-alkalmazáshoz. Ebben a megközelítésben az architektúra alapszintű és egyszerűen értelmezhető és kezelhető:

Basic Azure architecture

Egy adott erőforráscsoport kis számú erőforrása általában elegendő egy ilyen alkalmazás kezeléséhez. Az általában egyetlen egységként üzembe helyezett alkalmazások, nem pedig a számos különálló folyamatból álló alkalmazások jó jelöltek erre az alapvető architekturális megközelítésre. Bár architekturálisan egyszerű, ez a megközelítés továbbra is lehetővé teszi, hogy az üzemeltetett alkalmazás vertikálisan felskálázza mind (csomópontonként több erőforrás) és ki (több üzemeltetett csomópont) a megnövekedett kereslet kielégítése érdekében. Az automatikus skálázással az alkalmazás úgy konfigurálható, hogy automatikusan módosítsa az alkalmazást üzemeltető csomópontok számát az igény és a csomópontok közötti átlagos terhelés alapján.

App Service Web Apps for Containers

A webalkalmazások közvetlen üzemeltetésének támogatása mellett az App Service Web Apps for Containers tárolóalapú alkalmazások futtatására is használható Windows és Linux rendszeren. Ezzel a szolgáltatással egyszerűen telepítheti és futtathatja a vállalatával skálázható tárolóalapú alkalmazásokat. Az alkalmazások a fent felsorolt App Service Web Apps összes funkcióval rendelkeznek. A Web Apps for Containers emellett támogatja az egyszerűsített CI/CD-t a Docker Hub, az Azure Container Registry és a GitHub használatával. Az Azure DevOps használatával definiálhatja a beállításjegyzék módosításait közzétevő buildelési és üzembehelyezési folyamatokat. Ezek a módosítások ezután tesztelhetők átmeneti környezetben, és üzembe helyezési pontok használatával automatikusan üzembe helyezhetők az éles környezetben, így nulla állásidős frissítéseket tehetnek lehetővé. A korábbi verziókra való visszagördülés ugyanolyan egyszerűen elvégezhető.

Vannak olyan forgatókönyvek, amelyekben a Web Apps for Containers a legértelmesebb. Ha már rendelkezik tárolóba helyezhető alkalmazásokkal, akár Windows- vagy Linux-tárolókban, ezeket egyszerűen üzemeltetheti az eszközkészlet használatával. Csak tegye közzé a tárolót, majd konfigurálja a Web Apps for Containerst, hogy lekérje a rendszerkép legújabb verzióját a választott beállításjegyzékből. Ez egy "átemelési" megközelítés a klasszikus alkalmazásüzemeltetési modellekről a felhőoptimalizált modellekre való migráláshoz.

Migrate containerized on-premises .NET application to Azure Web Apps for Containers

Ez a megközelítés akkor is jól működik, ha a fejlesztői csapat képes áttérni egy tárolóalapú fejlesztési folyamatra. A tárolókkal rendelkező alkalmazások fejlesztésének "belső ciklusa" magában foglalja az alkalmazás tárolókkal való kiépítését. A kód és a tárolókonfiguráció módosításait a rendszer leküldi a forráskonfigurációba, és egy automatizált build felelős azért, hogy új tárolólemezképeket tegyen közzé egy olyan beállításjegyzékben, mint a Docker Hub vagy az Azure Container Registry. Ezeket a rendszerképeket használják a további fejlesztés, valamint az éles környezetben történő üzembe helyezés alapjaként, ahogyan az alábbi ábrán látható:

End to End Docker DevOps Lifecycle Workflow

A tárolókkal való fejlesztés számos előnnyel jár, különösen akkor, ha a tárolókat éles környezetben használják. Ugyanezzel a tárolókonfigurációval üzemeltethető az alkalmazás minden olyan környezetben, amelyben fut, a helyi fejlesztőgéptől kezdve a rendszerek kiépítéséig és tesztelésétől az éles környezetig. Ez a megközelítés jelentősen csökkenti a gép konfigurációjának vagy szoftververzióinak eltéréseiből eredő hibák valószínűségét. A fejlesztők bármilyen olyan eszközt használhatnak, amellyel a leghatékonyabbak, beleértve az operációs rendszert is, mivel a tárolók bármilyen operációs rendszeren futtathatók. Bizonyos esetekben a sok tárolót tartalmazó elosztott alkalmazások nagyon erőforrásigényesek lehetnek egyetlen fejlesztői gépen való futtatáshoz. Ebben a forgatókönyvben érdemes lehet frissíteni a Kubernetes és az Azure Dev Spaces használatára, amely a következő szakaszban található.

Mivel a nagyobb alkalmazások egy része saját kisebb, független mikroszolgáltatásra oszlik, további tervezési minták használhatók az alkalmazások viselkedésének javítására. Ahelyett, hogy közvetlenül az egyes szolgáltatásokkal dolgozik, az API-átjárók leegyszerűsíthetik a hozzáférést, és leválaszthatják az ügyfelet a háttérrendszerükről. A különböző előtérrendszerekhez tartozó különálló szolgáltatás-háttérrendszerek lehetővé teszik a szolgáltatásoknak, hogy a fogyasztókkal együtt fejlődjenek. A közös szolgáltatások egy külön oldalkocsis tárolón keresztül érhetők el, amely magában foglalhatja a nagyköveti mintát használó gyakori ügyfélkapcsolati kódtárakat is.

Microservices sample architecture with several common design patterns noted.

További információ a mikroszolgáltatás-alapú rendszerek létrehozásakor figyelembe veendő tervezési mintákról.

Azure Kubernetes Service

Az Azure Kubernetes Service (AKS) felügyeli az üzemeltetett Kubernetes környezetet, lehetővé téve a tárolóalapú alkalmazások gyors és egyszerű üzembe helyezését és felügyeletét tárolóvezénylési szakértelem nélkül is. Emellett az erőforrások igény szerinti kiépítésével, frissítésével és skálázásával kiküszöböli a folyamatos üzemeltetés és karbantartás terheit anélkül, hogy az alkalmazásokat offline állapotba helyezi.

Az AKS egyszerűsíti a Kubernetes-fürtök kezelését és csökkenti annak működési munkaterhelését azzal, hogy a felelősség nagy részért az Azure-ra helyezi át. Üzemeltetett Kubernetes-szolgáltatásként az Azure olyan fontos műveleteket bonyolít le, mint az állapotmonitorozás és a karbantartás. Emellett csak a fürtök ügynökcsomópontjaiért kell fizetnie, a főkiszolgálókért nem. Üzemeltetett Kubernetes-szolgáltatásként az AKS a következőket biztosítja:

  • Automatikus Kubernetes-verziófrissítések és -javítások.
  • Egyszerű fürtméretezés.
  • Öngyógyító üzemeltetett vezérlősík (mesterek).
  • Költségmegtakarítás – csak az ügynökkészlet-csomópontok futtatásáért kell fizetnie.

Ha az Azure bonyolítja az AKS-fürt csomópontjainak kezelését, nem kell többé manuálisan végezni az olyan műveleteket, mint a fürtfrissítések. Mivel az Azure kezeli ezeket a kritikus karbantartási feladatokat, az AKS nem biztosít közvetlen hozzáférést (például SSH-val) a fürthöz.

Az AKS-t használó csapatok az Azure Dev Spaces előnyeit is kihasználhatják. Az Azure Dev Spaces segítségével a csapatok a mikroszolgáltatási alkalmazásuk fejlesztésére és gyors iterációjára összpontosíthatnak azáltal, hogy lehetővé teszik a csapatok számára, hogy közvetlenül működjenek együtt az AKS-ben futó teljes mikroszolgáltatási architektúrájukkal vagy alkalmazásukkal. Az Azure Dev Spaces emellett lehetővé teszi a mikroszolgáltatás-architektúra egyes részeinek önálló frissítését külön-külön anélkül, hogy az hatással van a többi AKS-fürtre vagy más fejlesztőkre.

Azure Dev Spaces workflow example

Azure Dev Spaces:

  • A helyi gép beállítási idejének és erőforrás-követelményeinek minimalizálása
  • A csapatok gyorsabb iterálásának engedélyezése
  • A csapat által igényelt integrációs környezetek számának csökkentése
  • A fejlesztés/tesztelés során ne kelljen bizonyos szolgáltatásokat kipockázni egy elosztott rendszerben

További információ az Azure Dev Spacesről

Azure Virtual Machines

Ha olyan meglévő alkalmazással rendelkezik, amely jelentős módosításokat igényelne az App Service-ben való futtatáshoz, a virtuális gépek kiválasztásával egyszerűbbé teheti a felhőbe való migrálást. A virtuális gépek helyes konfigurálása, biztonságossá tétele és karbantartása azonban sokkal több időt és informatikai szakértelmet igényel, mint Azure-alkalmazás Szolgáltatás. Ha az Azure-beli virtuális gépeket fontolgatja, vegye figyelembe a virtuálisgép-környezet javításához, frissítéséhez és kezeléséhez szükséges folyamatos karbantartási erőfeszítéseket. Az Azure Virtual Machines szolgáltatásként infrastruktúra (IaaS), míg az App Service PaaS. Azt is figyelembe kell vennie, hogy az alkalmazás Windows-tárolóként való üzembe helyezése a Tárolók webalkalmazásban használható megoldás lehet-e a forgatókönyvhöz.

Logikai folyamatok

Az alkalmazás többi részétől elkülöníthető egyedi logikai folyamatok önállóan telepíthetők az Azure Functionsben "kiszolgáló nélküli" módon. Az Azure Functions segítségével egyszerűen megírhatja az adott problémához szükséges kódot anélkül, hogy az alkalmazás vagy az infrastruktúra kellene a futtatásához. Számos programozási nyelv közül választhat, beleértve a C#, az F#, a Node.js, a Python és a PHP nyelvet, így kiválaszthatja a feladathoz leginkább hatékony nyelvet. A legtöbb felhőalapú megoldáshoz hasonlóan ön is csak a használat időtartamáért fizet, és megbízhat az Azure Functionsben, hogy igény szerint felskálázza a skálázást.

Adatok

Az Azure számos adattárolási lehetőséget kínál, így az alkalmazás a megfelelő adatszolgáltatót használhatja a szóban forgó adatokhoz.

Tranzakciós, relációs adatok esetén az Azure SQL Database a legjobb megoldás. A nagy teljesítményű olvasási-olvasási adatok esetében az Azure SQL Database által támogatott Redis-gyorsítótár jó megoldás.

A strukturálatlan JSON-adatok többféleképpen tárolhatók, az SQL Database-oszlopoktól a blobokon vagy az Azure Storage-beli táblákon át az Azure Cosmos DB-ig. Ezek közül az Azure Cosmos DB kínálja a legjobb lekérdezési funkciót, és ez az ajánlott lehetőség sok olyan JSON-alapú dokumentumhoz, amelyeknek támogatniuk kell a lekérdezést.

Az alkalmazás viselkedésének vezényléséhez használt átmeneti parancs- vagy eseményalapú adatok használhatják az Azure Service Bus vagy az Azure Storage-üzenetsorokat. Az Azure Service Bus nagyobb rugalmasságot biztosít, és az alkalmazásokon belüli és az alkalmazások közötti nem triviális üzenetküldés ajánlott szolgáltatása.

Architektúrajavaslatok

Az alkalmazás követelményeinek meg kell szabnia az architektúráját. Számos különböző Azure-szolgáltatás érhető el. A megfelelő kiválasztása fontos döntés. A Microsoft referenciaarchitektúrákat kínál a gyakori forgatókönyvekhez optimalizált tipikus architektúrák azonosításához. Találhat olyan referenciaarchitektúrát, amely szorosan megfelel az alkalmazás követelményeinek, vagy legalábbis kiindulópontot kínál.

A 11–1. ábra egy példa referenciaarchitektúrát mutat be. Ez a diagram egy marketingre optimalizált Sitecore tartalomkezelő rendszer webhelyének ajánlott architektúra-megközelítését ismerteti.

Figure 11-1

11-1. ábra. A Sitecore marketing webhely referenciaarchitektúrája.

Hivatkozások – Azure-üzemeltetési javaslatok