Rekommendationer för implementering av automatisering

Gäller för denna checklista för Well-Architected Framework Operational Excellence:

OE:09 Automatisera alla uppgifter som inte drar nytta av insikten och anpassningsbarheten hos mänskliga ingripanden, är mycket procedurmässiga och har en hållbarhet som ger avkastning på automatiseringsinvesteringar. När det är möjligt väljer du programvara som inte är tillgänglig för automatisering jämfört med anpassade implementeringar. Behandla all automatisering på samma sätt som arbetsbelastningskomponenter och tillämpa Well-Architected Framework-pelarna på deras design och implementering.

Den här guiden beskriver rekommendationerna för att införa automatisering i din arbetsbelastning. Du kan automatisera uppgifter som är repetitiva och utsatta för mänskliga fel för att hjälpa dina team att få effektivitet och följa standarder. Automatisera uppgifter för att göra din arbetsbelastning smidig och konsekvent. Med Automatisering kan dina drift- och ingenjörsteam bli mer effektiva eftersom det ger dem mer tid att arbeta med andra förbättringar. Automation är ett kraftfullt verktyg i alla aspekter av arbetsbelastningshantering. Implementera automatisering för att underlätta för din organisation.

Viktiga designstrategier

När du utvecklar din arbetsbelastning letar du efter möjligheter att dra nytta av automatisering för att minska hanteringsbördan och minimera mänskliga fel. Utvärdera dessa affärsmöjligheter och ta hänsyn till det värde som de tillför din organisation. För att maximera värdet av din investering i automatisering prioriterar du uppgifter som är enkla, processuella och har lång hållbarhet. Att tillämpa automatisering är inte en allt-eller-inget-taktik. Det finns arbetsströmmar som kan ha åtgärder som kräver mänsklig inblandning, till exempel beslutspunkter. Dessa arbetsströmmar kan fortfarande dra nytta av automatisering för att utföra andra uppgifter.

Måluppgifter som ska automatiseras

Överväg följande rekommendationer för att säkerställa att du prioriterar uppgifter som drar mest nytta av automatisering:

  • Sikta på enkla vinster. Fokusera på uppgifter som är mycket processuella och mottagliga för mänskliga fel. Dessa uppgifter är mycket automatiserade. De är tydligt definierade, de är fria från variabler som ger komplexitet och de utförs som en del av normala åtgärder. Å andra sidan prioriterar du inte automatisering av uppgifter som kräver att komplexa skript skrivs för att ta hänsyn till variabla fenomen eller uppgifter som sällan inträffar.

    Exempel på mycket automatiserade uppgifter är att starta om servrar, skapa konton och överföra loggar till ett datalager. Dessa uppgifter kan utföras enligt ett schema, som ett svar på en händelse- eller övervakningsavisering, eller efter behov baserat på externa faktorer.

  • Leta efter sätt att ge operatörer och frigöra dina små och medelstora företag. Du kan ha experter i din organisation som är beroende av eskaleringar som kan vara onödiga. Dina databasadministratörer kan till exempel rutinmässigt få förfrågningar om att skapa nya databaser när du registrerar nya kunder i din lösning för flera klienter. Om du skapar en självbetjäningsportal för supportteamet kan du göra det möjligt för dem att skapa en tom databas på ett säkert sätt. Eller som ett mellanliggande steg kan du automatisera begäranden och stegen för SME att utföra genom att skapa skript som ska köras.

  • Fokusera på din avkastning på investeringen. Automatisering med högt värde kräver minimala hanteringskostnader och ger en påvisbar grad av effektivitet. Om du kan spara ditt driftteam en timme varje dag genom att automatisera databasposter, till exempel ger du dem tid att hitta andra förbättringsområden.

Områden för att implementera automatisering

Implementera automatisering under hela arbetsbelastningens livscykel, från utveckling till daglig hantering. Använd följande lista med exempel som hjälper dig att överväga de stora delar av din arbetsbelastningslivscykel som kan dra nytta av automatisering. Du kan automatisera:

  • Pipelinedefinition, körning och hantering: Använd CI/CD-verktyg (continuous integration and continuous delivery), till exempel Azure DevOps och andra DevOps-verktyg, för att automatiskt definiera en pipeline och hur den körs. De här verktygen kan hjälpa dig att automatisera CI/CD-uppgifter eller andra uppgifter, till exempel att skapa rapporter.

  • Distributioner: Använd verktyg som Azure Resource Manager-mallar, Bicep, Terraform och Ansible för att automatisera dina utvecklings- och lanseringsprocesser för arbetsbelastningar. Distribuera och uppdatera din infrastruktur med samma automatiseringsplattformar med hjälp av en IaC-metod (infrastruktur som kod).

  • Testning: Många verktyg är tillgängliga för att automatisera dina testprocesser. De här verktygen kan avlasta ditt kvalitetssäkringsteam avsevärt och se till att testerna är standardiserade och tillförlitliga.

  • Skalning: Använd funktioner som tillhandahålls av plattformen och andra verktyg, till exempel orkestreringsverktyg, för att automatiskt skala infrastrukturen när belastningen ökar eller minskar.

  • Övervakning och avisering: Använd verktyg som är tillgängliga i övervakningslösningen för att automatiskt registrera nyligen distribuerade resurser och konfigurera aviseringsutlösta åtgärder för att påskynda reparationen när problem uppstår.

  • Självåterställning: Använd aviseringar som genereras av ditt övervakningssystem för att automatisera åtgärder och återställa felaktiga komponenter eller jobb. Mer information finns i Rekommendationer för självåterställning och självbevarelsedrift.

  • Konfigurationshantering: Använd orkestrerings- och principverktyg för att säkerställa att alla dina resurser kör samma konfiguration och att efterlevnadskrav tillämpas i hela arbetsbelastningen.

  • Andra administrativa uppgifter: Använd skript för att automatisera repetitiva uppgifter som att uppdatera databasposter eller DNS-poster.

  • Godkännanden: Gör det möjligt för system att automatiskt fatta beslut om godkännande baserat på fördefinierade regler för att förbättra effektiviteten för arbetsflöden som har godkännandegrindar. Den här metoden uppmuntrar användningen av standardiserade formulär och mallar, vilket ökar effektiviteten i processerna. Automatiskt godkännande i miljöer med hög risk kan vara riskabelt. Fokusera noga och testa dina automatiserade godkännanden för att säkerställa att specifika kriterier har definierats för att bevilja godkännande.

  • Registrering av nya användare och nya medarbetare: Du kan automatisera många uppgifter som är associerade med registrering av nya programanvändare eller nya anställda, till exempel databasuppdateringar och skapande av autentiseringsuppgifter.

  • Övervakning och avisering: Dra nytta av de automatiseringsfunktioner som din observerbarhetsplattform tillhandahåller. Registrera nya enheter automatiskt för att övervaka och avisera om avvikelser.

Välj ett lämpligt automatiseringsverktyg

Att utveckla din egen automatisering internt är tidsintensivt och kan medföra hanteringsbörda för utvecklingsteamet. De måste ha ett internt automatiseringsverktyg som de gör med andra interna program. Vi rekommenderar att du använder färdiga verktyg när de kan uppfylla dina behov. Mellan kommersiella verktyg, öppen källkod och molnplattform som tillhandahålls finns det många tillgängliga alternativ. Det är troligt att du kommer att använda en mängd olika verktyg för att skapa den automatisering som du behöver. Förlita dig på din interna expertis för att hjälpa dig att vägleda dina beslut när du utvärderar verktyg. Ditt team kanske är mer bekant med vissa utvecklingsspråk och ramverk. Du kan först fokusera på färdiga verktyg som de kan använda utan en hög inlärningskurva. Reflektera över de uppgifter som du planerar att hantera med automatisering och investera i de verktyg som specifikt kan hantera dessa uppgifter. Skaffa inte verktyg som du vanligtvis föredrar och överväg sedan uppgifterna efteråt.

Tänk på faktorer som kan komplicera dina åtgärder när du skapar din automatisering, till exempel versionslåsning och överanvändning av plugin-program. Plugin-program som Jenkins eller Azure DevOps-plugin-program är ett bra sätt att lägga till funktioner. Du bör använda plugin-program när det gynnar dina automatiseringsmål. Men när du använder flera plugin-program för att utföra en enda uppgift kan det göra automatiseringsuppdateringar och felsökning svåra. Var klok i din användning av plugin-program. Undvik även lösningar som har beroenden för ramverksversioner eftersom de är en börda att underhålla över tid. För att minimera risken för den här typen av problem kan du standardisera valet av automatiseringsverktyg och plugin-program och använda källkontroll för alla automatiseringsprojekt.

Integrera automatisering i din arbetsbelastning

För alla verktyg som du använder för att skapa din automatisering gör du det enkelt att komma åt och hanterbart för dina operatörer. Tillhandahålla tydliga och lättanvända gränssnitt för ditt arbetsbelastningsteam. Du kan ge åtkomst till CI/CD-pipelines, API:er och bibliotek. Precis som den arbetsbelastning som automatiseringen stöder måste du hantera automatiseringen holistiskt. Säker automatisering i samma utsträckning som andra arbetsbelastningskomponenter. Övervaka automatisering och tillämpa samma testprotokoll som andra arbetsbelastningskomponenter.

Överväganden

  • Ibland väger effektiviteten du får av automatiseringen uppväger hanteringsbördan med att utveckla din egen lösning om inga färdiga lösningar passar dina behov. I dessa fall bör du vara omdömesgill i dina utvecklingsarbete. Fokusera på att bara utveckla det du behöver för att täcka luckor som du inte kan lösa med färdiga lösningar och minimera komplexitet som beroenden.

  • Komplex automatisering som kräver en hög grad av underhåll kan vara svårt för driftteam att hantera och felsöka. Håll automatiserade uppgifter noga fokuserade på att endast utföra diskreta jobb. Försök att minimera beroenden för andra verktyg eller komponenter.

  • Tänk på att använda manuella processer. Om du bestämmer dig för att inte automatisera en åtgärd kan du noggrant dokumentera den manuella processen genom att skapa en stegvis checklista för operatörer. Den här metoden minskar risken för mänskliga fel, till exempel att en operatör av misstag kör fel process. Den här dokumentationen hjälper dig också att utforma automatisering för den processen i framtiden.

  • När du använder en hybridmanual och automatiserad metod måste du vara särskilt försiktig. Om ett skript kör större delen av en process men sedan skjuter upp till en människa för en viss del eller ett visst beslut är det viktigt att du ger personen den kontext och information som krävs för att fatta ett välgrundat beslut.

Azure-underlättande

Azure erbjuder många verktyg som hjälper dig att automatisera uppgifter för din arbetsbelastning.

IaC-verktyg: Du kan använda Terraform, Bicep och Azure Resource Manager för IaC-distributioner. Beroende på dina krav och teamets kunskaper om verktygen kan du använda ett eller flera av dessa verktyg för dina distributioner och hantering av resurser.

Azure Functions: Azure Functions är ett serverlöst verktyg som du kan använda för att automatisera uppgifter med hjälp av önskat utvecklingsspråk. Functions tillhandahåller en omfattande uppsättning händelsedrivna utlösare och bindningar som ansluter dina funktioner till andra tjänster. Du behöver inte skriva extra kod.

GitHub Actions för Azure: Du kan använda GitHub Actions för Azure för att automatisera CI/CD-processer. GitHub Actions integreras med Azure för att förenkla distributioner. Du kan skapa arbetsflöden som skapar och testar varje pull-begäran på lagringsplatsen eller distribuera sammanfogade pull-begäranden till produktion.

GitHub Actions går utöver bara DevOps och gör att du kan köra arbetsflöden när andra händelser inträffar på din lagringsplats. Du kan till exempel köra ett arbetsflöde för att automatiskt lägga till lämpliga etiketter när någon skapar ett nytt problem på din lagringsplats.

Azure Automation: PowerShell och Python är populära programmeringsspråk för att automatisera operativa uppgifter. Använd dessa språk för att utföra åtgärder som att starta om tjänster, överföra loggar mellan datalager och skala infrastruktur för att möta efterfrågan. Du kan uttrycka dessa åtgärder i kod och köra dem på begäran. Enbart dessa språk erbjuder inte en plattform för centraliserad hantering, versionskontroll eller körningshistorik. Språken saknar också en intern mekanism för att svara på händelser som övervakningsdrivna aviseringar. För att tillhandahålla dessa funktioner behöver du en automatiseringsplattform.

Automation tillhandahåller en Azure-värdbaserad plattform för att vara värd för och köra PowerShell- och Python-kod i molnmiljöer och lokala miljöer, både i Azure och i andra miljöer än Azure. PowerShell- och Python-kod lagras i en Automation-runbook. Använd Automation för att:

  • Utlösa runbooks på begäran, enligt ett schema eller via en webhook.

  • Körningshistorik och loggning.

  • Integrera ett hemlighetslager.

  • Integrera källkontroll.

Azure uppdateringshanterare: Update Manager är en enhetlig tjänst som hjälper dig att hantera och styra uppdateringar för virtuella datorer. Du kan övervaka windows- och Linux-uppdateringsefterlevnad i din arbetsbelastning. Du kan också använda Update Manager för att göra realtidsuppdateringar eller schemalägga dem inom en definierad underhållsperiod. Använd Update Manager för att:

  • Övervaka efterlevnaden av hela maskinparken.
  • Schemalägga återkommande uppdateringar
  • Distribuera kritiska uppdateringar

Azure-distributionsmiljöer: Distributionsmiljöer gör det möjligt för utvecklingsteam att snabbt skapa konsekvent appinfrastruktur med hjälp av projektbaserade mallar. Dessa mallar minimerar installationstiden och maximerar säkerhet, efterlevnad och kostnadseffektivitet. En distributionsmiljö är en samling Azure-resurser som distribueras i fördefinierade prenumerationer. Administratörer för utvecklingsinfrastruktur kan tillämpa företagssäkerhetsprinciper och tillhandahålla en kuraterad uppsättning fördefinierade IaC-mallar.

Administratörer för utvecklingsinfrastruktur definierar distributionsmiljöer som katalogobjekt. Katalogobjekt finns på en GitHub- eller Azure DevOps-lagringsplats som kallas katalog. Ett katalogobjekt består av en IaC-mall och en manifest.yaml-fil.

Du kan skripta skapandet av distributionsmiljöer och programmatiskt hantera miljöerna.

Azure Logic Apps och Microsoft Power Automate: När du skapar anpassad digital processautomatisering (DPA) för att hantera arbetsbelastningsuppgifter som godkännandeflöden eller skapa ChatOps-integreringar bör du överväga att använda Logic Apps eller Power Automate. Du kan skapa arbetsflöden från inbyggda anslutningsappar och mallar. Logic Apps och Power Automate bygger på samma underliggande teknik och passar båda bra för utlösarbaserade eller tidsbaserade uppgifter.

Automatisk skalning: Många Azure-tekniker har inbyggda funktioner för automatisk skalning. Du kan också programmera andra tjänster att automatiskt skala med hjälp av API:er. Mer information finns i Rekommendationer för att utforma en tillförlitlig skalningsstrategi.

Azure Monitor-åtgärdsgrupper: Om du vill köra självåterställningsåtgärder automatiskt när en avisering utlöses använder du Azure Monitor-åtgärdsgrupper. Du kan definiera dessa åtgärder med hjälp av en runbook, en Azure-funktion eller en webhook.

Exempel

Ett exempel på hur du använder Automation tillsammans med andra Azure-tjänster finns i Ops Automation med hjälp av Azure Event Grid. I det här exemplet används Logic Apps och Event Grid för att automatisera operativa uppgifter.

Checklista för utmärkt drift

Se den fullständiga uppsättningen rekommendationer.