Wat is DevOps en wat ben je ermee?

Is het een functie? Een persoon? Een manier van werken? DevOps is een term die voor de nodige verwarring zorgt. Eén ding is zeker: DevOps is hip. Wat is het nu precies, en waarom moet jij ervan wakker liggen?

DevOps is één van die buzzwoorden waar je vandaag niet omheen kan. Wie DevOps niet omarmt, lijkt iets te missen. Zoals vaak bij populaire B2B-termen schuilen er tal van definities achter de hype, waardoor het soms moeilijk is om door de bomen het bos nog te zien. We zetten één en ander op een rijtje.

De definitie

DevOps is een manier van werken. De term wordt vaak toegeschreven aan een functie of persoon ‘DevOps-manager’ of kortweg DevOps in de volksmond, en dat kan voor verwarring zorgen. Strikt genomen is DevOps immers de naam voor een visie die een plan van aanpak omschrijft. Het is een samenvoeging van Development enerzijds, en Operations anderzijds. DevOps kan je zien als een verderzetting van dat andere populaire woord: ‘Agile’. Wil je weten waarom die samenvoeging zo belangrijk is en wat Agile hiermee te maken heeft, dan moeten we eerst eens kijken naar de traditionele problemen die gepaard gaan met de ontwikkeling van een toepassing.

Het probleem

Er zijn drie belangrijke partijen betrokken bij de ontwikkeling van een nieuwe toepassing. Eerst is er de opdrachtgever of de klant. Dat is de partij die beslist dat er een nieuwe app moet worden gebouwd. De opdrachtgever heeft een doel voor ogen en wil een toepassing met verschillende functies die dat doel helpen verwezenlijken. Denk als heel eenvoudig voorbeeld aan een nieuwe applicatie waarbij medewerkers van een bedrijf thuiswerk kunnen aanvragen.

 

DevOps is een manier van werken. Het is een verderzetting van dat andere populaire woord: ‘Agile’.

 

De tweede betrokken partij zijn de ontwikkelaars. Zij worden gebriefd door de opdrachtgever en gaan vervolgens aan de slag. Ze bouwen een app die zo goed mogelijk tegemoetkomt aan de eis van de opdrachtgever en testen die zelf voor ze uiteindelijk opleveren.

Bij de oplevering is het eerst en vooral te hopen dat de opdrachtgever blij is met het resultaat. De ontwikkeling van de applicatie is een proces dat al snel enkele maanden in beslag neemt en in die periode kunnen de eisen en doelstellingen van de opdrachtgever veranderen. Misschien wil hij wel dat de applicatie naast thuiswerk ook dient om verlof aan te vragen, of ziekte aan te geven. Is dat het geval, dan kunnen de ontwikkelaars terug achter hun pc kruipen. In een traditionele manier van werken zijn er beperkte contactmomenten tussen opdrachtgever en ontwikkelaar, met inefficiëntie tot gevolg.

Is alles eindelijk naar wens, dan wordt de applicatie overgedragen aan het operationele IT-team van de onderneming. Die mag de app nu uitrollen. De kans dat alles meteen vlot werkt, is bijzonder klein. De ontwikkelaars hebben immers niet of nauwelijks met operations gesproken. Je kan er vanop aan dat de uitrol van de app hinder ondervindt door de specifieke configuratie van de IT-infrastructuur. Misschien zijn er securityproblemen, of is het netwerk zodanig geconfigureerd dat de applicatie niet synchroniseert zoals verwacht. Is dat het geval, dan mogen de ontwikkelaars zich opnieuw over de code buigen. Na enkele weken zwoegen, leveren ze dan een nieuwe versie op, die hopelijk wel werkt. Ook hier is er sprake van silo’s: de ontwikkelaars en het operationele team komen pas met elkaar in aanraking wanneer de app in kwestie eigenlijk al afgewerkt is.

Agile: een deel van de oplossing

Silo’s afbreken is vandaag bijna een synoniem van digitale transformatie. Niet verwonderlijk dus dat ook het ontwikkelingsproces van een applicatie hieraan onderhevig is. De muur tussen de silo van de opdrachtgever en die van de ontwikkelaars werd al geruime tijd geleden gesloopt. Een nieuw proces werd uitgedacht, waarbij ontwikkelaars en opdrachtgevers op gezette tijdstippen tijdens het bouwen van de applicatie samenzitten. Iedere week of twee weken wordt de opdrachtgever gebriefd door de developers, zodat de uiteindelijke app in volledige samenspraak tot stand komt.

 

Silo’s afbreken is vandaag bijna een synoniem van digitale transformatie.

 

Die manier van werken gaat door het leven onder de noemer ‘Agile’. Er bestaat een Agile-manifest dat de basisprincipes van een Agile-aanpak uit de doeken doet. Er zijn verschillende manieren om Agile te werken, maar ‘Scrum’ is de gekendste. Daarbij werken ontwikkelaars via zogenaamde ‘sprints’ met korte iteraties van de software, waarbij een constant verbeterritme met inspraak van de opdrachtgever essentieel is.

Agile heeft echter één belangrijke beperking: hoewel opdrachtgever en ontwikkelaar helemaal in sync zijn, wordt er weinig of geen rekening gehouden met de operationele vereisten. Hier komt DevOps aan bod.

DevOps: het sluitstuk

Met DevOps wordt ook de muur tussen ontwikkelaars en het operationele IT-team gesloopt. Centraal bij een DevOps-aanpak is het systeem van ‘continuous delivery’. Applicaties worden opgesplitst in kleinere stukjes, die constant worden uitgerold. Zo ontstaat er een constructieve samenwerking tussen de ontwikkelaars en het operationele team. Hapklare stukjes van toepassingen kunnen meteen uitgerold en geïntegreerd worden in de IT-omgeving. Om dat zo efficiënt mogelijk te laten verlopen, werken ontwikkelaars en operations samen in één team.

 

DevOps

 

In essentie worden het operationele team en het ontwikkelaarsteam samengevoegd tot één groot team dat de ambitie heeft om op constante basis verbeteringen aan apps uit te rollen. Het concept van grote app-updates om de zoveel weken of maanden valt weg: updates worden via deze filosofie op dagelijkse basis (of zelfs per uur) uitgerold.

DevOps en de cloud

Op die manier komt DevOps tegemoet aan een heel nieuw probleem: de snelheid en flexibiliteit van de cloud. Geen enkele onderneming wil nog maanden wachten op een nieuwe feature of app: de cloud laat organisaties toe om constant nieuwe functies uit te rollen en te schalen naar de vraag. De traditionele manier van ontwikkelen kan dat tempo niet meer bijhouden. De combinatie van Agile en DevOps zorgt voor een goed geoliede machine waarbij iedereen op één lijn zit, en nieuwe functies op een constante basis getest en uitgerold worden.

Samengevat is het eigenlijk niet moeilijker dan dit: Agile wil zeggen dat opdrachtgevers en ontwikkelaars met elkaar praten tijdens de ontwikkeling van een app, DevOps betekent dat ook het operationele team betrokken wordt bij de bouw van een nieuwe applicatie.

In de praktijk

Wat betekent dit nu allemaal voor jouw onderneming, en wat moet je precies doen? Het is eerst en vooral belangrijk om goed te begrijpen dat zowel Agile als DevOps niets meer zijn dat termen waarachter een filosofie schuilt, die tegemoet wil komen aan uitdagingen ontstaan door werken in silo’s. De filosofie is een leidraad. De precieze invulling moet steeds op maat van een organisatie gebeuren. Er bestaat geen checklist die je kan afwerken waarna je kan roepen dat je volgens DevOps werkt.

 

Er bestaat geen checklist die je kan afwerken waarna je kan roepen dat je volgens DevOps werkt.

 

Er zijn natuurlijk wel een heleboel best practices die meestal terugkomen. Die nemen doorgaans de vorm aan van software waarmee gewerkt wordt. Zo is Chef een erg populaire toepassing die de uitrol van nieuwe versies van toepassingen in de operationele IT-infrastructuur voor een groot stuk automatiseert, onder andere door een deel van het testproces over te nemen. Jenkins is dan weer de populairste tool voor ontwikkelaars binnen een DevOps-omgeving.

Die zorgt ervoor dat code geschreven door verschillende ontwikkelaars steeds wordt samengevoegd tot een geheel dat in principe klaar is om uitgerold te worden. Jenkins werkt nauw samen met andere tools zoals Docker om het ‘continuous delivery’-luik van DevOps te faciliteren. Welke tools je allemaal gebruikt en op welke manier, is iets dat je zelf moet uitdokteren rekening houdend met de specifieke uitdagingen van jouw onderneming.

Keren we even terug naar het begin, dan komen we bij functies uit zoals de DevOps-manager. Dat zijn functies die niet essentieel zijn voor DevOps als concept, maar in het leven geroepen zijn om de aanpak binnen een onderneming naar de praktijk te brengen. Wie aan het hoofd staat van een DevOps-team heeft zo best kennis van zowel ontwikkelen als het operationele luik. Het is zijn of haar job om beide disciplines, die zo lang afzonderlijk bestonden, te integreren in één efficiënte machine.

Wat met beveiliging?

Eén silo kwam nog niet aan bod: security. Beveiliging is nog te vaak een prioriteit enkel in naam. In de praktijk worden apps met DevOps continu gebouwd en uitgerold zodat opdrachtgevers, ontwikkelaars en operations blij zijn, terwijl security de boel maar recht moet houden. Het spreekt voor zich dat het ook een goed idee is om beveiliging van het begin af aan mee een onderdeel van de discussie te maken.

Security by design, als onderdeel van de Agile-DevOps-ontwikkelingscyclus, is de beste manier om ervoor te zorgen dat de apps en hun nieuwe versies, die constant worden uitgerold, ook echt veilig zijn. Dat bewustzijn begint stilaan te groeien. Geen nieuw plan van aanpak zonder een nieuwe hippe naam natuurlijk: in de nabije toekomst is DevOps alweer voorbijgestreefd, en spreken we van DevSecOps. Drie keer raden waar die afkorting voor staat.

Gerelateerd: Puppet vindt application delivery de nieuwe heilige graal binnen DevOps