Als je de ontwikkelingscyclus wilt verkorten, de softwarekwaliteit wilt verhogen en continue levering wilt bieden, moet je DevOps overwegen. Patrick Debois, een ontevreden consultant die genoeg had van de inefficiënties die werden veroorzaakt door de scheiding tussen softwareontwikkeling en IT-activiteiten, bedacht de term in 2007.
Sindsdien hebben veel bedrijven DevOps-principes omarmd om zich effectiever aan hun zakelijke behoeften aan te passen. DevOps was vroeger beperkt tot IT-diensten, maar is inmiddels uitgebreid naar de hele onderneming. Daarbij beïnvloedt het processen en gegevensstromen en veroorzaakt het aanzienlijke organisatorische veranderingen.
Wat is DevOps?
DevOps is een methodologie die softwareontwikkeling (Dev) en IT-activiteiten (Ops) combineert. Het is een geheel van werkwijzen, DevOps-tools, processen en zelfs mensen dat tot doel heeft de samenwerking binnen teams te verbeteren en snellere, betrouwbaardere productreleases te realiseren. Een DevOps-omgeving is bedoeld om automatisering en documentatie aan te moedigen en communicatie en samenwerking te bevorderen.
In tegenstelling tot meer traditionele benaderingen (zelfs Agile en Scrum), waarbij afdelingen worden opgesplitst in “silo's,” benadrukt DevOps de integratie van alle teamleden die betrokken zijn bij het maken van het product: van softwareontwikkelaars tot testers en IT-professionals die zich bezighouden met IT-activiteiten (zoals systeembeheerders, DBA's en systeemingenieurs).
-
ManageEngine Applications Manager
Visit WebsiteThis rating combines scores from multiple user review sites to reflect overall customer sentiment about the product.4.3 -
Spacelift
Visit Website -
Site24x7
Visit WebsiteThis rating combines scores from multiple user review sites to reflect overall customer sentiment about the product.4.7
Hoe DevOps werkt
Ontwikkelings- en operationele teams werken binnen een DevOps-model nauwer samen. De ingenieurs van beide teams integreren hun werk en werken gedurende de volledige levenscyclus van de applicatie samen, van ontwikkeling en testen tot DevOps-implementatie en operationeel beheer. DevOps combineert de verschillende vaardigheden van beide kanten gedurende het volledige applicatieproces.
Kwaliteitsborgings- en beveiligingsteams kunnen binnen verschillende DevOps-modellen, zoals SecDevOps (dat zich richt op beveiliging) of QAOps (waarbij meer nadruk ligt op het testen van productkwaliteit), nauwer worden verbonden met ontwikkeling en operationeel beheer, evenals met de volledige levenscyclus van softwareontwikkeling.
Deze groepen gebruiken beste praktijken om voorheen arbeidsintensieve en trage processen te automatiseren. Ze maken gebruik van een technologiestack en infrastructuur om apps snel en betrouwbaar te laten werken en evolueren.
DevOps-praktijken en -concepten
DevOps draait om enkele belangrijke praktijken. Hieronder leggen we ze allemaal uit.
Continue integratie
Continue integratie (CI) verwijst naar het regelmatig samenvoegen van codewijzigingen in een centrale repository en het uitvoeren van geautomatiseerde builds en tests (waaronder unit-, integratie-, UI- en end-to-endtests).
Het belangrijkste doel van CI is om bugs sneller te ontdekken en op te lossen, de algehele kwaliteit van de software te verhogen en de tijd die nodig is om nieuwe software-updates te valideren en uit te brengen te verkorten.
Continue levering
Continue levering hangt nauw samen met continue integratie en is de volgende logische stap. Bij continue levering is vereist dat codewijzigingen automatisch worden gebouwd en getest en klaarstaan om in de productieomgeving te worden geleverd. Idealiter worden alle wijzigingen eerst naar een testomgeving gepusht voordat ze naar productie worden uitgerold.
Versiebeheer
Versiebeheer, ook wel bronbeheer genoemd, verwijst naar het beheren van code in versies, oftewel het bijhouden van revisies en codewijzigingen in de loop der tijd. Dit gebeurt vaak met behulp van versiebeheersystemen waarmee teamleden aan code kunnen samenwerken.
Deze methoden beschrijven een stapsgewijze aanpak voor het samenvoegen van codewijzigingen in dezelfde bestanden, het oplossen van conflicten en het terugzetten van wijzigingen naar eerdere statussen. Versiebeheer is een van de belangrijkste DevOps-processen die ontwikkelingsteams helpt samen te werken, codeertaken aan teamleden te delegeren en alle code te archiveren voor snel herstel.
Monitoring en logboekregistratie
Continue monitoring houdt in dat defecte builds of mislukte tests worden geïdentificeerd en dat ervoor wordt gezorgd dat ze geen vertragingen veroorzaken. Automatisering versnelt de ontwikkeling aanzienlijk, maar als een geautomatiseerd proces mislukt en niemand dat merkt, kun je de taak beter handmatig voltooien.
Daarmee samenhangend is het van cruciaal belang om productietoepassingen in de gaten te houden, zodat problemen of prestatieproblemen worden opgespoord voordat je klanten dat doen.
Microservices
De microservicearchitectuur is een stijl waarbij de applicatie wordt gestructureerd als een verzameling kleinere, losjes gekoppelde en onafhankelijk implementeerbare diensten. Hierdoor kunnen leveringsteams zich richten op specifieke diensten als onafhankelijke entiteiten, wat ontwikkeling, testen en implementatie veel eenvoudiger maakt.
Infrastructuur als code (IaC)
Dit is een proces voor het beheren van de IT-infrastructuur (netwerken, VM's, taakverdelers en verbindingsarchitectuur) waarbij dezelfde versiebeheerprincipes voor broncode worden gebruikt als door het DevOps-team.
Een IaC-model creëert elke keer dezelfde omgeving wanneer het wordt toegepast, vergelijkbaar met de manier waarop dezelfde broncode hetzelfde binaire bestand oplevert. IaC is een cruciale aanpak die hand in hand gaat met continue levering.
Naar links verschuiven
Dit is een term voor een ontwikkelproces waarin het team zich richt op het zo vroeg mogelijk beginnen met testen. Het uiteindelijke doel is een hogere kwaliteit, kortere testcycli en het voorkomen van mogelijke verrassingen aan het einde van de ontwikkelcyclus. Naar links verschuiven gaat uit van continu testen (zo vroeg en zo vaak mogelijk geautomatiseerde tests schrijven en uitvoeren) en continue implementatie (het automatiseren van de implementatie van nieuwe builds).
De DevOps-levenscyclus
De typische DevOps-werkstroom is iteratief en bestaat uit 8 hoofdfasen:
- Plannen: In deze fase identificeert het team de bedrijfsvereisten en maakt het een routekaart die de bedrijfswaarde van het product maximaliseert.
- Coderen: Dit is de fase waarin de daadwerkelijke ontwikkeling plaatsvindt.
- Bouwen: Zodra de ontwikkeltaken zijn voltooid, wordt de code vastgelegd in de gedeelde repository.
- Testen: De build wordt geïmplementeerd in de testomgeving, waar de tests worden uitgevoerd. Dit omvat doorgaans unit-tests, integratietests, UI-automatiseringstests en handmatige tests, zoals gebruiksacceptatietests.
- Uitbrengen: Zodra de testfase is voltooid, wordt de build door de DevOps-engineers voorbereid voor implementatie in de productieomgeving.
- Implementeren: In deze fase wordt de build geïnstalleerd, getest en in productie geïmplementeerd, waarna deze beschikbaar is voor eindgebruikers.
- Beheren: Het beheren van de levering van IT-diensten aan klanten van begin tot eind. Dit verwijst naar de procedures voor het ontwerpen, implementeren, configureren, uitrollen en onderhouden van de IT-infrastructuur die de diensten van een organisatie ondersteunt.
- Monitoren: DevOps-teams evalueren elke release en leveren rapporten om toekomstige software-releases te verbeteren. Door voortdurend feedback te verzamelen, kunnen teams hun processen optimaliseren en input van consumenten integreren in de volgende release.

Wat zijn de voordelen van DevOps?
De belangrijkste voordelen van een DevOps-aanpak zijn:
- Snellere softwarelevering: Met CI/CD-pijplijnen verloopt de implementatie sneller en vaker. Het bijwerken van bestaande diensten en het implementeren van nieuwe systemen, functies of bugfixes kost minder tijd. Dit kan een belangrijk concurrentievoordeel en een betere gebruikerservaring opleveren.
- Verbeterde samenwerking: Met DevOps-praktijken werken de ontwikkelaars en operationele teams nauw samen en delen ze de verantwoordelijkheid, waardoor de zichtbaarheid van het werk toeneemt. De teams zijn beter met elkaar verbonden en werken aan dezelfde doelen en doelstellingen.
- Grotere productiviteit: Doordat het werk niet langer gescheiden is en de communicatie is verbeterd, is er meer transparantie, waardoor de teams efficiënter werken.
- Geautomatiseerde repetitieve taken: Naast het grote voordeel dat deze taken niet handmatig hoeven te worden uitgevoerd, houdt dit meer tijd over voor het team om aan innovaties binnen het project te werken.
- Hogere kwaliteit en betrouwbaarheid: Praktijken voor continue integratie en levering zorgen ervoor dat wijzigingen functioneel en stabiel zijn, waardoor de kwaliteit van een softwareproduct verbetert. Met monitoring kunnen teams in realtime op de hoogte blijven van de prestaties.
- Betere beveiliging: De beveiliging in DevOps kan ook worden verbeterd door beveiligingstests te integreren in de pijplijn voor continue integratie, continue levering en continue implementatie.
- Vaker uitgebrachte releases: Klanten kunnen regelmatig updates en bugfixes ontvangen, wat leidt tot een hogere klanttevredenheid.
Hoe adopteer je een DevOps-cultuur?
De overstap naar DevOps omvat een verandering in cultuur en filosofie. In eerste instantie kan het adopteren van DevOps betekenen dat operationele en ontwikkelingsteams zich ertoe verbinden de problemen en technologische beperkingen te begrijpen die in elke fase van het softwareontwikkelingsproces bestaan.
Stel KPI's voor verbetering vast, zoals kortere cyclustijden of minder defecten in productie. Door werkactiviteiten op elkaar af te stemmen, kun je het kader voor continue processen creëren.
Onderzoek de huidige tools voor ontwikkeling en IT-activiteiten. Identificeer eventuele zwakke punten, zoals een fase die altijd handmatig wordt voltooid of een tool die geen API's heeft om met andere tools te communiceren. Overweeg om één DevOps-leveringspijplijn voor het hele bedrijf te implementeren. Teamleden kunnen van het ene project naar het andere overstappen zonder opnieuw te hoeven worden opgeleid.
Nu de DevOps-mindset is geïmplementeerd, bepaal je welke statistieken je gebruikt om succes te meten en identificeer je de tools die voortaan worden gebruikt (daarover later meer). Richt je op best practices, het delen van kennis en continue verbetering om steeds beter te worden. Identificeer belemmeringen die van invloed zijn op je KPI's en optimaliseer je tools en technologie.
Het DevOps-volwassenheidsmodel kent 5 fasen:
- Initieel: een traditioneel model waarin het ontwikkelingsteam en het operationele team van elkaar gescheiden zijn.
- Beheerd: de eerste verschuiving richting DevOps, waarbij de Ops-processen geautomatiseerd beginnen te worden. De samenwerking tussen Dev en Ops neemt toe, omdat de teams niet langer van elkaar gescheiden zijn. Dit is een proeffase.
- Gedefinieerd: automatiseringsprocessen voor alle werkwijzen (waaronder ontwikkeling en testen) worden gedefinieerd en geïmplementeerd. De wijzigingen worden op organisatieniveau toegepast.
- Gemeten: de teams delen kennis en passen werkwijzen aan dankzij de aanwezige processen en tools. Automatisering en communicatie tussen tools verbeteren en beleid wordt gebruikt om standaarden af te dwingen.
- Geoptimaliseerd: dankzij continue verbetering worden resultaten zichtbaar. DevOps kan uitgroeien tot meerdere toolsets of procedures. Klantgerichte apps (meestal B2C-apps) worden bijvoorbeeld vaker uitgebracht, terwijl FinTech-apps zich sterker houden aan de principes van DevSecOps.
DevOps-tools
De DevOps-methodologie richt zich op het automatiseren van softwareontwikkelingsactiviteiten, zoals bouwen, testen en implementeren, om een kortere marktintroductietijd, producten van hoge kwaliteit en minder fouten en terugdraaiacties bij softwarefuncties te realiseren. Met dit alles in gedachten helpt de juiste gereedschapsstack ervoor te zorgen dat je een succesvolle DevOps-cultuur kunt bereiken.
De tools en technologieën die ontwikkelaars en operationele medewerkers gedurende de volledige softwarelevenscyclus ondersteunen bij hun interactie, worden aangeduid als een DevOps-gereedschapsketen. Continue integratie, continue levering, automatisering en samenwerking behoren tot de belangrijkste behandelde DevOps-elementen.
Welke gangbare tools worden er dan in DevOps gebruikt?
Plannings-tools
Dit zijn voornamelijk dezelfde tools die worden gebruikt in agile ontwikkelmethodologieën. Een van de populairste tools voor deze fase is wellicht Jira. Als je er nog niet bekend mee bent: het is een projectmanagementtool van Atlassian, ontworpen voor Agile-teams om hun taken, problemen en bugs bij te houden. De tool kan worden geïntegreerd met meerdere andere tools die in andere fasen van het DevOps-proces worden gebruikt.
Goede communicatie is cruciaal in DevOps, zowel in de planningsfase als in de andere fasen. Daarom is het een goed idee om een berichtenapplicatie te gebruiken die ook met de rest van de tools kan worden geïntegreerd. Dergelijke applicaties zijn onder andere Slack, eveneens van Atlassian, en Microsoft Teams.
Versiebeheertools
Versiebeheertools helpen applicatieontwikkelingsteams om wijzigingen in broncode in de loop der tijd te beheren. Ze helpen softwareteams sneller en slimmer te werken naarmate ontwikkelomgevingen groeien.
Versiebeheeroplossingen helpen in het bijzonder om de ontwikkelingstijd te verkorten en het succes van implementaties te vergroten. Git is waarschijnlijk de meest gebruikte versiebeheertool, maar sommige teams kiezen mogelijk voor TFS, SVN of GitHub voor broncodebeheer.
Tools voor continue integratie
Tools voor continue integratie passen geautomatiseerde tests toe op ontwikkelbranches en stellen je in staat om naar de hoofdbranch te pushen wanneer bouwprocessen succesvol zijn. Ze bieden ook continue feedback via realtime chatmeldingen van je team met eenvoudige integraties. Bekende tools zijn onder andere Jenkins (een opensourcetool), Circle CI en AWS.
Tools voor configuratiebeheer
Gedurende de DevOps-levenscyclus verwijst configuratiebeheer naar het onderhouden en beheersen van de componenten van grote, complexe systemen in een bekende, consistente en vastgestelde toestand. Servers, netwerken, opslag en applicaties zijn allemaal voorbeelden van IT-systeemcomponenten.
De tools voor configuratiebeheer maken het implementatieproces gedurende het hele productieproces naadloos en consistent. Enkele bekende tools voor configuratiebeheer zijn Ansible, Puppet en Chef.
Tools voor continue operaties
Tools voor continue operaties worden gebruikt om het proces van het lanceren van de app en de updates ervan te automatiseren. Continue operaties elimineren downtime door gebruik te maken van oplossingen voor containerbeheer, zoals Kubernetes en Docker. Deze technologieën voor containerbeheer maken het ontwikkelen, testen en implementeren van een app in verschillende omgevingen veel eenvoudiger.
Is DevOps iets voor jou?
Hoewel geen enkele methodologie voor iedereen geschikt is, heb je nu misschien een duidelijker beeld van wat DevOps inhoudt en wat je nodig hebt om het te implementeren. Op basis hiervan en van meer informatie over de kosten van DevOps kun je bepalen of DevOps een proces is dat past bij de doelstellingen van je team.
Als je onderzoekt hoe je DevOps kunt implementeren of efficiënter kunt opschalen, kun je overwegen samen te werken met de juiste nearshorepartner voor softwareontwikkeling.
Op zoek naar meer best practices voor DevOps? Abonneer je op de nieuwsbrief van The CTO Club voor de nieuwste inzichten.
