DevOps
Onder DevOps verstaan we
- Een verzameling technische methoden en tools en
- Een bepaalde cultuur van samenwerking tussen de teams softwareontwikkeling en IT.
Bij DevOps gaat het erom de samenwerking tussen softwareontwikkeling en IT-beheer via gemeenschappelijke processen en software tools efficiënter te maken en op elkaar af te stemmen. Een DevOps-team bestaat uit ontwikkelaars en IT-medewerkers die gedurende de gehele productlevenscyclus samenwerken.
Oorsprong van DevOps
De term DevOps ontstond in 2009 en is samengesteld uit de delen Dev (= Software Development / softwareontwikkeling) en Ops (= IT Operations / systeembeheer).
De beweging die leidde tot de ontwikkeling van DevOps begon echter al eerder: rond 2007 wisselden de community's voor IT Operations en softwareontwikkeling al kennis met elkaar uit. De leden zagen de scheiding tussen de teams die de code schreven en de teams die de code beschikbaar stelden en ondersteunden als problematisch. Deze uitwisseling markeert het startpunt voor de integratie van beide vakgebieden.
Doelen van DevOps
DevOps wordt ingezet om de volgende doelen te bereiken:
- De softwarekwaliteit verhogen
- De ontwikkeling en oplevering van software versnellen
- De samenwerking tussen de teams die betrokken zijn bij ontwikkeling en uitrol verbeteren
- Hoge operationele stabiliteit waarborgen en technische defecten door wijzigingen en vernieuwingen voorkomen
Hoe worden deze doelen bereikt?
Deze doelen worden bereikt door de processen tussen de teams Development en Operations binnen de organisatie te automatiseren en te integreren. De belangrijkste aspecten hierbij zijn:
- Automatisering van technologie
- Teamoverstijgende communicatie en samenwerking
- Teamempowerment
De DevOps-levenscyclus
Het doorlopende DevOps-proces kun je je voorstellen als een oneindige lus, die meestal uit de volgende 6 fasen bestaat:
- Plannen
- Bouwen / Build
- Continuous Integration en Continuous Delivery
- Monitoren en waarschuwen / Monitor
- Operate
- Doorlopende feedback
Deze 6 fasen vertegenwoordigen verschillende vaardigheden, processen en tools uit de gebieden ontwikkeling en operations. Belangrijk is dat beide teams als of zoals één gezamenlijk team in elke fase samenwerken en met elkaar communiceren.
Welke methoden & tools horen bij DevOps?
Methoden
DevOps omvat verschillende onafhankelijke technieken:
- Agile softwareontwikkeling
- Continuous Integration (ook: CI of Kontinuierliche Integration) en Continuous Delivery (ook: CD)
- Continue service monitoring
- Microservices
- Geautomatiseerde softwaretests
- Software Configuration Management, versiebeheer en "Infrastructure as Code"
- Domeinoverstijgende Key Performance Indicators (KPI's)
Tools
De genoemde methoden worden bijvoorbeeld door de volgende DevOps-tools mogelijk gemaakt of ondersteund:
- GitHub en GitLab (voor Continuous Integration en Continuous Delivery, geautomatiseerde softwaretests en versiebeheer)
- Jenkins (Continuous Integration)
- Puppet (voor Infrastructure as Code)
- Ansible (voor Configuration Management)
- Vagrant (als virtualisatieplatform)
- Azure DevOps (bijv. voor Continuous Integration, Testing, Release Management en Systems Management)
- Microsoft Azure (voor monitoring en hosting)
- Team Foundation Server
- Docker (voor containervirtualisatie)
- Kubernetes (containerorchestratie)
Welke samenwerkingscultuur streeft DevOps na?
DevOps moet de samenwerking tussen ontwikkeling en operations als teamoverstijgend team verbeteren en hun onderlinge scheiding opheffen. Hechte samenwerking ontstaat door de volgende aspecten:
- De teams IT Operations en Software Development werken nauw samen en worden vaak voor de gehele duur van de productlevenscyclus samengevoegd tot één team.
- Het gehele team focust zich op klantbehoeften en -waarde gedurende de software lifecycle.
- Binnen het team worden processen en plannen consequent voor iedereen zichtbaar gemaakt.
- Prioriteiten, verantwoordelijkheden en wijzigingen worden onderling afgestemd.
- Het risicomanagement wordt vereenvoudigd door kortere release-cycli en planningen.
- Alle teamleden onderhouden een regelmatige en open communicatie.
Uitdagingen bij de invoering van DevOps
Zoals altijd wanneer vernieuwingen worden ingevoerd, zijn er teamleden die moeite hebben met de implementatie of concrete weerstand ertegen opbouwen. Daarom is het belangrijk dat alle teamleden de principes, waarden en voordelen van DevOps echt begrijpen en dat een organisatie voldoende tijd neemt voor het informeren en invoeren.
Belangrijk om te onthouden:
- Hoe eerder het begrip voor de teamvereniging van ontwikkeling en operations groeit en silo's dienovereenkomstig worden afgebroken, des te makkelijker verloopt de integratie van DevOps.
- Het is niet voldoende om simpelweg de genoemde tools toe te passen om de voordelen van DevOps te benutten. Doorslaggevend hierbij is de combinatie van cultuur, methoden, processen en tools.
Conclusie over DevOps
DevOps heeft op de meeste organisaties een overwegend positieve invloed. De aanpak zorgt namelijk voor hogere teamefficiëntie en veiligheid, snellere softwarereleases en een hogere productkwaliteit voor tevredenere klanten.
De voordelen van de DevOps-principes zijn zo groot dat de achterliggende aanpak inclusief de bijbehorende waarden inmiddels ook in andere teams wordt toegepast. Zo verwijst DevSecOps bijvoorbeeld naar de integratie van beveiliging in het ontwikkelproces.