Megosztás a következőn keresztül:


Javaslatok a biztonságos üzembe helyezési eljárásokhoz

Az Azure Well-Architected Framework operatív kiválósági ellenőrzőlistájára vonatkozó javaslat:

OE:11 Egyértelműen határozza meg a számítási feladat biztonságos üzembehelyezési eljárásait. A kis, növekményes, minőségi alapú kiadási módszerek eszményeinek hangsúlyozása. A kockázat szabályozásához használjon modern üzembehelyezési mintákat és progresszív expozíciós technikákat. A rutinszerű üzemelő példányok és vészhelyzetek, illetve gyorsjavítások használata.

Ez az útmutató a biztonságos üzembehelyezési eljárások (SDP) használatára vonatkozó javaslatokat ismerteti. A biztonságos üzembehelyezési folyamatok és eljárások határozzák meg, hogyan végezheti el és helyezheti üzembe a számítási feladat módosításait. Az SDP implementálásához a kockázatkezelés szemszögéből kell átgondolnia az üzembe helyezéseket. Az SDP implementálásával minimalizálhatja az emberi hibák kockázatát az üzemelő példányokban, és korlátozhatja a problémás üzemelő példányok hatását a felhasználókra.

Főbb tervezési stratégiák

A biztonságos üzembe helyezési eljárások megvalósítása során négy fontos iránymutatást kell szem előtt tartani:

  • Biztonság és konzisztencia: Az éles számítási feladat minden módosítása eleve kockázatos, és a biztonságra és a konzisztenciára kell összpontosítani.

  • Progresszív expozíció: Egy progresszív expozíciós üzemi modell alkalmazásával minimalizálhatja az üzembe helyezés által okozott problémák potenciális robbanási sugarát.

  • Állapotmodellek: Az üzemelő példányoknak állapot-ellenőrzéseket kell végrehajtaniuk, mielőtt a progresszív expozíció minden fázisa megkezdődhet.

  • Problémaészlelés: A problémák észlelésekor az üzembe helyezést azonnal le kell állítani, és a helyreállítást el kell indítani.

A következő szakaszok részletes javaslatokat nyújtanak ezekre a pontokra vonatkozóan.

Az üzemelő példányok biztonságának és konzisztenciájának biztosítása

Akár egy frissítést helyez üzembe az alkalmazás kódjában, az infrastruktúrát kódként (IaC), a funkciójelzőt vagy egy konfigurációs frissítést, kockázatot jelent a számítási feladat számára. Nincsenek alacsony kockázatú üzembe helyezések az éles környezetben. Minden üzembe helyezésnek szabványos mintát kell követnie, és automatizálni kell a konzisztencia kényszerítése és az emberi hibák kockázatának minimalizálása érdekében. Kritikus fontosságú, hogy a számítási feladatok ellátási lánca és az üzembe helyezési folyamatok megbízhatóak, biztonságosak és egyértelműen meghatározott üzembehelyezési szabványokkal rendelkezzenek. Minden üzembe helyezést lehetséges kockázatként kezelhet, és minden üzembe helyezést ugyanolyan szintű kockázatkezelésnek vethet alá. A kockázatok ellenére továbbra is rendszeres módosításokat kell üzembe helyeznie a számítási feladatban. A rendszeres frissítések telepítésének elmulasztása más kockázatokat is jelent, például a biztonsági réseket, amelyeket az üzembe helyezésekkel kell elhárítani. További információ: Javaslatok a számítási feladatok fejlesztési ellátási láncának megtervezéséhez.

A gyakori kis üzemelő példányok előnyben részesítik a ritkán nagy méretű üzemelő példányokat. A kisebb módosításokat könnyebben meg lehet oldani, ha problémák merülnek fel, és a gyakori üzembe helyezések segítenek a csapatnak bizalmat építeni az üzembe helyezési folyamatba. Az is fontos, hogy az éles környezetből tanuljon a számítási feladatok folyamatainak áttekintésével, amikor anomáliával találkozik az üzembe helyezés során. Előfordulhat, hogy az infrastruktúra kialakításában vagy a bevezetésben hiányosságokat tapasztal. Ha problémák merülnek fel az üzemelő példányok során, győződjön meg arról, hogy a hibás postmortemok az SDP-folyamat részét képezik az incidens tanulságainak rögzítéséhez.

Progresszív expozíciós modell bevezetése

Üzembe helyezési problémák esetén a cél az, hogy a lehető leghamarabb elkapjuk őket, hogy minimalizáljuk a végfelhasználókra gyakorolt hatást. Ennek a célnak a megvalósítása érdekében implementáljon egy fokozatos bevezetési üzemi modellt, más néven progresszív expozíciós modellt. A kanári-üzemelő példányok gyakori példája a progresszív expozíciónak. Ebben az üzembehelyezési modellben a belső vagy külső felhasználók egy kis csoportja kapja meg először az új funkciót. Miután az első csoport probléma nélkül futtatja az új verziót, a szolgáltatás az egymást követő nagyobb csoportokban lesz üzembe helyezve, amíg a teljes felhasználói sokaság nem futtatja az új verziót. A funkciójelzők általában az új verzió engedélyezésére szolgálnak a kanári-üzemelő példányok célfelhasználói számára.

Egy másik gyakori üzembehelyezési modell a kék-zöld megközelítés. Ebben a modellben a számítási feladatok infrastruktúrájának két azonos készlete vagy készlete van üzembe helyezve. Mindkét készlet képes kezelni a teljes éles terhelést. Az első (kék) készlet az üzembe helyezés aktuális verzióját futtatja, ahol az összes felhasználó leszáll. A második (zöld) készlet frissül az új funkcióval, és belsőleg tesztelt. A belső tesztelés után a rendszer az éles forgalom egy részét a kék készletből a zöld készletbe irányítja. A kanári üzemelő példányokhoz hasonlóan a bevezetés is fokozatosan halad, mivel a forgalom nagyobb részét a zöld készletre irányítja át az egymást követő nagyobb bevezetési hullámokban. A bevezetés befejezése után a frissítési készlet lesz a kék készlet, a zöld készlet pedig készen áll a következő üzembe helyezésre. A két készlet logikailag el van választva egymástól, hogy védelmet nyújtsunk a hibák ellen. A kék-zöld modell egy változata üzembe helyezhető egy olyan számítási feladatban, amely az Üzembehelyezési bélyegek tervezési mintát használja egyszerre egy bélyegen való üzembe helyezéssel.

Mindkét modellben a bevezetés egyes fázisai közötti időnek elég hosszúnak kell lennie ahhoz, hogy a számítási feladat állapotmetrikáit monitorozza. Elegendő időt és időt kell biztosítania a bevezetési csoportok között annak érdekében, hogy a különböző régiókból származó felhasználók vagy a különböző feladatokat végző felhasználók számára elegendő idő álljon rendelkezésre a számítási feladat normál kapacitásban való használatára. A sütési időt órákban és napokban kell mérni, nem pedig percekben. A sütési időnek az egyes bevezetési csoportok esetében is növekednie kell, hogy a nap folyamán különböző időzónákat és használati mintákat számoljon fel.

Robusztus számítási feladatok állapotmodelljeinek fejlesztése

A megfigyelhetőségi platform és a megbízhatósági stratégiák részeként robusztus állapotmodellt fejleszthet. Az állapotmodellnek részletes betekintést kell biztosítania a számítási feladat összetevőibe és általános állapotába. A bevezetés során, ha riasztást kap egy végfelhasználóhoz kapcsolódó állapotváltozásról, a bevezetésnek azonnal le kell állítania, és vizsgálatot kell végeznie a riasztás okával kapcsolatban a következő lépés meghatározásához. Ha a végfelhasználók nem jelentenek problémákat, és az összes állapotjelző zöld marad a sütési idő alatt, a bevezetésnek folytatódnia kell. Ügyeljen arra, hogy használati metrikákat is tartalmazzon az állapotmodellben, hogy a felhasználó által jelentett problémák és negatív állapotjelek ne rejtsék el a problémát. További információ: Állapotmodell létrehozása.

Hibaészlelési mechanizmusok implementálása

Ha az üzembe helyezés hibát okoz az egyik bevezetési csoportban, a bevezetésnek azonnal le kell állnia. A riasztás beérkezése után azonnal meg kell vizsgálni a probléma okát és a hatások súlyosságát. A probléma utáni helyreállítás a következőket tartalmazhatja:

  • Az üzembe helyezés visszaállításához vonja vissza az üzembe helyezésben végrehajtott módosításokat, és térjen vissza az utolsó ismert munkakonfigurációra.

  • Az üzembe helyezés továbbterjesztése a probléma megoldásával a bevezetés közepén. A probléma megoldásához használjon gyorsjavítást, vagy más módon minimalizálja a problémát.

  • Új infrastruktúra üzembe helyezése az utolsó ismert munkakonfiguráció használatával.

A módosítások, különösen az adatbázis, a séma vagy más állapotalapú összetevők módosításainak visszaállítása összetett lehet. Az SDP-irányelveknek egyértelmű útmutatást kell adniuk az adatváltozások kezeléséhez a számítási feladat adattulajdon-kialakításának megfelelően. Hasonlóképpen, a továbbgördülést körültekintően kell kezelni annak érdekében, hogy az SDP ne legyen elhanyagolva, és hogy a gyorsjavítás vagy más minimalizáló műveletek biztonságosan legyenek végrehajtva.

Protokollok létrehozása vészhelyzeti üzemelő példányokhoz

  • Implementálja a verziószámozást a buildösszetevők között, így biztosítva, hogy szükség esetén visszaléphessen és továbbléphessen.

  • Használjon kiadási folyamatot vagy csomagtartóalapú elágaztatási struktúrát, amely gitflow- vagy környezetalapú elágaztatási struktúra helyett szoros szinkronizálást kényszerít ki a fejlesztői csapat között.

  • Automatizálja az SDP lehető legnagyobb részét. Az IaC és az alkalmazások folyamatos integrációjának és folyamatos kézbesítésének (CI/CD) folyamatainak automatizálásával kapcsolatos részletes útmutatásért tekintse meg az automatizálási javaslatok című témakört.

  • Ci-eljárásokkal rendszeresen integrálhatja a kódmódosításokat az adattárakba. A CI-eljárások segíthetnek azonosítani az integrációs ütközéseket, és csökkenthetik a nagy, kockázatos egyesítések valószínűségét. További információkért tekintse meg a folyamatos integrációs útmutatót.

  • A funkciójelzők használatával szelektíven engedélyezheti vagy letilthatja az új funkciókat vagy változásokat az éles környezetben. A funkciójelzők segítségével szabályozhatja az új kód expozícióját, és problémák esetén gyorsan visszaállíthatja az üzembe helyezést.

  • Az éles környezetet tükröző átmeneti környezetek módosításainak üzembe helyezése. A gyakorlókörnyezetek lehetővé teszik, hogy ellenőrzött környezetben tesztelje a módosításokat, mielőtt üzembe helyeznénk az élő környezetben.

  • A módosítások biztonságos üzembe helyezésének biztosítása érdekében hozzon létre előre üzembe helyezési ellenőrzéseket, beleértve a kódellenőrzést, a biztonsági ellenőrzéseket és a megfelelőségi ellenőrzéseket.

  • Áramkör-megszakítók implementálása a problémákat tapasztaló szolgáltatás felé irányuló forgalom automatikus leállításához. Ez segíthet megelőzni a rendszer további romlását.

Vészhelyzeti SDP-protokollok

Olyan előíró protokollokat hozhat létre, amelyek meghatározzák, hogyan módosítható az SDP egy gyorsjavításhoz vagy olyan vészhelyzeti problémákhoz, mint a biztonsági rések vagy a biztonsági rések expozíciója. A vészhelyzeti SDP-protokollok például a következők lehetnek:

  • Előléptetési és jóváhagyási fázis gyorsítása.

  • Füsttesztelés és integrációs tesztelés gyorsítása.

  • Sütési idő csökkentése.

Bizonyos esetekben a vészhelyzet korlátozhatja a minőséget és tesztelheti a kapukat, de a kapukat a lehető leggyorsabban kell futtatni, mint egy sávon kívüli gyakorlatot. Győződjön meg arról, hogy meghatározza, hogy ki hagyhatja jóvá az SDP-gyorsítást vészhelyzetben, és hogy milyen feltételeknek kell teljesülnie a gyorsítás jóváhagyásához. A vészhelyzeti SDP-protokollokat a vészhelyzeti reagálási tervhez igazítva gondoskodhat arról, hogy minden vészhelyzetet ugyanazon protokollok szerint kezeljenek.

Megfontolások

A biztonságos üzembehelyezési eljárások létrehozása és fenntartása összetett. A robusztus szabványok teljes körű implementálásának sikere a szoftverfejlesztés számos területén alkalmazott gyakorlat érettségétől függ. Az automatizálás, a csak IaC használata az infrastruktúra változásaihoz, az elágaztatási stratégiák konzisztenciája, a funkciójelzők használata és sok más eljárás segíthet a biztonságos üzembe helyezés biztosításában. Ezzel az útmutatóval optimalizálhatja a számítási feladatokat, és a gyakorlatok fejlődésével kapcsolatos fejlesztési terveket is megismerheti.

Az Azure megkönnyítése

  • Az Azure Pipelines és a GitHub Actions jóváhagyási kapuk használatával támogatja a többfázisú üzembe helyezéseket, ami segíthet megtervezni az üzembe helyezések progresszív expozíciós bevezetését.

  • A Azure-alkalmazás szolgáltatás átmeneti pontjaival egyszerűen cserélhet a kódverziók között. Az előkészítési pontok hasznosak az átmeneti környezetekben végzett teszteléshez, és kék-zöld üzembe helyezéshez használhatók.

  • Webalkalmazás-funkciójelzők tárolása és kezelése Azure-alkalmazás Konfigurációban. A szolgáltatás használatával egységes felügyeleti síkon hozhat létre, módosíthat és helyezhet üzembe funkciókat.

  • Számítási feladatok alkalmazásait virtuálisgép-alkalmazások használatával helyezheti üzembe a virtuális gépen.

  • Az Azure-terheléselosztók használatával üzembehelyezési stratégiákat valósíthat meg, és natív erőforrások használatával teheti közzé a számítási feladatok alkalmazásainak állapotát.

  • Az Application Health bővítmény használatával jelentést hozhat létre az alkalmazás állapotáról egy virtuálisgép-méretezési csoport példányán belülről. A bővítmény mintavételt küld egy helyi alkalmazásvégponton, és frissíti az állapotot az alkalmazástól kapott TCP/HTTP(S) válaszok alapján.

  • Az Azure Logic Apps használatával bármikor létrehozhatja az alkalmazás új verzióját, amikor frissítést végeznek rajta. Az Azure fenntartja az alkalmazásverziók előzményeit, és visszaállíthatja vagy előléptetheti az előző verziókat.

  • Számos Azure Database-szolgáltatás biztosít időponthoz kötött visszaállítási funkciókat, amelyek segíthetnek a visszaállításban. Az időponthoz kötött visszaállítást támogató szolgáltatások a következők:

Példa

Tekintse meg az Azure Kubernetes Service (AKS) fürtök architektúraútmutatójának kék-zöld üzembe helyezését, amelyből megtudhatja, hogyan használhatja ezt az üzembehelyezési modellt.

Működési kiválósági ellenőrzőlista

Tekintse meg a javaslatok teljes készletét.