Definitie: DevOps is een werkwijze die softwareontwikkeling (development) en IT-beheer (operations) samenbrengt, zodat software sneller, vaker en betrouwbaarder in gebruik kan worden genomen. Het combineert een cultuur van gedeelde verantwoordelijkheid met automatisering van bouwen, testen, uitrollen en bewaken.

In het kort

  • DevOps is geen tool en geen functietitel, maar een manier van samenwerken waarin één team verantwoordelijk is voor software van idee tot beheer.
  • Kernpraktijken zijn continuous integration en continuous delivery (CI/CD), infrastructure as code, monitoring en snelle feedback.
  • Volgens The CTO Club bedacht de Belgische consultant Patrick Debois de term in 2007.
  • Ook voor een kleine webapplicatie zijn DevOps-principes nuttig: automatisch testen, voorspelbaar uitrollen en weten wanneer er iets misgaat.

Wat is DevOps?

DevOps is een samentrekking van development en operations. Traditioneel waren dat twee aparte werelden. Ontwikkelaars bouwden nieuwe functies en wilden die zo snel mogelijk online. Beheerders zorgden dat systemen stabiel draaiden en zagen elke wijziging als risico. Software werd “over de muur gegooid”: het ene team leverde op, het andere moest het werkend houden.

DevOps doorbreekt die scheiding. Ontwikkeling en beheer werken samen, of zijn zelfs hetzelfde team, met gedeelde doelen. Wie de code schrijft, voelt zich ook verantwoordelijk voor hoe die in productie draait. Een uitspraak van Robert Krohn van Atlassian vat het samen: DevOps is niet de taak van één persoon, het is de taak van iedereen.

Tegelijk draait DevOps om automatisering. Handmatige stappen zijn traag en foutgevoelig. Door bouwen, testen en uitrollen te automatiseren, kan een team kleine wijzigingen vaak en veilig online zetten, in plaats van een paar keer per jaar een grote, spannende release.

Waar komt DevOps vandaan?

De term ontstond aan het eind van het eerste decennium van deze eeuw. Volgens The CTO Club bedacht Patrick Debois hem in 2007, als consultant die zich ergerde aan de inefficiëntie tussen ontwikkeling en beheer. De beweging groeide daarna snel, mede door de opkomst van agile werken, cloudplatforms en tools om infrastructuur te automatiseren.

DevOps bouwt voort op agile. Waar agile vooral de samenwerking tussen opdrachtgever en ontwikkelteam verbeterde, trekt DevOps die lijn door naar het moment dat software in gebruik is. Het idee: korte cycli hebben pas echt waarde als een wijziging ook snel en veilig bij de gebruiker komt.

Hoe werkt DevOps?

DevOps wordt vaak weergegeven als een oneindige lus, omdat software nooit echt af is. The CTO Club beschrijft acht fasen:

Fase Wat er gebeurt
Plannen Bepalen wat er gebouwd of verbeterd wordt
Coderen De wijziging schrijven, in versiebeheer
Bouwen De code automatisch samenstellen tot een werkende versie
Testen Automatische tests controleren of alles nog werkt
Uitbrengen De versie klaarzetten voor productie
Implementeren De versie online zetten, liefst geautomatiseerd
Beheren De applicatie draaiend houden, inclusief back-ups en updates
Monitoren Fouten, prestaties en gebruik in de gaten houden

De informatie uit het monitoren gaat terug naar het plannen. Zo leert het team van wat er in de praktijk gebeurt.

De belangrijkste DevOps-praktijken

Versiebeheer

Alle code staat in een systeem als Git, met een geschiedenis van elke wijziging. Dat is de basis voor samenwerken, terugdraaien en controleren wat er is veranderd.

Continuous integration (CI)

Ontwikkelaars voegen hun wijzigingen regelmatig samen in een gedeelde repository. Bij elke wijziging bouwt een systeem de software automatisch en draait het de tests. Gaat er iets mis, dan is dat direct zichtbaar, terwijl de wijziging nog klein en vers is.

Continuous delivery en deployment (CD)

Bij continuous delivery staat elke geteste wijziging klaar om live te gaan, met één klik. Bij continuous deployment gaat dat zelfs automatisch. Volgens Azure maakt dit meerdere releases per dag mogelijk. Belangrijker dan de snelheid is dat uitrollen een saai, voorspelbaar proces wordt.

Infrastructure as code

Servers, databases en netwerkinstellingen worden beschreven in bestanden in plaats van met de hand ingericht. Die bestanden staan in versiebeheer. Daardoor is een omgeving reproduceerbaar: een testomgeving is gelijk aan productie, en na een storing is alles opnieuw op te bouwen.

Monitoring en logging

Een team wil weten wanneer er iets misgaat, liefst voordat gebruikers het merken. Monitoring houdt beschikbaarheid, snelheid en foutmeldingen bij. Logging legt vast wat er gebeurde, zodat een fout te herleiden is.

Testen en beveiliging gebeuren zo vroeg mogelijk in het proces, in plaats van aan het eind. Een fout die tijdens het bouwen wordt gevonden, is veel goedkoper dan een fout bij een klant.

Een voorbeeld van een CI/CD-pijplijn

Zo ziet een eenvoudige pijplijn eruit voor een webapplicatie, van wijziging tot livegang:

  1. Een ontwikkelaar maakt een wijziging in een aparte tak in Git.
  2. Bij het indienen start automatisch een build: afhankelijkheden worden geïnstalleerd en de code wordt samengesteld.
  3. De automatische tests draaien. Faalt er een test, dan stopt de pijplijn en krijgt de ontwikkelaar een melding.
  4. Een collega of de ontwikkelaar zelf beoordeelt de wijziging en voegt die samen met de hoofdtak.
  5. De nieuwe versie wordt automatisch uitgerold naar de testomgeving.
  6. Na controle in de testomgeving gaat dezelfde versie met één actie naar productie.
  7. Database-aanpassingen worden in dezelfde stap automatisch doorgevoerd.
  8. Monitoring kijkt de eerste periode extra mee. Gaat het mis, dan wordt de vorige versie teruggezet.

Elke stap is vastgelegd en herhaalbaar. Daardoor is een update op vrijdagmiddag geen gok meer, al blijft het verstandig om grote wijzigingen niet vlak voor het weekend live te zetten.

Hoe meet je of DevOps werkt?

Het DORA-onderzoek, waar Atlassian naar verwijst, gebruikt vier maatstaven die ook voor kleinere teams bruikbaar zijn:

Maatstaf Vraag
Uitrolfrequentie Hoe vaak gaat een nieuwe versie live?
Doorlooptijd van wijzigingen Hoe lang duurt het van een afgeronde wijziging tot productie?
Faalpercentage van wijzigingen Welk deel van de uitrollen veroorzaakt een probleem?
Hersteltijd Hoe snel is een storing of fout verholpen?

De eerste twee meten snelheid, de laatste twee stabiliteit. Het interessante aan het onderzoek is dat goede teams op beide tegelijk scoren: vaker uitrollen gaat samen met minder problemen, omdat elke wijziging kleiner is.

Hoe begin je met DevOps?

  1. Breng het huidige proces in kaart. Hoe komt een wijziging nu live, en waar zitten handmatige stappen of wachttijden?
  2. Zet alle code in versiebeheer, inclusief configuratie, zonder wachtwoorden.
  3. Schrijf tests voor de kern. Begin met de processen die het meest kapot mogen gaan.
  4. Automatiseer de uitrol naar een testomgeving en daarna naar productie.
  5. Richt monitoring in met meldingen die bij de juiste persoon terechtkomen.
  6. Evalueer na incidenten, zonder schuldvraag, en verbeter het proces.

Elke stap levert op zichzelf al iets op. Je hoeft niet te wachten tot alles klaar is.

Wat zijn de voordelen van DevOps?

  • Sneller nieuwe functies. Kleine wijzigingen gaan vaker live.
  • Minder fouten bij uitrol. Automatische stappen doen elke keer hetzelfde.
  • Sneller herstel. Een fout is te herleiden en een vorige versie is snel terug te zetten.
  • Betere samenwerking. Ontwikkeling en beheer werken aan hetzelfde doel.
  • Meer zicht. Monitoring laat zien hoe de software in de praktijk presteert.

Atlassian verwijst naar het DORA State of DevOps-rapport uit 2019, waarin de best presterende teams 208 keer vaker uitrollen en 106 keer sneller van wijziging naar productie gaan dan de minst presterende teams.

DevOps, agile en DevSecOps: wat is het verschil?

Begrip Waar het om draait
Agile Werken in korte cycli met veel feedback van gebruikers en opdrachtgever
DevOps Ontwikkeling en beheer samenbrengen, met automatisering van bouwen tot bewaken
CI/CD De technische praktijk van automatisch bouwen, testen en uitrollen
DevSecOps DevOps waarin beveiliging vanaf het begin in elke stap is opgenomen
Platform engineering Een intern team dat gereedschap en omgevingen levert waarmee ontwikkelteams zelfstandig kunnen werken

Agile en DevOps vullen elkaar aan. Agile bepaalt hoe je samen beslist wat je bouwt, DevOps hoe het snel en veilig in gebruik komt.

Welke tools horen bij DevOps?

DevOps is geen tool, maar er is wel veel gereedschap voor. Een greep uit wat The CTO Club en OVHcloud noemen:

Categorie Voorbeelden
Planning Jira
Versiebeheer Git, met platforms als GitHub en GitLab
CI/CD Jenkins, GitHub Actions, GitLab CI
Configuratie en infrastructuur Ansible, Puppet, Chef
Containers Docker, Kubernetes
Cloud AWS, Azure, Google Cloud

Voor een kleinere applicatie is een eenvoudige set vaak genoeg: Git, een CI/CD-pijplijn die tests draait en uitrolt, een beheerde hosting en een monitoringdienst die waarschuwt bij fouten.

Wat betekent DevOps voor een kleinere applicatie?

DevOps klinkt als iets voor grote techbedrijven met tientallen teams. Toch zijn de principes ook voor een interne tool of klantportaal waardevol. Waar het om gaat:

  1. Code in versiebeheer, met toegang voor de opdrachtgever.
  2. Automatische tests voor de belangrijkste processen, zoals inloggen, rechten en berekeningen.
  3. Een vaste, geautomatiseerde manier van uitrollen, zodat een update geen handwerk op de server is.
  4. Een aparte testomgeving waar wijzigingen eerst worden gecontroleerd.
  5. Back-ups die automatisch worden gemaakt en waarvan het terugzetten is getest.
  6. Monitoring en foutmeldingen, zodat problemen opvallen voordat gebruikers bellen.
  7. Afspraken over updates van het framework en gebruikte pakketten.

Dat is geen groot project. Het is een paar keer goed inrichten, waarna elke volgende wijziging sneller en veiliger gaat.

DevOps uitbesteden: waar let je op?

Veel bedrijven hebben geen eigen ontwikkel- of beheerteam. Dan liggen bouwen en beheer bij een externe partij, of bij twee verschillende partijen. Juist dan is het belangrijk om DevOps-afspraken expliciet te maken:

  • Wie zet updates live, en volgens welk proces?
  • Waar staat de code, en heb jij er als eigenaar toegang toe?
  • Hoe worden back-ups gemaakt en wanneer is het terugzetten voor het laatst getest?
  • Wie krijgt een melding als de applicatie niet bereikbaar is, en wat gebeurt er dan?
  • Hoe worden beveiligingsupdates van het framework en de pakketten bijgehouden?
  • Is de inrichting van de servers vastgelegd, zodat een andere partij het kan overnemen?

Als bouw en hosting bij verschillende partijen liggen, ontstaat snel weer de oude muur tussen ontwikkeling en beheer. Duidelijke afspraken, bijvoorbeeld in een SLA, voorkomen dat een storing tussen twee partijen in valt.

Veelgemaakte fouten bij DevOps

  • DevOps zien als functie. Een “DevOps-engineer” aannemen zonder de samenwerking te veranderen, verplaatst de muur alleen.
  • Alleen tools invoeren. Een CI/CD-pijplijn zonder goede tests rolt fouten alleen sneller uit.
  • Alles tegelijk willen. Begin met versiebeheer, tests en geautomatiseerde uitrol; de rest volgt.
  • Geen terugvalscenario. Elke uitrol moet terug te draaien zijn.
  • Monitoring zonder eigenaar. Waarschuwingen waar niemand op reageert, hebben geen waarde.
  • Beveiliging vergeten. Wachtwoorden en sleutels horen niet in de code, maar in een beveiligde opslag.

Wat betekent dit voor jouw project?

In mijn traject komt na de eerste versie de fase beheer en verbetering. Daar worden DevOps-principes concreet: een wijziging moet veilig online kunnen, een fout moet opvallen en terug te herleiden zijn, en je moet weten waar je code staat.

Bij Contentstudio, mijn interne contentworkflow met bronnen, generatie, beeldverwerking, archief en publicatieplanning, is een bouwles dat voorbereid, ingepland en gepubliceerd verschillende statussen zijn. Dat onderscheid tussen klaarzetten en echt uitvoeren zie je in DevOps terug bij het verschil tussen een versie die klaarstaat en een versie die live is.

Bij een nieuw idee wil ik vooraf duidelijk hebben wat we met een eerste versie bedoelen. Daar hoort ook bij hoe updates en beheer worden geregeld, zodat de applicatie na de livegang betrouwbaar blijft.

Vraag? Stuur me welke applicatie je wilt laten bouwen of verbeteren en hoe updates nu verlopen. Dan bepalen we samen de logische eerste stap. Lees ook wat er komt kijken bij een webapplicatie bouwen.

Veelgestelde vragen over DevOps

Wat is DevOps?

DevOps is een werkwijze die softwareontwikkeling en IT-beheer samenbrengt. Met gedeelde verantwoordelijkheid en automatisering van bouwen, testen, uitrollen en monitoren komt software sneller, vaker en betrouwbaarder in gebruik.

Wat betekent DevOps?

DevOps is een samentrekking van development (ontwikkeling) en operations (beheer). De term staat voor het opheffen van de scheiding tussen het team dat software bouwt en het team dat software draaiend houdt.

Wat is het verschil tussen agile en DevOps?

Agile richt zich op werken in korte cycli met veel feedback, vooral tussen opdrachtgever en ontwikkelteam. DevOps trekt dat door naar beheer en uitrol, met automatisering zodat wijzigingen snel en veilig in productie komen. De twee vullen elkaar aan.

Verwante termen

Doorontwikkeling en onderhoud · Technische schuld · SLA · Broncode · Datasoevereiniteit en EU-hosting · Webapplicatie · Framework

← Terug naar de kennisbank