Geautomatiseerd ophalen en visualiseren van DORA metrieken
Een praktische implementatie met OutSystems, Azure DevOps en Elastic
DevOps-principes zijn cruciaal om snelle, betrouwbare en consistente levering van software te waarborgen. Een belangrijke manier om het succes van een DevOps-strategie te meten is door gebruik te maken van de DORA-metrieken. Deze metrieken, ontwikkeld door het DevOps Research and Assessment (DORA) team van Google, voorspellen in hoge mate van nauwkeurigheid de waarde die een team aan de organisatie levert. Al eerder hebben wij geschreven en een video gemaakt over DORA en haar metrieken.
In deze blog zullen we stilstaan bij wat DORA-metrieken zijn, de implementatie van een geautomatiseerd systeem om deze metrieken op te halen en te visualiseren en hoe wij dit hebben gerealiseerd met een combinatie van OutSystems, Azure DevOps en Elastic.
Wat zijn DORA-metrieken?
Uit jaren aan onderzoek naar wat high-performing teams succesvol maakt, zijn vier metrieken gekomen die het meest nauwkeurig de waarde voorspellen die een team aan de organisatie levert. Deze worden uitgedrukt in low, medium of high of elite performers.
Laten we kort ingaan op elke metriek:
Deployment frequency: Hoe vaak brengt een IT-team software naar productie? Is dat eens per maand? Of meerdere keren per dag? Om je op dit vlak high performer te kunnen noemen, is een hoge mate van automatisering van je ontwikkelproces een absolute vereiste.
Change lead time: Geeft aan hoe snel een organisatie in staat is te reageren op een verandering van bijvoorbeeld marktvraag, regelgeving of veiligheidsrisico’s. Hierbij wordt de tijd gemeten van de start van het ontwikkelen van een stukje software tot de ingebruikname ervan.
Change failure rate: Geeft aan hoeveel procent van doorgevoerde veranderingen in de software zorgt voor een verslechtering van het product, en dus fixes, rollbacks en patches vereist. Bij een low performer kan dit wel 46 tot 60% zijn terwijl dat bij high performers slechts 0 tot 15% is.
Time to restore service: Vertelt hoe snel een team in staat is om een fout die van invloed is op de gebruikerservaring te herstellen. Een low performer heeft hier een week tot een maand voor nodig, terwijl een high performer dit binnen een dag kan oplossen. Uiteraard is het belangrijk om er zo snel mogelijk achter te komen dat er iets fout gaat. Een goede monitoringoplossing is hierbij onmisbaar.
Waarom automatiseren?
Wij zien dat de DORA-metrieken bij klanten steeds vaker gebruikt worden, maar vaak nog handmatig of “op gevoel” met het team worden bepaald. Het automatiseren hiervan heeft vele voordelen:
- Verhogen nauwkeurigheid: Automatisering minimaliseert menselijke fouten, waardoor de gegevens betrouwbaarder zijn en de metingen preciezer.
- Verminderen handmatig werk: Door processen te automatiseren, hoeven teams geen tijd te besteden aan het handmatig verzamelen en verwerken van data.
- Eén standaard systeem voor meerdere teams: Een generieke oplossing zorgt ervoor dat alle teams met dezelfde meetmethoden werken, wat het consistenter maakt en makkelijk uit te breiden is naar andere teams.
- Visualisatie: De gegevens worden automatisch naar Elastic gestuurd, waar er duidelijke en inzichtelijke dashboard op kunnen worden gemaakt.
Ophalen data automatiseren
Laten we nu bespreken hoe we dit hebben gerealiseerd.
Deployment Frequency
Zoals eerder besproken meet de Deployment Frequency meet hoe vaak een team code naar productie brengt. Binnen OutSystems wordt deze data opgeslagen in de LifeTime database – LifeTime coördineert de overplaatsing van code naar een omgeving.
Door binnen Logstash een directe SQL-query te schrijven die de LifeTime database benadert, kunnen we automatisch de gegevens ophalen over hoeveel keer per dag/week/maand een bepaalde applicatie is uitgerold naar productie en aan welk team dit gekoppeld is. Deze data wordt getransformeerd en vervolgens naar Elastic gestuurd.
Deze aanpak maakt het gemakkelijk om voor de deployment frequency meerdere applicaties en teams tegelijk te monitoren, zonder dat teams handmatig gegevens moeten bijhouden.
Change lead time
Bij Lead Time for Changes – hoe lang duurt het om van gecommitteerde code naar code die succesvol in productie draait te gaan – hebben wij gekeken naar Azure DevOps boards.Teams loggen hierin hoe lang het duurt om aan een feature te werken. Met teams hebben wij afgesproken dat wanneer de aan een feature beginnen de werken deze naar active wordt verplaats en wanneer deze wordt vrijgegeven aan de eindgebruiker naar done wordt verplaatst. Met een custom Powershell script en APIs halen wij deze data op en sturen het naar Elastic.
Time to restore service en Change failure rate
Voor Time to restore service en Change failure rate hebben wij een soortgelijke aanpak genomen. In het geval van een service verstoring wordt dit door de teams in Azure DevOps als een bug gelogd. Deze bug wordt naar done verplaatst als de verstoring weer verholpen is. De data over de bugs wordt via de Powershell script en de APIs opgehaald, de tijd tussen de aanmaak en oplossing van de bug wordt berekend, waarna deze naar Elastic gestuurd wordt.
Change failure rate is evenals gebaseerd op deze bugs, maar hierbij specifiek als een verstoring na een nieuwe deployment optreedt. In dat geval wordt in de bug informatie over de deployment meegegeven. Deze data wordt ook naar Elastic gestuurd. Binnen Elastic kunnen we vervolgens een vergelijking maken tussen het aantal deployments en het aantal deployments waar een bug aan gerelateerd is.
Metrieken automatisch visualiseren in Elastic
Zoals eerder aangegeven, brengen we de data van de verschillende bronnen samen in Elastic – onze gekozen datastore voor data-analyse en visualisatie. Elastic biedt veel mogelijkheden voor data-invoer -in dit geval vanuit Logstash en direct via APIs. Daarnaast beidt Elastic biedt goede mogelijkheden om de DORA-metrieken te visualiseren met dashboards gebaseerd op de verschillende databronnen die hiervoor besproken zijn. Hierbij kunnen teams zowel hun huidige performance zien als hun voortgang over de tijd heen.
Voordelen van deze benadering
Door de combinatie van het direct ophalen van gegevens uit OutSystems LifeTime voor de Deployment Frequency en het gebruik van een PowerShell-scriptvoor de overige metrieken uit Azure DevOps, hebben we een robuust en flexibel systeem opgezet. Het belangrijkste voordeel van deze aanpak is dat het generiek is en werkt voor meerdere teams, zonder dat elk team handmatig rapporten hoeft te maken. Daarnaast is het makkelijk uit te breiden naar andere OutSystems teams die ook van Azure DevOps gebruik maken. Wel is het belangrijk dat teams hun werkwijze binnen Azure DevOps goed bijhouden.
Conclusie
Het geautomatiseerd ophalen van DORA-metrieken biedt DevOps-teams waardevolle inzichten in hun prestaties en helpt hen om continu te verbeteren. Door gebruik te maken van een combinatie van OutSystems LifeTime, PowerShell, Azure DevOps en Elastic hebben we een schaalbare en flexibele oplossing gecreëerd die voor elk team werkt. Dit proces zorgt ervoor dat teams zich kunnen focussen op het optimaliseren van hun processen en het leveren van waarde, zonder zich zorgen te hoeven maken over het handmatig bijhouden van hun voortgang.
Door Guido Vandecasteele, Data Analist en Consultant