DevOps-metrikker – hvor skaffer man data for beregninger

Ærlig talt lo Ivan ofte av kollegenes forgjeves anstrengelser fra overvĂ„kingsavdelingen. De la ned store krefter for Ă„ implementere metrikker bestilt av ledelsen i selskapet. De var sĂ„ opptatt at de ikke ville gjĂžre noe annet.

Og ledelsen var aldri fornĂžyd – de bestilte stadig flere og flere metrikker og sluttet raskt Ă„ bruke det som allerede var gjort.

NĂ„ om dagen var det bare snakk om LeadTime – tiden det tok Ă„ levere forretningsfunksjoner. Metrikken viste et vanvittig tallet – 200 dager for Ă„ levere Ă©n oppgave. Hvordan folk sukka, gispte og lĂžftet hendene mot himmelen!

Etter en stund stilnet stĂžyen, og ledelsen ba om Ă„ lage enda en metrik.

Ivan forsto godt at den nye metrikken ogsÄ ville dÞ stille i et mÞrkt hjÞrne.

Virkelig, tenkte Ivan, tallet forteller ingen noe som helst. 200 dager eller 2 dager – det er ingen forskjell, fordi man kan ikke utlede Ă„rsaken eller avgjĂžre om det er bra eller dĂ„rlig ut fra tallet.

Dette er den typiske fellene med metrikker: det virker som om den nye metrikken vil avslÞre livets essens og forklare en skjult hemmelighet. Alle hÄper sÄ mye pÄ dette, men ingenting skjer av en eller annen grunn. Fordi hemmeligheten ikke skal sÞkes i metrikker!

For Ivan var dette et tema han allerede hadde vĂŠrt igjennom. Han visste at metrikker – det er bare en vanlig trelineal for mĂ„linger, og alle hemmelighetene mĂ„ sĂžkes i pĂ„virkningsobjektet, det vil si det som former denne metrikken.

For en nettbutikk vil pÄvirkningsobjektet vÊre kundene som bringer inn penger, mens for DevOps vil det vÊre teamene som lager og distribuerer pakker ved hjelp av rÞrledningen.

En dag, mens han slappet av i en komfortabel stol i hallen, bestemte Ivan seg for Ä tenke grundig gjennom hvordan han Þnsket Ä se DevOps-metrikker med tanke pÄ at pÄvirkningsobjektet er teamene.

MÄlene med DevOps-metrikker

Det er klart at alle Ăžnsker Ă„ redusere leveringstiden. 200 dager – det er jo helt uholdbart.

Men hvordan, det er spÞrsmÄlet?

I selskapet jobber hundrevis av team, og tusenvis av pakker passerer gjennom DevOps-rÞrledningen hver dag. Den reelle leveringstiden vil fremstÄ som en fordeling. Hvert team vil ha sin egen tid og sine egne sÊregenheter. Hvordan kan man finne noe som helst blant dette kaoset?

Svaret kom av seg selv – man mĂ„ finne de problematiske teamene og finne ut hva som skjer med dem og hvorfor det tar sĂ„ lang tid, og av «gode» team lĂŠre hvordan alt gjĂžres raskt. For dette er det nĂždvendig Ă„ mĂ„le tiden teamene bruker pĂ„ hver av DevOps-standene:

DevOps-metrikker – hvor skaffer man data for beregninger

«MÄlet med systemet vil vÊre Ä velge team basert pÄ tiden det tar Ä gjennomfÞre standene, det vil si at vi til slutt mÄ fÄ en liste over team med den valgte tiden, og ikke bare et tall.

Hvis vi finner ut hvor mye tid som totalt er brukt pÄ standen og hvor mye tid som er brukt pÄ venting mellom standene, kan vi kontakte teamene, snakke med dem og fÄ en mer detaljert forstÄelse av Ärsakene og fjerne dem», tenkte Ivan.

DevOps-metrikker – hvor skaffer man data for beregninger

Hvordan beregne leveringstid for DevOps

For Ä kunne beregne dette mÄtte vi gÄ dypere inn i DevOps-prosessen og dens essens.

I selskapet brukes et begrenset antall systemer, og informasjon kan bare hentes fra dem, ingen andre steder.

Alle oppgaver i selskapet ble registrert i Jira. NÄr en oppgave ble tatt til behandling, ble det opprettet en branch for den, og etter implementering ble det gjort et commit i BitBucket og en Pull Request. NÄr PR (Pull Request) ble akseptert, ble det automatisk opprettet et distribusjonsregnskap og lagret i Nexus-lageret.

DevOps-metrikker – hvor skaffer man data for beregninger

Deretter ble distribusjonen rullet ut pÄ flere stander med hjelp av Jenkins for Ä sjekke korrektheten av utrullingen, automatisk og manuell testing:

DevOps-metrikker – hvor skaffer man data for beregninger

Ivan beskrev fra hvilke systemer hvilken informasjon som kan hentes for Ä beregne tiden pÄ standene:

  • Fra Nexus – Tidspunkt for opprettelse av distribusjonen og navnet pĂ„ mappen der koden til teamet ble lagret
  • Fra Jenkins – Starttid, varighet og resultat av hver jobb, navnet pĂ„ standen (i jobbparametrene), stadiene (steg av jobben), lenke til distribusjonen i Nexus.
  • Jira og BitBucket bestemte Ivan seg for Ă„ ikke inkludere i kjeden, siden de mer hĂžrte til utviklingsfasen, og ikke til utrullingen av den ferdige distribusjonen gjennom standene.

DevOps-metrikker – hvor skaffer man data for beregninger

Basert pÄ den tilgjengelige informasjonen ble det utarbeidet et slikt skjema:

DevOps-metrikker – hvor skaffer man data for beregninger

Ved Ä vite hvor mye tid det tar Ä opprette distribusjoner og hvor mye tid som brukes pÄ hver av dem, kan man lett beregne de totale kostnadene for Ä gjennomfÞre hele DevOps-kjeden (full syklus).

Slik ble DevOps-metrikker til Ivan til slutt:

  • Antall opprettede distribusjoner
  • Andel distribusjoner som "kom inn" pĂ„ standen og "bestand" standen
  • Tiden brukt pĂ„ standen (syklus av standen)
  • Full cycle (total time for all stands)
  • Job duration
  • Downtime between stands
  • Downtime between job launches on the same stand

On one hand, the metrics very well characterized the DevOps pipeline in terms of time, but on the other, they were considered too simplistic.

Satisfied with his work, Ivan prepared a presentation and went to present it to the management.

On the way back, he looked gloomy and with his hands down.

— This is a fiasco, buddy — smiled the ironic colleague


Read the continuation in the article "How quick results helped Ivan».

Kilde: habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster