Continuous Deployment: Informatie en Rapportage
6 maart 2017 - In mijn vorige blogpost ben ik ingegaan op de verschillen tussen Continuous Integration, Continuous Delivery en Continuous Deployment. Daarbij heb ik specifiek het onderdeel Cultuur en organisatie besproken. De conclusie was dat je niet zomaar kunt beginnen met Continuous Deployment, maar dat je een bepaalde volwassenheid moet hebben in de verschillende facetten die horen bij het software ontwikkel proces. Om dit in kaart te brengen kun je kijken naar een Continuous Deployment Maturity model zoals hieronder weergegeven.
Figuur 1: Continuous Maturity Model
Informatie en Rapportage
Het Continuous Deployment Maturity model is opgebouwd rondom een aantal facetten: Culture & Organization, Build & Deploy, Release, Data management, Test & Verificatie en Information & Reporting. Elk facet doorloopt een aantal fasen. In dit artikel lichten we het onderdeel Informatie en Rapportage uit.
Fase 1: Initial
In de eerste fase zitten organisaties die starten met het vastleggen van gegevens omtrent het software ontwikkel proces. Rapportage wordt op verzoek gedraaid en is een handmatig proces. De gegevens worden handmatig verzameld en beslaan een basis set van de gegevens. Denk hierbij aan: Aantal bugs, aantal hot-fixes, aantal features dat in een release zit, Cycle time, Lead time.
Fase 2: Managed
Wanneer het proces volwassener wordt komt het in de volgende fase. In deze fase begin je om het proces te meten en statistieken bij te houden die een goed beeld geven van waar verbeteringen mogelijk en nodig zijn. De set wordt uitgebreid met gegevens omtrent bijvoorbeeld de dekking van de unit tests, aantal fouten gevonden tijdens integratie test, kwaliteit van de code. Rapportages zijn geautomatiseerd, waardoor ze continue beschikbaar zijn en je ze ook kunt gebruiken om deze informatie binnen het team zichtbaar te maken. De teamleden gaan op basis van de beschikbare rapportages problemen zien en zelf verbeteringen voorstellen.
Fase 3: Defined
In deze fase wordt de automatisering van rapporten doorgevoerd naar het automatisch genereren van release notes. De rapportage geeft niet alleen inzicht in de status van dit moment, maar geeft ook een historisch beeld. De rapportage is niet alleen beschikbaar voor het team zelf, maar ook voor andere geïnteresseerden (bijvoorbeeld andere teams en/of teamleden een stakeholders).
Fase 4: Quantatively managed
In de volgende fase van volwassenheid geeft de rapportage niet alleen inzicht in de status van dit moment, maar geeft ook een beeld van de historische trends. Rapportage bevat nu dan ook grafische overzichten. Deze grafische overzichten geven een actueel beeld over de gegevens die van belang zijn voor de deployment pipelines.
Fase 5: Optimizing
In de laatste fase van volwassenheid zijn de rapportages te verkrijgen op basis van een self-service model. Op aanvraag kan iedereen die toegang heeft de beschikbare rapporten opvragen. Er zijn dashboards beschikbaar die naar wens door elke gebruiker aangepast kan worden naar zijn of haar voorkeuren. De informatie is over de gehele organisatie beschikbaar, er zijn geen beperkingen meer tussen de verschillende organisatie eenheden.
Belang
Wat is nu het belang van het onderdeel Informatie en Reporting en wat is de reden om hier volwassen in te worden voordat je de stap kunt gaan maken naar bijvoorbeeld Continuous Integration of zelfs Continuous Deployment.
Informatie die je krijgt over het software ontwikkel proces is belangrijk om tot verbeteringen te kunnen komen. Wanneer je aan het begin van het maturity model zit dan is de informatie voorziening handmatig. Dit betekent dat je niet snel feedback krijgt over het verloop van het proces. Handmatig betekent ook dat het arbeidsintensief is wat ertoe leidt dat informatie over het algemeen één keer per sprint opgehaald wordt en dat dit ook het enige moment is waarop bijgestuurd kan worden.
Op het moment dat je volwassener wordt in de informatie verstrekking en reporting kun je ook de release notes automatisch generen. Ook dit is een stap in het frequenter kunnen releasen. Ervaring bij teams die nog niet volwassen zijn is dat de release notes pas aan het einde van de Sprint (of zelf pas de sprint voordat er een release wordt gemaakt) worden opgesteld.
Wanneer je een volgende stap in volwassenheid zet krijg je ook inzicht in trends, je kunt eenvoudig de impact meten van wijzigingen die je aanbrengt in het software ontwikkel proces. Is de wijziging inderdaad een verbetering? Belangrijk omdat dit input is voor de volgende verandering die je aan wilt brengen.
Als je de juiste volwassenheid hebt dan ben je in staat om binnen je eigen team alle gewenste infomatie (ad-hoc) op te vragen, kun je over teams heen rapporteren (belangrijk indien je met meerdere teams aan 1 product werkt) en ben je in staat om op elk gewenst moment release notes te produceren. Allemaal zaken die belangrijk zijn om te komen tot Continuous Integration, Continuous Delivery of Continuous Deployment.
Hebt u behoefte aan advies of ondersteuning, aarzel dan niet om contact met ons op te nemen via 085 - 487 52 00.
Marcel Groennou, DevOps Consultant / Agile Coach