In de praktijk zien wij nog regelmatig dat software in leveringen wordt overgedragen aan de klant na configuratie & installatie. Eens in de zoveel tijd wordt de dan software voorzien van een update, wat ervoor zorgt dat het uitrollen van updates vaak moeizaam gaat. Een organisatie kan daardoor een dag of zelfs een heel weekend de betreffende software niet gebruiken, wat enorme kosten met zich meebrengt.
Technologiebedrijven zoals Microsoft, Google en Amazon rollen meerdere versies van hun software iedere dag uit. Zonder dat een gebruiker dit merkt. Het principe wat hiervoor gebruikt wordt is DevOps. Hierdoor is het mogelijk om veranderingen sneller in productie te nemen en minimaliseer je risico’s in kwaliteit. Maar hoe werkt dit in de praktijk en waarom kiezen wij als Soltegro voor dit principe?
Hoe doe je dit?
DevOps is samengesteld uit “Development (Dev)” en “Operations (Ops)”. Hiermee wordt bedoeld dat het agile/scrum-team naast de ontwikkeling van de software ook taken opneemt voor het in stand houden van de applicatie en regelmatig nieuwe versies uitrolt. Iedere sprint (of eens per zoveel sprints) wordt een gehele cyclus van ontwerpen, ontwikkelen, bouwen, testen, uitrollen, beheren en analyseren/meten doorlopen. Om dit te bereiken, doorbreek je traditionele scheiding tussen development en operations. Beide expertises zijn cruciaal zijn voor het succesvol leveren en onderhouden van software die voldoet aan de functionele- en niet-functionele eisen.

Afbeelding: DevOps cycle
DevOps team
Het agile/scrum-team is ook het team dat verantwoordelijk is voor het ontwikkelen en het beheer van de software. Hierdoor verdeel je zoveel mogelijk kennis over alle teamleden en wordt het risico van niet-beschikbaarheid van de juiste kennis te verkleint.
In de praktijk
Continuous-integration[1] is een belangrijk onderdeel bij softwareontwikkeling. Het continu samenvoegen en controleren van alle ontwikkelde software, met daarbovenop geautomatiseerd uitvoeren van kwaliteitscontroles, systeem en/of unittesten en het maken van een versie (release-management).
Bij Soltegro gebruiken we hiervoor al jaren onze eigen ontwikkelstraat, die bestaat uit de volgende componenten:
- Build/automation-server
- Versiebeheersysteem
- Issue-managementsysteem
- Documentatie-managementsysteem
- Code-review systeem
- Stijl & statische code controle
DevOps stelt dat je daar continuous-delivery[2] bovenop uitvoert. Dat houdt in dat software regelmatig uitgerold wordt. Een proces dat je, omdat je het vaak doet, zoveel mogelijk wilt automatiseren. Het voordeel is dat dit niet meer fout gaat. Door vaak te releasen is een release ook geen spannend moment meer. Het zijn kleine stapjes, changes die worden toegevoegd.
Goed om te weten
- Om DevOps goed uit te voeren, moet de software voorzien zijn van mogelijkheden om goed de werking te meten, kwantificeren en herkennen wanneer de software niet meer werkt.
- De relatie tussen het team en gebruikers is kort en toegankelijk.
- Goed release-management is essentieel; beheer van versies en welke versie draait waar.
- Gebruik van de juiste tooling die DevOps faciliteert is noodzakelijk.
- Voor het automatisch uitrollen van software moet deze goed getest zijn. Dit kan geautomatiseerd worden. Maar het is belangrijk om dit in een gescheiden omgevingen te doen zodat deze elkaar niet beïnvloeden en er gecontroleerd een productierijpe versie ontstaat.
- Een OTAP (Ontwikkel, Test, Acceptatie & Productie) straat is gebruikelijk.
- Beslaat het een groot project?
- Probeer gemeenschappelijke code samen te voegen in packages.
- Zorg voor goede interfaces – die rekening houden met de verschillende versies.
- Rol uit op basis van een regio of divisie i.p.v. alles in een keer.
- Maak gebruik van microservices
Binnen de projecten die wij met Soltegro doen, zien wij grote toegevoegde waarde door met de DevOps principe te werken.
De voordelen zijn:
- DevOps maakt het mogelijk om een vroege versie van de software – een Minimum Viable Product (MVP) – al uit te rollen en te gebruiken. Deze wordt geleidelijk aan voorzien van nieuwe features en bugfixes via updates.
- Hierdoor kan de klant al vroegtijdig resultaat zien en sturen op toegevoegde waarde. Dit maakt het agile/scrum-proces efficiënter, doordat er alleen ontwikkeld wordt wat ook echt nodig is.
- Door vaak software uit te rollen, gaat dit steeds soepeler. Het stap voor stap automatiseren van dit proces zorgt voor versnelling en een lager risicoprofiel. Ook het terugdraaien, als de uitrol fout gaat, wordt gemakkelijker.
- Of maak gebruik van rollforward en breng snel fixes aan.
- Schoonheidsfoutjes en onvolkomenheden worden sneller opgepakt en opgelost.
- De algemene kwaliteit van de software wordt beter.
DevOps geeft al enorm veel meerwaarde in standaard softwareprojecten. Als de software gehost wordt in een cloud-omgeving kan deze configuratie óók geïntegreerd worden in je processen door deze uit te werken in code. Hierdoor beheer en onderhoud je niet alleen je softwarecode maar neem je ook de infrastructuur mee waarop deze wordt gehost (Infrastructure as Code). Een interessante ontwikkeling, waar ik in een volgend artikel graag meer over vertel.