Als er vandaag de dag een grote uitdaging is voor IT-managers wereldwijd, dan is het wel de integratie tussen ontwikkelings- en operationele teams om de levering van een product of dienst aan klanten te verbeteren. Deze end-to-end procesoptimalisatie is zo belangrijk voor de markt dat er een methodologie voor werd bedacht: DevOps. In dit artikel kom je er alles over te weten.
Wat is DevOps?
DevOps - de afkorting staat voor Development (Dev) en Operations (Ops) - wordt gedefinieerd als ‘een softwareontwikkelingsmethode die focust op communicatie, samenwerking en integratie tussen softwareontwikkelaars en IT-professionals’. Beide partijen hebben elkaar nodig, vandaar dat in een wereld waar digitale services in veel sectoren het concurrentievoordeel vormen de implementatie van DevOps organisaties kan helpen om snel nieuwe software te ontwikkelen.
Daarom wordt DevOps gezien als een van de meest relevante aspecten in digitale transformatieprocessen. Deze methodologie helpt immers niet alleen de spanning te verminderen tussen de teams die verantwoordelijk zijn voor het veranderen van het bedrijf (ontwikkeling) en zij die zich ontfermen over de operationele uitvoering. Maar ook om de communicatie, integratie en samenwerking te bevorderen tussen IT-professionals die zich bezighouden met het ontwikkelen van applicaties en de verantwoordelijken voor infrastructuur en operationele processen.
Waar komt Devops vandaan?
De DevOps-beweging startte niet op één specifieke plek, maar vond zijn oorsprong op meerdere plaatsen. Rond 2008 begint men de term ‘agile infrastructuur’ te gebruiken in mailinglijsten die zijn gericht op agile ontwikkeling, en tegelijkertijd ook tijdens de Agile2008 conferentie. Dit congres in Toronto had als doel de discussie op te starten over de noodzaak om processen te veranderen en de werkmethodes van IT-teams te homogeniseren.
De term ‘DevOps’ werd voor het eerst in de mond genomen op de Velocity Conference 2009 in San Jose, waar John Allspaw (Etsy.com) en Paul Hammond (Typekit) een keynote gaven die was gericht op het verenigen van ontwikkelaars (Dev) en IT-infrastructuurbeheerders (Ops), met als doel de naadloze integratie door levering te bevorderen. Een van de aanwezigen op dat congres was de Belg Patrick Debois, die na de bewuste presentatie met het geweldige idee kwam om de DevOpsDay te organiseren. Deze bijeenkomst, die twee dagen duurt, werd eind 2009 voor de eerste maal in Gent gehouden. Het is daar, op Belgische bodem, dat het begrip wereldwijde bekendheid kreeg.
Hoe werkt DevOps?
Zoals alle culturen kent ook DevOps vele variaties. De meesten zijn het er echter over eens dat de volgende kwaliteiten dezelfde zijn voor alle DevOps-culturen:
1) Cultuur: teams moeten samenwerken en een gezonde relatie onderhouden. Bedrijven moeten gedrag veranderen, voldoende flexibiliteit aan de dag leggen, ideeën uitwisselen, gecentraliseerde verantwoordelijkheden vermijden, en de oprichting van multidisciplinaire teams aanmoedigen.
2) Automatisering: tools zijn nodig om de meeste processen te kunnen automatiseren, zoals: automatisering voor release, automatisering van de bouw, levering van omgevingen voor testen, monitoring of elk ander proces, het is interessant om herhalingsprocessen te identificeren of die lang duren en proberen zo snel mogelijk op te lossen, om te voorkomen dat het in de toekomst iets moeilijker wordt om te veranderen;
3) Meting / Evaluatie: meet alles wat mogelijk is: prestaties, processen en interacties en zelfs mensen. Zonder metingen kunnen processen niet worden verbeterd of geperfectioneerd.
4) Delen: goede communicatie tussen de teams is essentieel, het stimuleren van mensen om met elkaar te communiceren en ideeën en problemen te delen is cruciaal voor het welslagen van een DevOps-initiatief. Succesverhalen trekken nieuwe talenten voor de beweging aan. Creëer ook een uitstekend feedbackkanaal dat bevorderlijk is voor een continu verbeteringsproces.
Continue integratie en levering
Agile ontwikkelingsmethodologieën maakten snelle leveringen met kleine en frequente codewijzigingen mogelijk, in plaats van versies met grote veranderingen waarvoor veel meer tijd nodig was. Deze optimalisatie faciliteerde al snel het parallelle werk van de leden van het ontwikkelteam. Omdat de leveringen in een korte tijdsspanne gebeuren, kan een programmeur op één deel van de code reageren en zijn collega’s op andere, wat de ontwikkeling veel flexibeler maakt. Continue integratie is een essentieel proces van deze agile methodologieën die de integratie van het werk van de leden van een team versnelt met de uitvoering van geautomatiseerde code builds en tests.
Continue integratie bevordert gezamenlijk werk en hiervoor is het essentieel dat een oplossing voor versiebeheer wordt gebruikt, zoals Gitlab, Github, CVS of Subversion. Deze hulpprogramma's maken een hoofdopslagplaats voor het opslaan van code en het onderhouden van versies bij elke wijziging die men aanbrengt, zodat deze indien nodig kunnen worden teruggezet en gecontroleerd.
Voor parallel werk worden takken (of trunks) in deze hulpmiddelen gemaakt die een complete kopie van de code bevatten, zodat deze door het team kan worden gewijzigd zonder de hoofdcode of takken van andere programmeurs te verstoren. Nadat men de code van een filiaal heeft gewijzigd, dient deze in de hoofdcode te worden geïntegreerd. Hiertoe vergelijkt het hulpprogramma voor versiebeheer de vertakking en hoofdrepositorycode en onderhoudt het alleen de verschillen door de codes te consolideren. Maar omdat de aanpassingen snel en frequent dienen te gebeuren, zullen er meerdere integraties zijn, soms op dezelfde dag. Belangrijk is ervoor te zorgen dat ze geen fouten genereren.
De testopbouw en het toepassingsproces moeten dan worden uitgevoerd met elke nieuwe wijziging. Op deze manier valideert de programmeur zo snel mogelijk zijn wijziging, zodat deze zo snel mogelijk kan reageren op een mogelijke correctie of opvolging voor een nieuwe wijziging. Bovendien maakt het testen van kleine delen van gewijzigde codes het makkelijker om fouten te begrijpen in vergelijking met cumulatieve leveringen met een groot aantal wijzigingen, waardoor het risico tot een minimum wordt beperkt. Er zijn verschillende tools voor het automatiseren van de bluid, zoals Ant en Maven voor Java en Nant en MSBuild voor .NET. Het is absoluut noodzakelijk dat de code een eenheidstests bevat om ervoor te zorgen dat nieuwe implementaties werken zoals verwacht.
DevOps-hulpmiddelen
Hoewel het succes van DevOps in grote mate afhankelijk is van de onderliggende culturele verschuiving, zijn de tools nog steeds belangrijk. Hier is een korte lijst van enkele van de hulpmiddelen die vaak worden gebruikt in een DevOps-omgeving:
- Bronrepository: Git, CloudForce, TFS, Subversion;
- Bouw server: SonarQube, Jenkins, Artifactory;
- Configuratiemanagement: Puppet, Ansible, Salt, Chef;
- Testautomatisering: selenium, water;
- Virtuele infrastructuur: Amazon Web Services, Microsoft Azure, VMware vCloud.
Het overstappen van traditionele softwareontwikkeling naar DevOps-werkwijzen is een hele uitdaging omdat het een aanzienlijke verandering in de hele organisatie met zich meebrengt. De sleutel tot succes is de juiste mensen toewijzen aan de juiste processen, en hen te wapenen met de juiste tools. Als je de beste werkwijze hanteert bij het creëren van een leveringspijplijn met continue integratie, continue tests, continue levering en continue implementatie, kan het bijna niet anders dat een overstap naar DevOps aanzienlijke voordelen voor je organisatie oplevert.