Rekommendationer för standardisering av verktyg och processer

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

OE:04 Optimera processer för programvaruutveckling och kvalitetssäkring genom att följa branschbeprövade metoder för utveckling och testning. Standardisera metoder för komponenter som verktyg, källkontroll, mönster för programdesign, dokumentation och formatmallar för entydig rollbeteckning.

Relaterad guide: Förbättra bygghastigheten | Använd kontinuerlig integrering

Den här guiden beskriver rekommendationerna för att definiera standarder för verktyg och processer för programvaruutveckling. Att definiera konsekventa metoder leder till ett effektivt arbetsbelastningsteam och högkvalitativt arbete. Högpresterande team använder branschbeprövade verktyg och processer för att minimera bortkastad ansträngning och potentiella kodfel.

Viktiga designstrategier

Det första steget för att optimera utvecklingsmetoder är att standardisera verktyg och processer. Använd när det är möjligt branschbeprövade lösningar i stället för att utveckla interna lösningar. Om du vill optimera dina metoder ytterligare använder du verktyg med låg kod och ingen kod. Med de här verktygen kan du fokusera på ditt program och spara tid. För alla verktyg och processer som du standardiserar implementerar du utbildning så att dina team förstår och använder dem effektivt. Om du vill definiera standarder som hjälper dig att optimera dina utvecklingsmetoder bör du överväga följande rekommendationer.

Använd välkända och mogna verktyg som inte är färdiga

Använd välkända och mogna färdiga verktyg och standardisera deras användning. Mycket effektiva teknikteam använder de bästa verktygen i klassen. Den här metoden minimerar behovet av att utveckla lösningar för planering, utveckling, testning, samarbete och kontinuerlig integrering och kontinuerlig leverans (CI/CD). Många företag ger utvecklare ett val mellan några verktyg, men alla alternativ är standardverktyg för organisationen och verifieras internt. Viktigast av allt är att välja verktyg som uppfyller kraven för din arbetsbelastning. Verktyg utanför hyllan bör ha följande funktioner:

  • Hantering av arbetsplanering och kvarvarande uppgifter

  • Versionskontroll och lagringsplatser

  • CI/CD-pipelines

  • Testning, till exempel integrering, rök, syntetisk användare, simulering, kaos och andra kvalitetstester

  • Kodutveckling

I vissa fall kan ett verktyg eller en uppsättning verktyg tillhandahålla flera funktioner. Se till att du förstår funktionerna i dina verktyg och deras begränsningar så att de uppfyller dina krav mellan funktioner.

Avgör om du ska investera i dyra verktyg eller premiumversioner av verktyg. Överväg tiden och arbetet med att utveckla dina egna lösningar jämfört med de funktioner som premiumverktygen tillhandahåller. Överväg engångskostnader jämfört med återkommande kostnader. I de flesta fall ger färdiga verktyg ett högre värde för ditt team.

Använd verktyg med låg kod, ingen kod och AI när det är praktiskt. Verktyg med låg kod och kodfria verktyg sparar tid för erfarna utvecklare genom att låta dem enkelt ansluta funktioner i stället för att utföra hela kodutvecklingsprocessen. De här verktygen gör det också möjligt för arbetsbelastningsteammedlemmar som kanske inte är utbildade utvecklare att bidra till driften av arbetsbelastningen. AI-verktyg kan hjälpa till med kodutveckling, granskningar och optimering.

Standardisera din förgreningsstrategi

Välj en trunkbaserad modell när det är möjligt. Trunkbaserad förgrening håller arbetsbelastningsutvecklingsteamet synkroniserat och uppmuntrar till kontinuerlig leverans. Definiera grenprinciper för att skydda viktiga grenar, till exempel huvudgrenen. Mer information finns i Anta en Git-förgreningsstrategi och grenprinciper och inställningar.

Utvärdera mått för att kvantifiera utvecklingseffektivitet

Teamen för programvaruutveckling och kvalitetssäkring kan bara förbättras om de kan kvantifiera sin effektivitet. För att kvantifiera effektiviteten måste de identifiera de mått som mäter utvecklarhastigheten och definiera KPI:er. Exempel på dessa mått är:

  • Distributionsfrekvens: Antalet distributioner som varje utvecklare distribuerar varje dag.

  • Ledtid: Den tid det tar för en uppgift eller användarberättelse att gå från kvarvarande uppgifter till en produktionsdistribution.

  • Genomsnittlig tid till lösning: Den genomsnittliga tid som ägnas åt att åtgärda buggar eller defekter i kod.

  • Ändringsfelfrekvens: Procentandelen ändringar som resulterar i ett fel.

För att hjälpa intressenter och arbetsbelastningsteamet att enkelt spåra hastighet visualiserar du KPI:er med hjälp av instrumentpaneler eller andra rapporteringsverktyg.

Standardisera hur arbetsbelastningsteamet skriver, granskar och dokumenterar kod

Standardisera hur arbetsbelastningsteamet skriver, granskar och dokumenterar kod med hjälp av en formatguide. Ett standardformat gör samarbete enkelt och hjälper till med nya utvecklare. För att kunna arbeta effektivt behöver nya utvecklare veta hur arbetsbelastningsteamet fungerar. En stilguide med tydligt definierade standarder kan underlätta deras träningsprocess. I formatguiden definierar du standarder för utvecklingsspråk, bibliotek, ramverk och andra konventioner.

När det är praktiskt använder du verktyg för att tillämpa kodformateringsstandarder. Visual Studio erbjuder till exempel flera verktyg som söker igenom kod för stil, kvalitet, underhåll, design och andra problem. För infrastruktur som kod (IaC) kan du använda Checkov eller Terrascan för Terraform.

För att säkerställa konsekvens och undvika eventuell förvirring bör formatguiden innehålla vanliga namngivningskonventioner för artefakter, miljöer, grenar, byggen och körningar.

Du bör också ange riktlinjer och standarder för den tillåtna variansen i dina miljöer. Om det finns nya språk, ramverk eller andra tekniker som medlemmar i arbetsbelastningsteamet vill lägga till i standardlistan implementerar du en process för att använda dessa verktyg i en sandbox-miljö eller en lägre miljö. Testa deras livskraft och ersätt befintliga tekniker när det är lämpligt.

Använd beslutsposter för arkitektur (ADR) för att behålla en historisk post för arbetsbelastningsteamets designbeslut. ADR:er hjälper dina team att få en ny förståelse för arbetsbelastningen. De hjälper också nya teammedlemmar att lära sig om de designbeslut som fattas under arbetsbelastningens livscykel. Se till att adr:erna är versionsstyrda.

I din ADR inkluderar du:

  • Specifika verktyg och tekniker, till exempel med SQL eller NoSQL, som ditt team väljer.

  • Orsakerna till ditt teams beslut.

  • Andra alternativ som övervägdes, vilket hjälper till att kontextualisera det slutliga beslutet.

  • Funktionella och icke-funktionella krav som räknas in i beslut.

  • Kontexten för beslutsprocessen, som det problem som åtgärdades.

Implementera standarder för att hantera tekniska skulder

Anta ett tänkesätt att teknisk skuld är avsiktlig och nödvändig för ditt arbetsbelastningsteams slutprodukt. Det här tankesättet motiverar ditt team att överväga och hantera tekniska skulder regelbundet för att undvika ackumulering. Åtgärda tekniska skulder som en återkommande uppgift i kvarvarande uppgifter.

Anta till exempel att ditt team har standardiserats i ett bibliotek. Med tiden måste du växla till ett annat bibliotek för nya funktioner i arbetsbelastningen. Den övergången kan leda till tekniska skulder. Ofta kan övergångar som denna göra att arbetsbelastningsteamet stöder två tekniker eftersom de inte kan övergå helt smidigt. Arbetsbelastningsteamet måste prioritera slutförandet av övergången eftersom när arbetsbelastningen uppnår de nya funktionerna är intressenterna nöjda och mindre benägna att överväga den tekniska skulden.

Standardisera hur du tillämpar versionshantering på dina artefakter

Standardisera hur du tillämpar versionshantering på dina artefakter och hur versionshantering exponeras internt och externt. Till exempel bör klientriktade system exponera sin version som körs i användargränssnittet. Den här tekniken är användbar när arbetsbelastningsteamet felsöker problem eftersom kunden enkelt kan kommunicera vilken version de använder. REST-gränssnitt kan exponera versioner för vissa komponenter eller databaser. Du kan använda en specifik tabell i metadata för ett schema för att exponera schemaversionen.

Använd branschbeprövade designmönster för program för att säkerställa att ditt program är tillförlitligt, högpresterande och säkert. Använd dessa mönster för att spara tid och arbete jämfört med att utveckla egna lösningar för ditt program. Välj de mönster som gynnar din arbetsbelastning. Granska designmönster regelbundet för att se till att du använder rätt mönster när din arbetsbelastning utvecklas.

Implementera en skift-vänster-metod för testning

Implementera en skift-vänster-metod för testning genom att utföra enhetstestning tidigt och ofta under hela utvecklingsprocessen. Frekvent testning i varje utvecklingsmiljö hjälper utvecklare att få förtroende för sina program. Tänk på följande principer för att skapa din teststrategi med en skift-vänster-metod:

  • Skriv tester på lägsta möjliga nivå. Prioritera tester med minst externa beroenden och kör tester som en del av bygget.

  • Skriv tester en gång och kör tester överallt, inklusive produktion. Skriv tester som du kan köra i varje utvecklingsmiljö utan att ta hänsyn till faktorer som är specifika för en miljö, till exempel krypterade hemligheter eller konfigurationer.

  • Utforma din arbetsbelastning för testning. När du utvecklar ditt program måste du göra testbarhet till ett krav.

  • Behandla testkoden som programkod. Tillämpa samma kvalitet och utvecklingsstandarder på programkod och testkod. Lagra testkod tillsammans med programkod. Utveckla och underhålla testkoden med programkod. Ignorera tester som inte är tillförlitliga för att säkerställa kvaliteten på testerna.

  • Överväg att testa ägarskapet, som baseras på ägarskapet för arbetsbelastningen. Arbetsbelastningsteamet äger sina tester och bör inte förlita sig på att andra team testar sin kod.

  • Automatisera tester så mycket som möjligt. Automatiserad kod minskar belastningen på ditt arbetsbelastningsteam och tillämpar konsekvent kvalitet.

Detaljerad vägledning om hur du implementerar en DevOps-teststrategi finns i Skift-testning kvar med enhetstester.

Kräv DevSecOps-metoder som en del av dina standardrutiner. Ditt arbetsbelastningsteam bör förstå säkerhetsrutinerna för programvaruutveckling och kvalitetssäkring. De måste följa dessa metoder utan undantag. Mer information finns i livscykelguiden för säkerhetsutveckling.

Implementera standarder för namngivning och taggning av resurser

Att implementera taggnings- och namngivningskonventioner är en bra metod för att hantera och organisera Azure-resurser. Med taggnings- och namngivningskonventioner kan du identifiera, klassificera och gruppera resurser baserat på vanliga attribut, till exempel miljö, program, ägare eller kostnadsställe. De möjliggör även säkerhet, automatisering, rapportering och styrning av resurser mellan prenumerationer och resursgrupper.

Några av fördelarna med att använda standardiserade taggnings- och namngivningskonventioner är:

  • De ger konsekvens och klarhet för resursidentifiering och hantering, vilket underlättar identifiering och sökning i Azure-portalen, PowerShell, CLI och API:er.
  • De möjliggör filtrering och gruppering av resurser för fakturering, övervakning, säkerhet och efterlevnad.
  • De stöder hantering av resurslivscykel, till exempel etablering, inaktivering, säkerhetskopiering och återställning.
  • De är viktiga för säkerhetsändamål. Om du stöter på en säkerhetsincident är det viktigt att snabbt identifiera berörda system, de funktioner som dessa system stöder och den potentiella affärspåverkan.

Mer information om hur du använder namngivningskonventioner för dina molnresurser finns i Definiera din namngivningskonvention. Mer information om hur du tillämpar metadatataggar på dina molnresurser finns i Definiera taggningsstrategin.

Azure-underlättande

  • Azure DevOps är en samling tjänster som du kan använda för att skapa en samarbetsinriktad, effektiv och konsekvent utvecklingspraxis. Azure DevOps paketar följande lösningar:

    • Azure Pipelines tillhandahåller bygg- och versionstjänster för att stödja CI/CD för dina program.

    • Azure Boards är ett webbaserat arbetshanteringsverktyg som stöder agila metoder som Scrum och Kanban.

    • Azure Repos är ett versionskontrollverktyg som stöder Det distribuerade versionskontrollsystemet i Git och Team Foundation Version Control-systemet .

    • Azure Test Plans är en webbläsarbaserad testhanteringslösning som tillhandahåller funktioner som krävs för planerad manuell testning, testning av användargodkännande, undersökande testning och insamling av feedback från intressenter.

    • Azure Artifacts används för att göra det möjligt för utvecklare att effektivt dela sin kod och hantera sina paket.

  • GitHub Actions för Azure är ett verktyg som du kan använda för att automatisera CI/CD-processer. Den integreras direkt med Azure för att förenkla distributioner. Du kan skapa arbetsflöden som skapar och testar varje pull-begäran till din lagringsplats eller distribuera sammanfogade pull-begäranden till produktion.

  • GitHub Projects är ett verktyg för arbetshantering som du kan använda för att skapa Kanban-tavlor, rapporter, instrumentpaneler och andra funktioner.

  • Verktyg med låg kod och ingen kod inkluderar:

  • Azure Resource Manager-mallar och Bicep är Azure-inbyggda verktyg som du kan använda för att distribuera IaC. Terraform är ett annat IaC-verktyg som stöds av Azure och som du kan använda för att distribuera och hantera infrastruktur.

  • Visual Studio är ett robust utvecklingsverktyg som integreras med Azure och stöder många språk.

  • GitHub Copilot är en AI-tjänst som fungerar som parprogram programmerare och ger förslag på automatisk kompletteringsstil när du kodar. Copilot är tillgängligt som ett tillägg i Visual Studio och flera andra utvecklingsverktyg.

  • Azure Load Testing är en fullständigt hanterad belastningstestningstjänst som du kan använda för att generera högskalig belastning genom att simulera trafik för dina program, oavsett var de finns.

Organisatorisk anpassning

Cloud Adoption Framework för Azure innehåller allmänna riktlinjer och rekommendationer för taggning och namngivning av Azure-resurser, samt specifika regler och exempel för olika resurstyper.

Checklista för driftskvalitet

Se den fullständiga uppsättningen rekommendationer.