Wat is DevOps?

Ontdek hoe DevOps mensen, processen en technologie samenbrengt om producten sneller aan klanten te leveren

Definitie van DevOps

DevOps, een combinatie van ontwikkeling (Dev) en bedrijfsactiviteiten (Ops), is de samenstelling van mensen, processen en technologie om doorlopend waarde aan klanten te bieden.

Wat betekent DevOps voor teams? Dankzij DevOps kunnen rollen die voorheen in silo's waren geplaatst, zoals ontwikkeling, IT-activiteiten, kwaliteitsengineering en beveiliging, samen worden gecoördineerd en gebruikt om betere, betrouwbaardere producten te maken. Door over te stappen op een DevOps-cultuur, in combinatie met DevOps-werkwijzen en hulpprogramma's, krijgen teams de mogelijkheid om beter in te springen op de behoefte van klanten, vertrouwen in de toepassingen die ze bouwen te vergroten en sneller bedrijfsdoelen te bereiken.

De voordelen van DevOps

Teams die overstappen op de cultuur, werkwijzen en hulpprogramma's van DevOps leveren hogere prestaties en bouwen sneller betere producten voor een hogere klanttevredenheid. Deze verbeterde samenwerking en productiviteit zijn ook onmisbaar om bedrijfsdoelen te halen zoals:

Marktintroductietijd verkorten

Aanpassen aan de markt en de concurrentie

De systeemstabiliteit en betrouwbaarheid handhaven

De gemiddelde hersteltijd verbeteren

DevOps en de toepassingslevenscyclus

DevOps heeft invloed op de toepassingslevenscyclus in de plannings-, ontwikkelings-, leverings- en operationele fasen. Elke fase is afhankelijk van de andere fasen en de fasen zijn niet rolspecifiek. In een echte DevOps-cultuur is elke rol in een bepaalde mate betrokken bij elke fase.

Plan

In de planningsfase ontwikkelen DevOps-teams ideeën en definiëren en beschrijven ze de functies en mogelijkheden van de toepassingen en systemen die ze bouwen. Ze houden de voortgang op lage en hoge granulariteitsniveaus bij, van taken voor één product tot taken die worden uitgevoerd op hele portfolio's van meerdere producten. Onder andere door backlogs te maken, fouten op te sporen, flexibele softwareontwikkeling met Scrum te beheren, kanbanborden te gebruiken en de voortgang met dashboards te visualiseren, kunnen door DevOps-teams flexibiliteit en zichtbaarheid worden gepland.

Ontwikkelen

De ontwikkelingsfase bevat alle aspecten van het coderen, zoals schrijven, testen, beoordelen en de integratie van code door teamleden, alsmede het bouwen van die code in buildartefacten die in verschillende omgevingen kunnen worden geïmplementeerd. DevOps-teams willen graag snel innoveren zonder afbreuk te doen aan de kwaliteit, stabiliteit en productiviteit. Hiervoor gebruiken ze uiterst productieve hulpprogramma's, automatiseren ze dagelijkse en handmatige stappen en voeren ze herhalingen in kleine stapjes uit door middel van geautomatiseerde testen en continue integratie.

Aanbieden

Levering is het proces waarbij toepassingen op een consistente en betrouwbare manier in productieomgevingen worden geïmplementeerd. Ook wordt in de leveringsfase de volledig beheerde fundamentele infrastructuur waaruit die omgevingen bestaan, geïmplementeerd en geconfigureerd.

In de leveringsfase definiëren teams een releasebeheerproces met duidelijke, handmatige goedkeuringsfasen. Ook stellen ze geautomatiseerde poorten in om toepassingen tussen de fasen door te verplaatsen totdat ze beschikbaar worden gemaakt voor klanten. Door deze processen te automatiseren, worden ze schaalbaar, herhaalbaar en gecontroleerd. Op deze manier kunnen teams die zich met DevOps bezighouden met gemak, vol vertrouwen en met gemoedsrust leveren.

Uitvoeren

De operationele fase bestaat uit het onderhoud en de bewaking van toepassingen in productieomgevingen en het oplossen van eventuele problemen. Door over te stappen op DevOps-werkwijzen zorgen teams voor systeembetrouwbaarheid en hoge beschikbaarheid en streven ze naar nul uitvaltijd, terwijl ze tegelijkertijd de beveiliging en het beheer versterken. DevOps-teams proberen problemen te identificeren voordat de klant hier iets van merkt en lossen problemen snel op wanneer ze zich voordoen. Om continu zo alert te blijven, hebben teams uitgebreide telemetrie, handige meldingen en volledige zichtbaarheid in toepassingen en het onderliggende systeem nodig.

DevOps-cultuur

Door DevOps-werkwijzen te gaan gebruiken, worden processen weliswaar door middel van technologie geautomatiseerd en geoptimaliseerd, maar het begint allemaal met de cultuur binnen de organisatie en de mensen die daar een rol in spelen. De uitdaging die het ontwikkelen van een DevOps-cultuur met zich meebrengt, vergt verregaande wijzigingen in de manier waarop mensen werken en samenwerken. Maar zodra organisaties zich inzetten voor een DevOps-cultuur, kunnen ze de perfecte omgeving creëren waarin prestatiegerichte teams zich kunnen ontwikkelen.

Samenwerking, zichtbaarheid en afstemming

Een kenmerk van een gezonde DevOps-cultuur is samenwerking tussen teams, en dat begint met zichtbaarheid. Verschillende teams, zoals ontwikkeling en IT-activiteiten, moeten hun DevOps-processen, prioriteiten en aandachtspunten met elkaar delen. Ook moeten deze teams gaan plannen dat ze gaan samenwerken en afstemming vinden over doelstellingen en succesfactoren met betrekking tot het bedrijf.

Veranderende strekking en aansprakelijkheid

Wanneer teams afspraken maken, worden ze eigenaar van en raken ze betrokken bij extra levenscyclusfasen, niet alleen bij de fasen die belangrijk zijn voor hun eigen rollen. Ontwikkelaars worden bijvoorbeeld niet alleen aansprakelijk voor de innovatie en kwaliteit die in de ontwikkelingsfase zijn ontstaan, maar ook voor de prestaties en stabiliteit die door hun wijzigingen in de operationele fase worden geleverd. Tegelijkertijd zorgen IT-operators ervoor dat beheer, beveiliging en naleving in de plannings- en ontwikkelingsfase worden ingevoegd.

Kortere releasecycli

DevOps-teams blijven flexibel door software in korte cycli uit te brengen. Dankzij de kortere cycli worden planning en risicobeheer eenvoudiger, aangezien het proces zich stapsgewijs voortzet. Dit is ook beter voor de impact op de systeemstabiliteit. Door de releasecyclus te verkorten, kunnen organisaties bovendien inspringen en reageren op de behoeften van klanten en druk vanuit de concurrentie.

Continu leren

Prestatiegerichte DevOps-teams stellen zich volledig in op groei. Ze leren snel van fouten en integreren dit in hun processen, waardoor ze zichzelf doorlopend verbeteren, de klanttevredenheid verhogen en innovatie en marktaanpasbaarheid versnellen. DevOps is een traject, dus er is altijd een mogelijkheid om door te groeien.

DevOps-werkwijzen

Teams brengen niet alleen een DevOps-cultuur tot stand, maar brengen DevOps tot leven door bepaalde werkwijzen in de hele toepassingslevenscyclus te implementeren. Met behulp van een aantal van deze werkwijzen kan een specifieke fase worden versneld, geautomatiseerd en verbeterd. Andere werkwijzen worden op verschillende fasen toegepast en worden door teams gebruikt om naadloze processen voor een betere productiviteit te maken.

Continue integratie en continue levering (CI/CD)

Continue integratie is een softwareontwikkelingswerkwijze waarbij ontwikkelaars codewijzigingen regelmatig samenvoegen in de hoofdtak van de code. Via continue integratie worden geautomatiseerde testen geïmplementeerd; deze worden telkens uitgevoerd wanneer nieuwe code is doorgevoerd, zodat de code in de hoofdtak altijd stabiel is.

Continue levering is de frequente, geautomatiseerde implementatie van nieuwe toepassingsversies in een productieomgeving. Door de stappen die voor implementatie vereist zijn te automatiseren, verminderen teams het aantal problemen die zich bij de implementatie kunnen voordoen en schakelen ze frequentere updates in.

Wanneer beide werkwijzen in gebruik zijn genomen, wordt het proces dat hierdoor ontstaat CI/CD genoemd. Dit proces is inclusief de volledige automatisering van all stappen tussen het doorvoeren van de code en de implementatie in productie. Door CI/CD te implementeren, kunnen teams zich richten op het bouwen van code en wordt een einde gemaakt aan overhead en moeilijke menselijke fouten in handmatige, alledaagse stappen. Door CI/CD wordt ook het implementatieproces voor nieuwe code sneller en minder riskant. Vervolgens worden implementaties vaker en in kleinere stappen uitgevoerd, zodat teams flexibeler en productiever worden en meer vertrouwen krijgen in hun uitgevoerde code.

Versiebeheer

Versiebeheer is de werkwijze waarbij code in versies wordt beheerd, waarbij revisies en het wijzigingsoverzicht worden bijgehouden zodat code eenvoudig kan worden beoordeeld en hersteld. Deze werkwijze wordt doorgaans geïmplementeerd met behulp van versiebeheersystemen zoals Git, waardoor meerdere ontwikkelaars kunnen samenwerken aan het schrijven van code. Deze systemen bieden een duidelijk proces om codewijzigingen die zich in dezelfde bestanden voordoen, samen te voegen, conflicten te verwerken en wijzigingen terug te draaien naar eerdere statussen.

Het gebruik van versiebeheer is een fundamentele DevOps-werkwijze, die ontwikkelingsteams helpt om samen te werken, coderingstaken tussen teamleden te verdelen en alle code op te slaan zodat ze die, indien nodig, gemakkelijk kunnen terughalen.

Versiebeheer is bovendien een noodzakelijk element in andere werkwijzen zoals continue integratie en infrastructuur als code.

Meer informatie over Git

Agile-softwareontwikkeling

Agile is een softwareontwikkelingsmethode waarin de nadruk op samenwerking van het team, feedback van klanten en gebruikers en hoge aanpasbaarheid aan veranderingen door middel van korte releasecycli ligt. Teams die Agile gebruiken, bieden hun klanten continue wijzigingen en verbeteringen, verzamelen hun feedback, trekken daar hun lessen uit en passen zich vervolgens aan op basis van wat klanten willen en nodig hebben. Agile is substantieel anders dan traditionelere frameworks zoals waterfall, een functie waarbij lange releasecycli met sequentiële fasen worden gebruikt.

Kanban en Scrum zijn twee populaire frameworks die aan Agile zijn gekoppeld.

Infrastructure als code

Met infrastructuur als code worden systeemresources en topologieën op een beschrijvende manier gedefinieerd, zodat teams die resources net zo kunnen beheren als code. Dergelijke definities kunnen ook worden opgeslagen en er kunnen versies van worden gemaakt in versiebeheersystemen waarin ze, net als code, kunnen worden gecontroleerd en teruggedraaid.

Door infrastructuur als code uit te voeren kunnen teams systeemresources op een betrouwbare, herhaalbare en gecontroleerde manier implementeren. Ook is infrastructuur als code handig om implementatie te automatiseren en het risico op menselijke fouten te verkleinen, met name voor complexe, grote omgevingen. Dankzij deze herhaalbare, betrouwbare oplossing voor omgevingsimplementatie kunnen teams ontwikkelings- en testomgevingen onderhouden die identiek zijn aan de productieomgeving. Het dupliceren van omgevingen naar verschillende datacenters en cloudplatformen wordt op dezelfde manier ook eenvoudiger en efficiënter.

Configuratiebeheer

Configuratiebeheer verwijst naar het beheren van de status van resources in een systeem inclusief servers, virtuele machines en databases. Door hulpprogramma's voor configuratiebeheer te gebruiken, kunnen teams wijzigingen op een gecontroleerde, systematische manier doorvoeren. Hierdoor wordt het risico op aanpassing van de systeemconfiguratie beperkt. Teams gebruiken hulpprogramma's voor configuratiebeheer om de systeemstatus bij te houden en configuratieafwijkingen te voorkomen die ontstaan wanneer de configuratie van een systeemresource na verloop van tijd afwijkt van de gewenste status die voor die resource is gedefinieerd.

Wanneer dit wordt gebruikt in combinatie met infrastructuur als code, kunnen van zowel de systeemdefinitie als de configuratie eenvoudig sjablonen worden gemaakt en kunnen ze beide worden geautomatiseerd, zodat teams complexe omgevingen op de juiste schaal kunnen gebruiken.

Doorlopende bewaking

Continue bewaking betekent dat het team volledige, real-time zichtbaarheid in de prestaties en status van de hele toepassingsstack heeft, van de onderliggende infrastructuur waarop de toepassing wordt uitgevoerd tot softwareonderdelen op een hoger niveau. Deze zichtbaarheid bestaat uit de verzameling van telemetrie en metagegevens en het instellen van meldingen voor vooraf gedefinieerde voorwaarden die de aandacht van een operator garanderen. Telemetrie bestaat uit gebeurtenisgegevens en logboeken die vanuit verschillende onderdelen van het systeem zijn verzameld en die worden opgeslagen op een locatie waar ze kunnen worden geanalyseerd en waar query's kunnen worden uitgevoerd.

Prestatiegerichte DevOps-teams zorgen ervoor dat ze handige, nuttige meldingen instellen en uitgebreide telemetrie verzamelen, zodat ze inzichten kunnen krijgen uit enorme hoeveelheden gegevens. Aan de hand van deze inzichten kan het team problemen in real-time oplossen en bekijken hoe ze de toepassing in latere ontwikkelingscycli kunnen verbeteren.

DevOps-hulpprogramma’s

Teams hebben vele DevOps-hulpprogramma's tot hun beschikking om een DevOps-cultuur in hun organisatie te faciliteren. De meeste teams vertrouwen op verschillende hulpprogramma's en bouwen aangepaste hulpprogrammaketens die goed aansluiten bij hun behoeften voor elke fase in de toepassingslevenscyclus. Hoewel overstappen op een specifiek hulpprogramma of een specifieke technologie weliswaar niet hetzelfde is als overstappen op DevOps, kunnen mensen DevOps-werkwijzen implementeren en stroomlijnen wanneer de DevOps-cultuur aanwezig is en de processen zijn gedefinieerd, op voorwaarde dat ze de juiste hulpprogramma's kiezen. Kies de juiste de hulpprogramma's om DevOps in de praktijk te brengen:

DevOps en de cloud

Overstappen op de cloud heeft de manier waarop teams toepassingen bouwen, implementeren en gebruiken volledig getransformeerd. Samen met de overstap op DevOps hebben teams nu een betere kans om hun werkwijzen en klantenservice te verbeteren.

Cloudflexibiliteit

Dankzij de mogelijkheid om snel cloudomgevingen in meerdere regio's in te richten en te configureren met onbeperkte resources, krijgen teams flexibiliteit voor het implementeren van hun apps. Nu hoeven ze geen fysieke servers meer te kopen, configureren en onderhouden, maar kunnen teams in slechts enkele minuten complexe cloudomgevingen maken en deze vervolgens afsluiten wanneer ze deze niet meer nodig hebben.

Kubernetes

Naarmate voor steeds meer toepassingen containertechnologie wordt gebruikt, wordt Kubernetes de industrie-oplossing voor het indelen van containers op schaal. Het automatiseren van de processen voor het bouwen en implementeren van containers via CI/CD-pijplijnen en bewaking van deze containers in productie worden essentiële werkwijzen in het tijdperk van Kubernetes.

Serverloze computing

Nu de meeste overhead van het beheer van de infrastructuur naar de cloudprovider is overgebracht, kunnen teams zich op hun apps richten in plaats van op de onderliggende infrastructuur. Serverloze computing biedt de mogelijkheid om toepassingen uit te voeren zonder servers te hoeven configureren en te onderhouden. Met een aantal opties worden de complexiteit en het risico van implementatie en bewerkingen verminderd.

Uw DevOps-traject starten

Er zijn zoveel verschillende werkwijzen en oplossingen beschikbaar, dat DevOps in eerste instantie behoorlijk overweldigend kan lijken. Het is belangrijk om klein te beginnen en van anderen te leren.

Veelgestelde vragen

  • DevOps wordt door verschillende rollen in een organisatie uitgevoerd en hierdoor zijn een aantal van hen aangewezen op nauwe samenwerking. In de meeste gevallen worden DevOps-rollen ingezet op het gebied van ontwikkeling, IT, bedrijfsactiviteiten, beveiliging en ondersteuning.
  • DevOps is niet beperkt tot één rol. De DevOps-cultuur moet worden omarmd door iedereen die deel uitmaakt van elk van de levenscyclusfasen van de toepassing. In een aantal organisaties is er echter een aantal mensen of teams die zich uitsluitend richten op het inschakelen van automatisering, het definiëren van werkwijzen en het implementeren van CI/CD-pijplijnen. Soms is de officiële titel van deze rollen DevOps-engineer of DevOps-specialist.
  • Het kan een enorme uitdaging zijn om DevOps in een grote organisatie te implementeren. Het veranderen van de cultuur van een grote organisatie en het standaardiseren van processen en hulpprogramma's vergt geduld en doorzettingsvermogen. In de meeste grote organisaties zijn er mensen die al in een vroeg stadium DevOps-werkwijzen toepassen, de 'early adopters'. Naarmate deze werkwijzen optimaal zijn en positieve resultaten behalen, volgen andere teams doorgaans ook en beginnen ze met hun DevOps-traject.
  • Waar het bij DevOps in feite om draait, is continu waarde leveren aan klanten. Wat de gevolgen van de overstap op DevOps zijn, moet worden gemeten met betrekking tot bedrijfsdoelstellingen. DevOps-teams streven allemaal deze doelstellingen na en behalen deze door korte releasecycli toe te passen. Dankzij deze cycli kan flexibel op de markt worden gereageerd en blijven we continu leren op basis van feedback van klanten.
  • Zowel DevOps als Agile zijn moderne softwareontwikkelingsframeworks voor het maken van een product, een lancering of een release. DevOps is een cultuur die samenwerking stimuleert tussen alle betrokken rollen bij de ontwikkeling en het onderhoud van software. Agile is een ontwikkelingsmethode die erop is gericht productiviteit te handhaven en releases te stimuleren met de algemene realiteit van veranderende behoeften. DevOps en Agile sluiten elkaar niet wederzijds uit en worden vaak gezamenlijk uitgevoerd.
  • In combinatie met continue integratie zijn continue levering en continue implementatie werkwijzen waarmee fasen van de softwarelevering kunnen worden geautomatiseerd.