Een succesvolle invoering van DevOps
DevOps, het is een term die je steeds vaker hoort binnen softwareontwikkeling. Organisaties streven er steeds meer naar om nieuwe functionaliteit voor software zo snel en betrouwbaar mogelijk op te leveren. Vanuit dit streven valt er vaak winst te behalen door de overdracht van software van de ontwikkel- naar de beheerafdeling te verbeteren. Maar hoe voer je deze manier van softwareontwikkeling in? Waar begin je?
Om DevOps op een juiste manier binnen je organisatie in te voeren, is het belangrijk om het ontwikkelproces in kaart te brengen. Daarvoor is het handig om te beginnen bij de naamgevers van het concept; de ontwikkel- en beheerafdeling. Met de invoering van DevOps is het belangrijk dat er uiteindelijk een gezamenlijk verantwoordelijkheidsgevoel voor de op te leveren software wordt gecreëerd.
Verschillen
Het traditionele beeld van een ontwikkelafdeling is dat deze afdeling graag zoveel mogelijk functionaliteit zo snel mogelijk in productie neemt. Dit in tegenstelling tot de beheerafdeling waar stabiliteit hoog in het vaandel staat en men wijzigingen op een beheerste en gecontroleerde wijze wil doorvoeren. Een beheerafdeling komt voor de ontwikkelafdeling vaak pas aan het einde van een project in beeld. Hierdoor maakt de beheerafdeling relatief laat kennis met de software die beheerd moet gaan worden en weet deze afdeling na de overdracht vaak niet wat er mee moet gebeuren. Dit is een onwenselijke situatie wanneer software snel en betrouwbaar in productie genomen moet worden. En het creëert al helemaal geen gezamenlijk verantwoordelijkheidsgevoel voor de software.
Collectief
In een DevOps-organisatie is een aparte beheer- en ontwikkelafdeling ongewenst. In plaats daarvan is er één afdeling waarin teams van ontwikkelaars en beheerders worden samengesteld. Elk van deze teams krijgt de verantwoordelijkheid voor het ontwikkelen en in productie nemen van functionaliteit. Hierbij is samenwerking en communicatie tussen zowel de teamleden als de verschillende teams van groot belang.
Binnen de teams kan er de nodige inhoudelijke kruisbestuiving plaatsvinden. Een beheerder kan wat leren van een ontwikkelaar als het gaat om het ontwikkelen van scripts voor het automatiseren van deployments, terwijl het voor een ontwikkelaar geen kwaad kan om een stand-by dienst te draaien zodat hij kan ervaren hoe de gebouwde software in productie functioneert. Door het samenvoegen van ontwikkelaars en beheerders worden beheerders ook eerder betrokken bij de ontwikkeling van software en krijgen zij sneller inzicht in de eisen die software aan de onderliggende infrastructuur zal stellen. Op deze manier kan er een collectief ontstaan dat de verantwoordelijkheid neemt voor de op te leveren software.
Verkleinen van de risico’s van oplevermomenten
Doordat het tempo van opleveren omhoog gaat, wordt het releasen van software ook een steeds kleiner risicomoment in het ontwikkelproces. Dit in tegenstelling tot de traditionele releasekalenders waarbij oplevermomenten vaak maanden van tevoren worden vastgelegd. Wanneer er dan bij een oplevering iets fout gaat, is het wachten tot het volgende oplevermoment en dit kan vaak een aantal weken duren.
De invoering van DevOps is echter niet beperkt tot de samenwerking tussen de ontwikkel- en beheerafdeling. Het kan namelijk ook zo zijn dat de samenwerking tussen deze afdelingen al zo goed is dat men zich beter kan concentreren op de samenwerking tussen twee andere afdelingen. De methodes en technieken die hiervoor gebruikt kunnen worden, zullen per organisatie en afdeling verschillend zijn, maar zullen er wederom op gericht moeten zijn om een collectief verantwoordelijkheidsgevoel te creëren. Voor een succesvolle invoering geldt dan ook; het is het gedachtegoed achter DevOps dat telt, niet de term zelf.
Best practices
Ten slotte zijn er nog een aantal punten die bij de invoering van DevOps in gedachten gehouden moeten worden. Met onderstaande best practices zorg je voor een succesvolle invoering binnen de organisatie:
- Teams: Begin met de teams die open staan voor verandering.
- Olievlek: Probeer niet direct alle processen en teams om te vormen. Begin met een paar producten/diensten, zo heb je ook een concretere verbeterdoelstelling.
- Verbeterdoelstelling: Meet steeds op basis van een concrete doelstelling. Doordat binnen het DevOps-team agile wordt gewerkt, kunnen methodes worden aangepast op het specifieke product of dienst.
- Uitbreiding: Wanneer het succes zichtbaar wordt en de lijn richting de verbeterdoelstelling is ingezet, kan het aantal teams worden uitgebreid. De kennis en ervaring van de eerdere teams kan dan worden gebruikt om het proces te optimaliseren.
- Kennisdeling: Faciliteer kennisdeling tussen teams. Het is niet alleen het doel dat individuele teams verbeteren, maar ook dat de organisatie in de breedte ontwikkelt en verbetert.
Arjen van Gink, consultant bij Info Support is mede auteur van dit blog.
(Ook verschenen op XR-Magazine)