Kodningsmiljöer för utvecklare
Inom plattformsteknik är en av de vanliga utmaningarna att se till att utvecklare snabbt och konsekvent kan konfigurera sina kodningsmiljöer, särskilt när nya utvecklare ansluter sig till team, utvecklare växlar mellan projekt eller om det finns ett behov av skalning. Att automatisera installationen av utvecklarmiljöer kan effektivisera registrering och eliminera förlorad tid på grund av felkonfigurationer eller brutna beroenden. Genom att tillhandahålla förkonfigurerade miljöer eller installationsskript kan team fokusera på utveckling i stället för att slösa tid på att felsöka miljöinkonsekvenser.
Metoden för att hantera utvecklarmiljöer kan variera, men den innehåller ofta virtualisering, containerisering och standardiserade mallar som överensstämmer med organisationens behov. Detta kan sträcka sig från fullständigt virtualiserade Windows-miljöer till molnbaserade containrar för Linux-utveckling. Dessutom är det viktigt att skapa "start right"-mallar som främjar konsekvens, bästa praxis och säkerhet som kod för att upprätthålla en väldefinierad, repeterbar process som skalar mellan team. Detta säkerställer att utvecklingsarbetsflödet inte bara startar smidigt utan fortsätter att följa bästa praxis och håller projekten på rätt spår och följer säkerhets- och driftsstandarder.
Automatisera installationen av utvecklarkodningsmiljön
Att koda miljöstövlare och normalisering för utvecklare kan vara en stor utmaning i tekniska system. Viktiga problem är:
- Långa registreringstider: Det kan ta veckor för en ny utvecklare att bidra, särskilt när utvecklare överförs mellan projekt eller tar in entreprenörer.
- Inkonsekvenser: Skillnader mellan utvecklarmiljöer och CI-system leder ofta till "det fungerar på min dator"-problem.
- Instabilitet i miljön: Experimentering med eller uppgradering av ramverk och programvara kan bryta befintliga konfigurationer, vilket resulterar i potentiellt lång och komplex felsökning.
- Fördröjningar i kodgranskning: Konfigurationsändringar som krävs för kodgranskningar kan göra utvecklingen långsammare eftersom de måste ångras senare.
- Ramp-up för alla intressenter: Icke-utvecklingsroller (som operatörer, QA och företagssponsorer) måste också utbildas och engageras, vilket orsakar fler förseningar.
För att lösa dessa problem kan det hjälpa att standardisera och automatisera installationen av utvecklarmiljöer via verktyg, skript eller containerbaserade/virtualiserade miljöer. Förkonfigurerade miljöer som är skräddarsydda för specifika projekt eller organisationsbehov kan säkerställa konsekvens, minska installationstiden och förbättra den totala produktiviteten.
Kodningsmiljöer för Windows och Linux
När du riktar in dig på Windows för ersättning av arbetsstationer eller fullständig virtualisering ger virtuella datorer vanligtvis de bästa funktionerna. Den här metoden är fördelaktig för Windows-klientutveckling, hantering av .NET-webbprogram för fullständigt ramverk eller underhåll av Windows-tjänster. Du kan använda molnbaserade virtuella datorer som Microsoft Dev Box, som erbjuder fullständig Windows-arbetsstationsvirtualisering med integrering av programvara för skrivbordshantering. Du kan också använda lokala virtuella datorer med verktyg som HashiCorp Vagrant för att hantera miljöer, och HashiCorp Packer kan användas för att skapa VM-avbildningar för både Vagrant och Dev Box.
För att rikta in sig på Linux passar arbetsytevirtualisering bättre, med fokus på projektspecifika eller programspecifika miljöer i stället för att ersätta ett fullständigt skrivbord. Molnbaserade containrar är ett vanligt val, med alternativ som GitHub Codespaces, som tillhandahåller en molnbaserad Dev Container-miljö som är kompatibel med VS Code, JetBrains IntelliJ och terminalbaserade verktyg. Om molnalternativen inte uppfyller dina behov stöder VS Code SSH eller fjärrtunnel anslutning till virtuella Linux-datorer med egen värd. Dessutom är lokala containrar ett alternativ om du föredrar att köra Dev Containers lokalt. VS Code och IntelliJ ger robust stöd för dessa miljöer. För mer flexibilitet kan även molnbaserade virtuella datorer, där du kan SSH direkt till självhanterade virtuella Linux-datorer, användas. I de fall där utvecklare arbetar uteslutande med Windows erbjuder Windows-undersystemet för Linux (WSL) en praktisk lokal Linux-utvecklingslösning. WSL-distributioner kan exporteras och delas mellan team. Molnbaserade tjänster som Microsoft Dev Box stöder även WSL för Linux-utveckling.
Använda programmallar för konsekvens och standardisering
För att främja konsekvens, standardisering och bästa praxis i utvecklingsteam kan organisationer använda programmallar som en del av en "allt som kod"-metod. Dessa mallar kan effektivisera utvecklingen, vilket säkerställer att teamen håller sig på de etablerade banade sökvägarna. För organisationer som följer ett monorepomönster kan verktyg som Azure Developer CLI (azd) användas för att skapa mallar som inte bara innehåller installationer av programkällor utan även miljökonfigurationer och CI/CD-arbetsflöden.
När du skapar mallar för utveckling är det bra att överväga olika viktiga områden för att säkerställa att mallarna är omfattande och konsekventa och följer bästa praxis:
- Exempel på källkod: Inkludera exempelkällkod som vägleder utvecklare mot rekommenderade språk, programmodeller, tjänster, API:er, SDK:er och arkitekturmönster.
- Bygg- och distributionsskript: Införliva skript som erbjuder ett konsekvent sätt att utlösa byggen och distribuera lokalt eller till en sandbox-miljö. Se till att felsökningskonfigurationer i IDE eller redigeraren ingår för att synkronisera med CI/CD-pipelines.
- CI/CD-konfiguration: Tillhandahålla arbetsflöden eller pipelines för att skapa och distribuera program och använda återanvändbara, centraliserade arbetsflöden. Behandla dessa som "start höger"-mallar och se till att de tillåter manuell utlösande när det behövs.
- Infrastruktur som kodtillgångar (IaC): Inkludera rekommenderade konfigurationer och referenser till centralt hanterade moduler för att säkerställa att infrastrukturinstallationer följer metodtipsen.
- Säkerhet och princip som kodtillgångar: Lägg till säkerhetsrelaterade konfigurationsfiler, till exempel CODEOWNERS och dependabot.yaml, för att införliva säkerhet direkt i utvecklingsprocessen. Schemalagda arbetsflöden för säkerhetsgenomsökningar, inklusive verktyg som Microsoft Defender för molnet, bör tillhandahållas för att bädda in säkerhet i CI/CD-pipelinen och förbättra säkerheten i leveranskedjan.
- Observerbarhet, övervakning och loggning: Ange konfigurationskonfigurationer för övervakningsverktyg, till exempel IaC för agentdistribution eller konfiguration som kod för övervakning av instrumentpaneler. Inkludera exempelkod för loggning och distribuerad spårning för att säkerställa att program kan övervakas effektivt när de har distribuerats.
- Konfiguration av kodningsmiljö: Lägg till konfigurationsfiler för linters, formatters och IDE:er och konfigurera skript för virtualiserade utvecklingsmiljöer som devcontainer.json, devbox.yaml eller Docker-relaterade filer.
- Testkonfiguration: Tillhandahålla filer för enhetstestning och mer omfattande testscenarier med verktyg som Microsoft Playwright Testing eller Azure Load Testing.
Konfiguration av samarbetsverktyg: Om det stöds kan du inkludera uppgifts-/problemmallar eller PR-mallar som kod. Du kan också ange arbetsflöden som använder tillgängliga API:er eller API:er för att uppdatera system eller konfigurera samarbetsverktyg som Microsoft Teams eller Slack.