Distributionsöverväganden för DevOps
När du etablerar och uppdaterar Azure-resurser, programkod och konfigurationsinställningar hjälper en repeterbar och förutsägbar process dig att undvika fel och driftstopp. Vi rekommenderar automatiserade processer för distribution som du kan köra på begäran och köra om om något misslyckas. När dina distributionsprocesser körs smidigt kan processdokumentationen hålla dem på det sättet.
Automation
Om du vill aktivera resurser på begäran, distribuera lösningar snabbt, minimera mänskliga fel och skapa konsekventa och repeterbara resultat, måste du automatisera distributioner och uppdateringar.
Automatisera så många processer som möjligt
De mest tillförlitliga distributionsprocesserna är automatiserade och idempotenta, det vill säga upprepningsbara för att ge samma resultat.
- Om du vill automatisera etableringen av Azure-resurser kan du använda Terraform, Ansible, Chef, Puppet, Azure PowerShell,Azure CLIeller Azure Resource Manager mallar.
- Om du vill konfigurera virtuella datorer kan du använda cloud-init (för virtuella Linux-datorer) eller Azure Automation State Configuration (DSC).
- Om du vill automatisera programdistributionen kan du använda Azure DevOps Services,Jenkinseller andra CI/CD-lösningar.
Som bästa praxis bör du skapa en lagringsplats med kategoriserade automatiseringsskript för snabb åtkomst, dokumenterat med förklaringar av parametrar och exempel på skriptanvändning. Håll den här dokumentationen synkroniserad med dina Azure-distributioner och ange en primär person som ska hantera lagringsplatsen.
Automatiseringsskript kan också aktivera resurser på begäran för haveriberedskap.
Automatisera och testa distributions- och underhållsaktiviteter
Distribuerade program består av flera delar som måste fungera tillsammans. Distributionen bör dra nytta av beprövade mekanismer, till exempel skript, som kan uppdatera och validera konfigurationen och automatisera distributionsprocessen. Testa alla processer helt för att säkerställa att fel inte orsakar ytterligare driftstopp.
Implementera säkerhetsåtgärder för distribution
Alla distributionsverktyg måste innehålla säkerhetsbegränsningar för att skydda det distribuerade programmet. Definiera och framtvinga distributionsprinciper noggrant och minimera behovet av mänsklig inblandning.
Lanseringsprocess
En av utmaningarna med att automatisera distributionen är själva "cut-over"-processen, som tar programvara från det sista steget i testningen till liveproduktion. Du behöver vanligtvis göra detta snabbt för att minimera stilleståndstiden. Den blå-gröna distributionsstrategin gör detta genom att se till att du har två produktionsmiljöer, så identiska som möjligt.
Processen för att släppa dokument
Utan detaljerad dokumentation om lanseringsprocessen kan en operatör distribuera en felaktig uppdatering eller felaktigt konfigurera inställningar för ditt program. Definiera och dokumentera lanseringsprocessen tydligt och se till att den är tillgänglig för hela driftsteamet.
Mellan olika arbetsbelastningar
Distribution till olika faser och körning av tester/valideringar i varje steg innan du går vidare till nästa säkerställer friktionsfri produktionsdistribution.
Med bra användning av mellanlagrings- och produktionsmiljöer kan du skicka uppdateringar till produktionsmiljön på ett mycket kontrollerat sätt och minimera störningar från oväntade distributionsproblem.
- Blå-grön distribution innebär att distribuera en uppdatering till en produktionsmiljö som är separat från live-programmet. När du har validerat distributionen kan du börja routa trafiken till den uppdaterade versionen. Ett sätt att göra detta är att använda de mellanlagringsplatser som är Azure App Service för att mellanlagra en distribution innan du flyttar den till produktion.
- Canary-versioner liknar blå-gröna distributioner. I stället för att växla all trafik till det uppdaterade programmet dirigerar du bara en liten del av trafiken till den nya distributionen. Om det uppstår problem återgår du till den gamla distributionen. Om inte dirigerar du gradvis mer trafik till den nya versionen. Om du använder en Azure App Service kan du använda funktionen Testa i produktion för att hantera en canary-version.
Testmiljöer
Om utvecklings- och testmiljöerna inte matchar produktionsmiljön är det svårt att testa och diagnostisera problem. Håll därför utvecklings- och testmiljöerna så nära produktionsmiljön som möjligt. Kontrollera att testdata är konsekventa med de data som används i produktion, även om det är exempeldata och inte verkliga produktionsdata (av sekretess- eller efterlevnadsskäl). Planera för att generera och maskera exempeltestdata.
Loggning och granskning
Implementera en robust loggningsstrategi för att samla in så mycket versionsspecifik information som möjligt. Om du använder tekniker för mellanstegsdistribution körs mer än en version av programmet i produktion. Om ett problem uppstår kan du fastställa vilken version som orsakar det.
Överväganden för hög tillgänglighet
Ett program som är beroende av en enda instans av en tjänst skapar en enskild felpunkt. Etablera flera instanser för att förbättra återhämtning och skalbarhet.
- För Azure App Serviceväljer du en App Service plan som erbjuder flera instanser.
- Konfigurera Azure Cloud Servicesvar och en av dina roller för att använda flera instanserför .
- För Azure Virtual Machinesser du till att arkitekturen innehåller fler än en virtuell dator och att varje virtuell dator ingår i en tillgänglighetsuppsättning.
Överväg att distribuera över flera regioner
Vi rekommenderar att du distribuerar alla utom de minst kritiska programmen och programtjänsterna i flera regioner. Om programmet distribueras till en enda region kommer programmet också att vara otillgängligt om hela regionen blir otillgänglig. Om du väljer att distribuera till en enda region bör du överväga att omdistribuera till en sekundär region som ett svar på ett oväntat fel.
Distribuera om till en sekundär region
Om du kör program och databaser i en enda primär region utan replikering kan din återställningsstrategi vara att distribuera om till en annan region. Den här lösningen är prisvärd men mest lämplig för icke-kritiska program som kan tolerera längre återställningstider. Om du väljer den här strategin automatiserar du omdistributionsprocessen så mycket som möjligt och inkluderar omdistributionsscenarier i ditt haveriberedskapstest.
Om du vill automatisera omdistributionsprocessen bör du överväga att använda Azure Site Recovery.