Design og implementer beregninger og spørringer
Ved å samle inn beregninger knyttet til prosjektets livssyklus kan organisasjoner få innsikt i programvareutviklingspraksisen og effektivisere DevOps-prosessene. Ved å aktivere innsamling av telemetridata fra prosjektaktiviteter kan team spore pipelinekjøringer, oppdateringer av arbeidselementer og andre DevOps-relaterte hendelser i sanntid.
Hvorfor prosjektberegninger er viktige
Denne tilnærmingen er viktig av flere grunner:
Forbedre synligheten:
- Se sanntidsstatus for alle prosjekter og team
- Forstå arbeidsfordeling og kapasitet
- Spor fremdrift mot milepæler og tidsfrister
- Identifiser avhengigheter og blokkeringer tidlig
Overvåking av ytelse:
- Mål teamhastighet og gjennomstrømning
- Spor syklustid og ledetidstrender
- Overvåk suksessrater for bygging og distribusjon
- Identifiser mønstre for ytelsesreduksjon
Optimalisering av programvareutviklingens livssyklus:
- Identifiser flaskehalser i prosjektarbeidsflyten
- Ta datadrevne beslutninger om prosessforbedringer
- Kontinuerlig forbedring av utviklingspraksis
- Korreler utviklingsaktiviteter med applikasjonsytelse
Viktige fordeler:
- Gir team mulighet til å ta datadrevne beslutninger
- Gir objektive beregninger for retrospektiver
- Støtter kapasitetsplanlegging og prognoser
- Muliggjør proaktiv risikostyring
Sammenligning av plattformer: GitHub vs. Azure DevOps
Både GitHub og Azure DevOps inkluderer støtte for innsamling og analyse av prosjektrelatert telemetri, men funksjonene deres varierer betydelig:
Funksjoner for sporing av GitHub-prosjekter
GitHub Insights-funksjoner:
- Innebygde beregninger: Repositoriumaktivitet, ytelse for pull-forespørsler, fellesskapsengasjement
- Puls visning: Aktivitetssammendrag for repositorier
- Graf over bidragsytere: Kodebidrag over tid
- Trafikk analyse: Visninger, kloner, henvisninger
Begrensninger:
- Prosjektsporingsanalyse er begrenset sammenlignet med dedikerte prosjektstyringsverktøy
- Færre forhåndsdefinerte beregninger for smidig prosjektledelse
- Grunnleggende visualiseringsfunksjoner
- Begrensede tilpassede rapporteringsalternativer
- Ingen innebygd integrasjon med Azure Monitor
Funksjoner for sporing av Azure DevOps-prosjekter
Azure DevOps Analytics-funksjoner:
- Omfattende sett med analyse- og rapporteringsfunksjoner spesielt designet for prosjektovervåking
- Tilpassbare dashbord: Dra-og-slipp-kontrollprogrammer for egendefinerte visninger
- Rike rapporteringsmuligheter: Power BI-integrering, OData-feeder
- Bredt utvalg av forhåndsdefinerte måledata og spørringer: Hastighet, nedkjøling, syklustid, ledetid
- Tilrettelegge for sporing av arbeidsfremdrift gjennom hele programvareutviklingens livssyklus
Fordeler:
- Spesialbygd for smidig prosjektledelse
- Omfattende widgetbibliotek for dashbord
- Avanserte spørringsfunksjoner med WIT Query Language
- Dyp integrasjon med Azure-tjenester
Utvider overvåking med Azure-tjenester
I tillegg til telemetrifunksjonaliteten som er innebygd i GitHub og Azure DevOps, kan du utvide omfanget av overvåking ved å dra nytte av Azure-tjenester som Azure Monitor og Application Insights:
Integrasjonsmuligheter:
- Azure DevOps: Tilbyr rikere og mer strømlinjeformet integrasjon enn GitHub
- Opprinnelige koblinger: Azure DevOps-datasamlebånd integreres opprinnelig med Application Insights
- Slipp merknader: Automatisk korrelasjon av distribusjoner med ytelsesmålinger
- Integrering av arbeidselement: Opprett arbeidselementer direkte fra Application Insights-varsler
- Enhetlige instrumentbord: Kombiner prosjektmåledata med programtelemetri
Bruke innebygd gitHub-prosjektsporing
I GitHub-prosjekter innebærer sporing av fremdrift overvåking av viktige utviklingsberegninger:
Viktige GitHub-beregninger:
- Gjennomstrømming av problemer: Frekvens for opprettelse og avslutning av problemer
- Aldring av problemer: Hvor lenge saker forblir åpne
- Behandlingstid for kodegjennomgang: Tid fra opprettelse av PR til første gjennomgang og godkjenning
- Sammenslåingstid for pull-forespørsel: Varighet fra oppretting av PR til sammenslåing
- Aktivitet for bidragsyter: Hyppighet og volum av bidrag
Disse beregningene gir innsikt i prosjekthelse, teameffektivitet og kodekvalitet, og hjelper deg med å identifisere forbedringsområder.
GitHub-innsikt
Den enkleste måten å se gjennom måledata på er å bruke Innsikt-funksjonaliteten:
- Visualiser repositoriumaktivitet over tid
- Spor ytelse for pull-forespørsler (åpen, sammenslått, lukket)
- Overvåk samfunnsengasjement (gafler, stjerner, overvåkere)
- Se bidragsyterstatistikk og kodefrekvens
Tilpasset automatisering med GitHub Actions
Opprett egendefinerte GitHub Actions-arbeidsflyter som automatiserer innsamling av måledata:
- Utløser-basert: Hendelser som pull-forespørsler, problemer eller kode-pushes
- Planlagt: Kjør på cron-tidsplaner for periodisk rapportering
- Handlinger: Samle inn og analyser beregninger, generer rapporter, legg ut på dashbord
Programmatisk tilgang med REST API
Utnytt GitHub REST API for å få tilgang til prosjektdata programmatisk:
- Måledata for problemer og pull-forespørsler
- Statistikk for bidragsytere
- Data for repositoriumaktivitet
- Bygg tilpassede instrumentbord eller rapporter ved hjelp av analyseverktøy
Bruke innebygd prosjektsporing for Azure DevOps
Azure DevOps tilbyr et stort antall innebygde måledata som gjenspeiler ulike aspekter av prosjektledelse: syklustid, ledetid, arbeidsflyteffektivitet og gjenværende tilstand. Disse beregningene kan grupperes i flere kategorier:
Måledata for arbeidselementer
- Antall arbeidselementer: Overvåk totalt antall arbeidselementer som er opprettet, fullført eller pågår over tid
- Arbeidselementets alder: Spore alderen på åpne arbeidselementer for å identifisere forfalte oppgaver
- Hastighet: Måle hastigheten som arbeidselementer fullføres med over gjentakelser eller sprinter
- Vekst i etterslep: Overvåk frekvensen for oppretting av nye arbeidselementer kontra fullføring
- Distribusjon av arbeidselement: Spore typer arbeidselementer (feil, funksjoner, oppgaver)
Bygg- og utgivelsesmålinger
- Bygg suksessrate: Overvåk prosentandelen av vellykkede bygg kontra mislykkede bygg
- Utgivelsesdistribusjonsfrekvens: Spore hvor ofte versjoner distribueres til produksjon eller andre miljøer
- Suksessrate for distribusjon: Mål prosentandelen av vellykkede distribusjoner for å identifisere distribusjonsproblemer
- Bygg varighet: Spor tid for å fullføre bygg
- Ledetid for distribusjon: Tid fra forpliktelse til produksjon
Test beregninger
- Beståttrate for testtilfeller: Overvåk prosentandelen av bestått testcase kontra mislykkede testtilfeller
- Utførelsestid for testtilfeller: Spor tiden det tar å utføre testtilfeller for å identifisere ytelsesflaskehalser
- Trender for testtilfellefeil: Analyser trender i testcasefeil for å identifisere tilbakevendende problemer
- Testdekning: Prosentandel av kode som dekkes av tester
- Flassende testdeteksjon: Identifiser upålitelige tester
Kode-beregninger
- Kode churn: Måle mengden kode som er lagt til, endret eller slettet over tid
- Målinger av kodekvalitet: Overvåk kodedekning, syklomatisk kompleksitet og vedlikeholdsindeks
- Måledata for pull-forespørsel: Tid til gjennomgang, godkjenningssatser
- Kommentarer til kodegjennomgang: Frekvens og typer tilbakemeldinger
Målinger av teamytelse
- Sprint Burndown: Spor fremdriften for sprintmål ved å overvåke gjenværende arbeid kontra tid
- Team Velocity: Mål den gjennomsnittlige mengden arbeid som er fullført av teamet i hver sprint
- Behandlingstid: Overvåk tiden det tar fra opprettelsen av et arbeidselement til det er fullført
- Syklus tid: Tid fra arbeidsstart til ferdigstillelse
- Gjennomstrømming: Arbeidselementer fullført per tidsperiode
Dashbord og tilpassede analyser
Du kan vise og analysere disse måledataene ved hjelp av instrumentbord som er tilgjengelige direkte i Azure DevOps-portalen. Hvis du vil ha mer innsikt, kan du opprette tilpassede, spørringsbaserte rapporter i Azure DevOps Analytics.
Vanlige analytiske spørringer
Noen av de mest brukte spørringene, grupperinger og visualiseringer inkluderer:
1. Analyse av syklustid:
- Spørsmål: Beregn syklustiden (tiden det tar å fullføre et arbeidselement fra start til slutt) for ulike typer arbeidselementer
- Gruppering: Arbeidselementer etter tilstand (aktiv, løst, lukket)
- Beregning: Tidsforskjell mellom startdato og ferdigstillelsesdato
- Visualisering: Gjennomsnittlig syklustid per stat over tid
- Hensikt: Identifiser flaskehalser og forbedre prosesseffektiviteten
2. Distribusjon av ledetid:
- Spørsmål: Analyser distribusjon av ledetid (opprettelse til ferdigstillelse) for ulike team eller områder
- Gruppering: Arbeidselementer etter områdebane eller teamtildeling
- Beregning: Leveringstid for hvert arbeidselement
- Visualisering: Histogram eller boksplott som viser fordeling
- Hensikt: Identifiser uteliggere og optimaliser arbeidsflyten i bestemte områder for å redusere leveringstiden
3. Kumulativt flytskjema (CFD):
- Spørsmål: Spore antall arbeidselementer i hver tilstand (Gjøremål, Pågår, Ferdig) over tid
- Gruppering: Arbeidselementer etter tilstand, sortert etter dato for tilstandsendring
- Beregning: Kumulativt antall arbeidselementer i hver tilstand med jevne mellomrom (daglig, ukentlig)
- Visualisering: CFD som viser arbeidsflyt for arbeidselementer
- Hensikt: Overvåk flyten gjennom prosjektfaser og identifiser overbelastning eller forsinkelser
4. Analyse av aldring av arbeidselement:
- Spørsmål: Analysere aldersfordeling for arbeidselementer i etterslep eller bestemte faser
- Gruppering: Arbeidselementer etter alder (dager siden opprettelse), prioritet eller type
- Beregning: Gjennomsnittsalder, prosentandel forfalt, fordeling på tvers av kategorier
- Visualisering: Aldringstrender over tid
- Hensikt: Prioriter etterslep og sørg for rettidig levering av varer med høy prioritet
Bruke Azure Monitor og Application Insights for prosjektsporing
Det finnes mange måter å integrere prosjektsporing med Azure Monitor og Application Insights på. En av de mest brukte tilnærmingene innebærer å kombinere kontinuerlig overvåking, utgivelsesmerknader og integrering av arbeidselementer. Dette optimaliserer programvareutviklingens livssyklus ved å:
Fordeler:
- Gir verdifull informasjon om ytelsesflaskehalser
- Tilrettelegging for proaktiv problemløsning
- Muliggjør informert beslutningstaking
- Vellykket levering av programvare av høy kvalitet
Kontinuerlig overvåkingsintegrasjon
Med kontinuerlig overvåking kan utgivelsessamlebånd inkludere overvåkingsdata fra Application Insights:
Kvalitetsporter basert på telemetri:
- Et Application Insights-varsel kan blokkere eller rulle tilbake en inngjerdet distribusjon til varselet er løst
- Overvåk måledata som feilfrekvens, responstid, antall unntak under distribusjon
- Forhindre at dårlige distribusjoner når produksjonen
- Omvendt, hvis overvåkingskontroller består, kan distribusjoner fortsette automatisk uten manuell inngripen
Eksempel på scenario:
- Datasamlebånd distribueres til oppsamlingsmiljø
- Porten etter distribusjon overvåker Application Insights i 15 minutter
- Hvis feilfrekvens >1%, blokkeres distribusjonen
- Hvis måledata er sunne, fortsetter distribusjonen automatisk til produksjon
Publiser merknader
Merknader angir hendelser i CI/CD-datasamlebåndet:
Hensikt:
- Fang opp korrelasjon mellom levering av programvareutgivelser og resulterende applikasjonsytelse
- Merk distribusjonshendelser i Application Insights-diagrammer
- Se nøyaktig når ytelsesendringer skjedde i forhold til distribusjoner
- Identifiser raskt om en distribusjon forårsaket en ytelsesregresjon
Implementering:
- Azure DevOps: Støtter automatisk generering av merknader av kompileringssamlebånd
- Egendefinerte merknader: Opprett vilkårlige merknader ved hjelp av PowerShell
- Metadata: Inkluder byggenummer, produktmerknader, distribusjonsmiljø
Brukstilfelle: Diagrammet for ytelsesberegninger viser toppen av responstiden. Utgivelsesmerknad avslører at spike sammenfaller med distribusjon v2.3.1, og identifiserer umiddelbart den problematiske utgivelsen.
Integrering av arbeidselementer
Funksjonalitet for integrering av arbeidselementer gjør det enklere å bygge inn kontekstavhengige Application Insights-data når du genererer arbeidselementer i GitHub og Azure DevOps:
Funksjoner som forenkler datafangst og generering av arbeidselementer:
Avanserte felt:
- Fyll ut mottakere, prosjekter eller milepæler automatisk
- Angi prioritet basert på alvorlighetsgrad for varsel
- Tagg med berørte komponenter eller tjenester
- Kobling til relaterte arbeidselementer
Flere konfigurasjoner:
- Støtte for et hvilket som helst antall repositorier eller arbeidselementtyper
- Ulike konfigurasjoner for ulike varslingstyper
- Miljøspesifikke maler for arbeidselementer
Forhåndsbygde og tilpassbare KQL-spørringer:
- Legge til Application Insights-data i arbeidselementer automatisk
- Inkluder antall feil, berørte brukere, stabelspor
- Legg ved relevante loggoppføringer
- Bygg inn ytelsesdiagrammer
Tilpassbare arbeidsbokmaler:
- Opprette standardiserte formater for arbeidselementer
- Inkluder sjekklister for feilsøking
- Lenke til runbooks og dokumentasjon
- Forhåndsutfyll diagnoseinformasjon
Eksempel på arbeidsflyt:
- Application Insights oppdager forhøyet unntaksfrekvens
- Varsle branner automatisk
- Arbeidselement opprettet i Azure DevOps med:
- Tittel: "Høy unntaksrate i ProductService"
- Beskrivelse: KQL-spørringsresultater som viser de viktigste unntakene
- Oppdragsgiver: Vaktingeniør fra serviceteam
- Prioritet: Høy (basert på brukerpåvirkning)
- Vedlegg: Siste 100 unntaksstabelspor
- Koblinger: Relaterte Application Insights-spørringer, distribusjonsmerknad
- Ingeniør mottar varsel og har all diagnostisk informasjon umiddelbart