DevOps

Wat is DevOps?

DevOps, een samentrekking van Development en Operations, is een moderne software-ontwikkelingsmethode waarin onderhoud en continuïteit hoog in het vaandel staan. Door een groot deel van het produceren en testen van software te automatiseren kunnen vaker en sneller updates geleverd worden, en kan de software beter onderhouden worden; de ideeën en technieken die centraal staan bij DevOps spelen in op deze mogelijkheden. Het eindresultaat is niet alleen betere software, maar ook betere support.

Continuïteit

Het belangrijkste doel van DevOps is om alle stappen in het productie- en onderhoudsproces doorlopend te maken: In plaats van eens per maand een update uit te brengen, wordt dit continu gedaan; in plaats van enkel te testen voor het uitbrengen van zo’n update, wordt ook dit aan de lopende band gedaan. Op deze manier wordt de kwaliteit van de software continu verhoogd, en zal deze beter werken. Als er toch bugs gevonden worden, dan worden deze automatisch naar het DevOps-team gestuurd.

In eerste instantie wordt misschien verwacht dat door alles altijd te blijven doen, er een veel hogere werklast ontstaat voor het DevOps team. Door echter slim gebruik te maken van moderne automatiseringstechnieken, scheelt het de developers uiteindelijk veel repetatief werk. Dit stelt een DevOps-team in staat om niet alleen software beter bij te houden, maar ook meer tijd te besteden om aan vragen van klanten te voldoen.

Communicatie

Een belangrijk paradigma voor de continuïteit van DevOps is dat communicatie uiterst belangrijk is. In plaats van eens in de zoveel tijd de klanten op de hoogte te houden van de stand van zaken, krijgt idereen die er belangstelling voor heeft direct de status te zien. Deze continue communicatie speelt in op de toenemende vraag naar transparantie binnen het bedrijfsleven.

Voor continue ontwikkeling van de producten is terugkoppeling nodig, het luisteren naar klanten is daarom niet alleen goed voor de klant, maar ook voor de ontwikkeling van een product. Het is belangrijk om niet alleen te monitoren hoe goed het systeem functioneert, maar ook te luisteren naar de gewenste richting die het product op kan gaan. Dergelijke communicatie is essentieel om de werkzaamheid (Operations) terug te koppelen naar de ontwikkeling ervan (Development).

De DevOps-cyclus.

Beschikbaarheid

Bij de continuïteit die DevOps biedt wordt natuurlijk ook continue beschikbaarheid verwacht, en om hieraan te voldoen worden er vele cloud-oplossingen gebruikt. Als een server waarop belangrijke services draaien kapot gaat, is het lastig snel een nieuwe server aan te sluiten; Als er onverwacht veel verkeer plaatsvind en je services overbelast raken, is het even lastig snel meer capaciteit toe te voegen. Cloud-computing biedt de oplossing tot deze problemen door naadloos van hardware te wisselen mocht er iets fout gaan. Dit wordt deels mogelijk gemaakt door gebruik te maken van de hardware van grote partijen als Microsoft, en deels door gebruik te maken van slimme technieken om zware ladingen te verdelen.

Door de last te verdelen over meerdere servers is de beschikbaarheid groter.

Infrastructuur

Met het inwisselen van lokale hardware voor cloud-oplossingen, kan de infrastructuur van een service veel abstracter beheerd en omschreven worden. Developers kiezen er vaak voor taken middels code te omschrijven en uit te voeren, en tegenwoordig is het mogelijk om de installatie van (web)servers, virtual machines, etc. op dezelfde wijze te doen. Deze opbouw van cloud-services wordt Infrastructure as Code (IAC) genoemd.

Cloud-oplossingen bieden hiermee tools en mogelijkheden om zowel de ontwikkeling (Devs) als de productie en levering (Ops) te ondersteunen, en door van beide mogelijkheden gebruik te maken kan DevOps van deze twee takken een geïntegreerd geheel maken. De software-ontwikkelaar wordt hiermee ook degene die zijn eigen software publiceert en draaiende houdt, en kan hiervoor dezelfde tools en methodieken toepassen die hij al gebruikt in het ontwikkelingsproces. De automatisering die gebruikt wordt om een meer up-to-date product te leveren is dezelfde automatisering die ervoor zorgt dat bij hardware-falen direct op een andere server wordt overgegaan om een hoge beschikbaarheid te leveren.