Rekommendationer för standardisering av verktyg och processer

Gäller för den här rekommendationen om checklista för driftseffektivitet i Azure Well-Architected Framework:

OE:04 Optimera processer för programvaruutveckling och kvalitetssäkring genom att följa branschbeprövade metoder för utveckling och testning. För entydig rollbeteckning kan du standardisera metoder för komponenter som verktyg, källkontroll, programdesignmönster, dokumentation och stilguider.

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. När det är möjligt bör du använda branschbeprövade lösningar i stället för att utveckla interna lösningar. Du kan optimera dina metoder ytterligare genom att använda verktyg med lite 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. Överväg följande rekommendationer för att definiera standarder som hjälper dig att optimera dina utvecklingsmetoder.

Använd välkända och mogna färdiga verktyg

Använd välkända och mogna färdiga verktyg och standardisera deras användning. Mycket effektiva teknikteam implementerar de förstklassiga verktygen. 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. Färdiga verktyg 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 för alla funktioner.

Avgör om du ska investera i dyra verktyg eller premiumversioner av verktyg. Överväg tid och arbete med att utveckla 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 ditt team högre värde.

Använd verktyg med lite kod, ingen kod och AI när det är praktiskt möjligt. Verktyg med lite kod och ingen kod 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 arbetsbelastningens drift. 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 förgreningsprinciper 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 programutveckling 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 definierar 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 fel i koden.

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

För att hjälpa intressenter och arbetsbelastningsteamet att enkelt spåra hastigheten 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 stilguide. En standardstil gör samarbete enkelt och hjälper till med nya utvecklare. För att fungera effektivt behöver nya utvecklare veta hur arbetsbelastningsteamet fungerar. En stilguide med tydligt definierade standarder kan underlätta deras träningsprocess. I stilguiden definierar du standarder för utvecklingsspråk, bibliotek, ramverk och andra konventioner.

När det är praktiskt kan du använda verktyg för att framtvinga kodformateringsstandarder. Visual Studio erbjuder till exempel flera verktyg som söker igenom kod efter stil, kvalitet, underhållbarhet, 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 stilguiden innehålla namngivningskonventioner av standardtyp 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 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 befintlig teknik när det är lämpligt.

Använd beslutsposter för arkitektur (ADR) för att föra en historisk förteckning över 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. Kontrollera att adr:erna är versionsstyrda.

I din adr inkluderar du:

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

  • Orsakerna till teamets beslut.

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

  • Funktionella och icke-funktionella krav som vägs in i beslut.

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

Implementera standarder för att hantera tekniska skulder

Tänk på att tekniska skulder är avsiktliga och nödvändiga för arbetsbelastningsteamets 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 för 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 och hållet. 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å artefakter och hur versionshantering exponeras internt och externt. Till exempel bör klientinriktade 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, bra 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. Överväg följande principer för att skapa din teststrategi med en vänsterväxlingsmetod:

  • 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 testkod som programkod. Tillämpa samma kvalitets- och utvecklingsstandarder på programkod och testkod. Lagra testkod tillsammans med programkod. Utveckla och underhålla testkoden med programkod. För att säkerställa kvaliteten på testerna tar du bort tester som inte är tillförlitliga.

  • Överväg att testa ägarskapet, som baseras på ägarskapet för arbetsbelastningen. Arbetsbelastningsteamet äger testningen 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 framtvingar konsekvent kvalitet.

Detaljerad information om hur du implementerar en DevOps-teststrategi finns i Skifttestning kvar med enhetstester.

Kräv DevSecOps-metoder som en del av dina standardprocedurer. Arbetsbelastningsteamet bör förstå säkerhetsrutinerna för programutveckling 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 bästa praxis 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 tydlighet för resursidentifiering och hantering, vilket underlättar identifiering och sökning i Azure Portal, 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 resurslivscykeln, 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 påverkan på verksamheten.

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 din taggningsstrategi.

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 har stöd för Det distribuerade versionskontrollsystemet i Git och Team Foundation Version Control-systemet .

    • Azure Test Plans är en webbläsarbaserad testhanteringslösning som innehåller funktioner som krävs för planerad manuell testning, testning av användarinceptans, 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 omfattar:

  • Azure Resource Manager-mallar och Bicep är Azure-interna 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 ett par 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 tjänst för belastningstestning som du kan använda för att generera högskalig belastning genom att simulera trafik för dina program, oavsett var de finns.

Checklista för utmärkt driftseffektivitet

Se den fullständiga uppsättningen rekommendationer.