DevOps implementatie met Azure DevOps bij een overheidsorganisatie

Focus op automatisering verkleint user story-wachttijden met 90%.

Bij Devoteam vertellen we graag over hoe we onze klanten helpen om, middels focus op automatisering, tijdswinst te boeken in het IT-proces van hun organisatie. We voeren namelijk tal van DevOps-implementaties uit voor zowel het bedrijfsleven als voor overheden. Hoe gaan we te werk? En wat levert het op?

Deze overheidsorganisatie had te maken met een complexe it-infrastructuur: meerdere websites en een backend systeem wat wordt gebruikt om informatie in op te halen. Om de burger goed te kunnen helpen en een optimale dienst te leveren moesten deze verschillende systemen ook onderling informatie uitwisselen.

Complexiteit vraagt om innovatie

Door de complexiteit van deze onderliggende infrastructuur was het mogelijk dat er zich bepaalde fouten zouden kunnen voordoen. Om dit te voorkomen werd er gekozen om in te zetten op de innovatie van deze it-infrastructuur. Dit hield in dat de manier waarop IT-teams werkten moest veranderen en / of geautomatiseerd worden. Er werd ingezet op twee oplossingen: het verbeteren van het huidige it-systeem en er werd gekozen om in te zetten op een nieuw systeem.

Focus op automatisering en meer verantwoordelijkheid bij teams

Vrij snel werd duidelijk dat er meer aandacht kwam te liggen op de optimalisatie van het huidige systeem; bijvoorbeeld met het toevoegen van nieuwe features. Bij het verbeteren van dit systeem en het proces lag de focus op automatisering en meer verantwoordelijkheid bij de teams. Ook werd vanuit het management de eisen om naar productie te gaan hoger en strenger gecontroleerd. Daarom werd er een begin gemaakt met de focus op CI/CD (“Continuous Integration / Continuous Delivery”); zorgen dat de ontwikkelde software op een geautomatiseerde, herhaalbare, voorspelbare en veilige manier wordt geleverd. Hierdoor worden incidenten naar aanleiding van een update geminimaliseerd.

Naast CI/CD was het de bedoeling dat teams zelf wijzigingen richting productie konden brengen zonder te veel afhankelijk te zijn van andere teams om de levering naar productie te versnellen: de Devops manier van werken. Projecten en werkzaamheden moesten secuurder worden belegd bij verschillende teams. Tijdens dit proces is met Microsoft Azure DevOps een start gemaakt met het automatiseren van de processen van de software levering door middel van het bouwen van pipelines; de geautomatiseerde wegen naar productie.

Kwaliteitscontrole

De code die geschreven wordt door de ontwikkelaars mag niet zomaar naar productie. Er zijn controles nodig om te verifiëren dat de code aan de functionele en veiligheidseisen voldoet. Door deze controles toe te passen konden wij richting stakeholders (o.a. management) bewijzen dat nieuwe code veilig naar productie geleverd kon worden. In de pipelines van Azure DevOps wordt verschillende tooling aangeroepen om de code te controleren. Naast het uitvoeren van de gebruikelijke unit tests (tests die individuele stukjes code op functionaliteit verifiëren) werd ook Tricentis Tosca gebruikt voor het testen van de applicatieschermen en processen. SonarQube werd gebruikt voor het bewaken van de kwaliteit van de code (denk aan leesbaarheid en onderhoudbaarheid) middels best practices en Fortify voor het bewaken van de veiligheid van de code. De code mag alleen naar productie als hij door alle controles komt.

Scripting: PowerShell

Als er taken waren die niet in Azure DevOps zaten, werd Powershell gebruikt om die taken toch te automatiseren. Eén van de grootste en belangrijkste taak was het gebruik voor het updaten van de database. Bij deployment controleerde het script een aantal dingen. Ten eerste welke database scripts heeft uitgevoerd. Dit voorkomt fouten in de database. Als tweede werd gecontroleerd of het script in de tussentijd nog is gewijzigd, om fouten en fraude te voorkomen. Als laatste werd gecontroleerd of het script voldeed aan de best practices en eisen van het database administrator team. Als alles vervolgens goed was werd het database uitgevoerd en werd in een tabel bijgehouden dat het script was uitgevoerd, door wie en de logging.

Tijdwinst voor teams per user story meer dan gehalveerd en wachttijd gedaald naar tien minuten

Door automatisering is er veel tijdwinst geboekt in het gehele deployment proces. Zo zijn er bepaalde activiteiten die niet meer handmatig worden uitgevoerd waardoor de tijd voor de gehele user story aanzienlijk is verminderd: van 350 minuten naar in totaal 160 minuten. Zo hoeven er bijvoorbeeld geen handmatige runbooks meer te worden gemaakt op de vrijdagmiddag. Bovendien zijn er veel duidelijke afspraken gemaakt met verschillende stakeholders. Ontwikkelaars en testers weten, door een korte feedback loop, meteen of ze goed bezig zijn en welke wijziging definitief kan worden doorgevoerd.

Minder wachttijd op weg naar productie, meer involvement van verschillende teams. Door value stream mapping zijn de processen van teams in kaart gebracht. Zo werd duidelijk wat de verschillende wachttijden waren en bij welke teams. Dit is enorm verminderd; van 100 minuten naar slechts tien minuten per user story. Daarnaast is het veel duidelijker wat het proces is en wat de minimale eisen zijn om naar productie te gaan. Er zijn minder goedkeuringen vereist en door de automatisering van het proces ligt er meer ownership bij de teams.

De teams bij deze opdrachtgever zijn nu meer in control, hebben meer verantwoordelijkheid en vrijheid en leveren met hogere kwaliteit. Bij de interne stakeholders die de processen bewaken is er minder angst om updates naar productie toe te laten, want je kunt altijd zien in Azure DevOps wat, door wie en wanneer iets is gebeurd. Door automatisering en meer verantwoordelijkheid bij teams zijn de eerder vaak geëiste controles vanuit stakeholders verminderd.

devoteam

Contact

Eduard Kuijpers

Continuous Delivery Consultant