Menu

Wat is DevOps?

grijs vergrootglas op zijn zijkant
Onderwerpen

DevOps is een evoluerende filosofie en framework dat snellere, betere applicatieontwikkeling en snellere release van nieuwe of herziene softwarefuncties of -producten aan klanten stimuleert.

De praktijk van DevOps stimuleert soepelere, continue communicatie, samenwerking, integratie, zichtbaarheid en transparantie tussen applicatieontwikkelingsteams (Dev) en hun collega's van het IT-operationsteam (Ops).

Deze nauwere relatie tussen Dev en Ops doordringt elke fase van de DevOps-levenscyclus: van de initiële softwareplanning tot de code-, build-, test- en releasefasen en tot de implementatie, activiteiten en continue monitoring. Deze relatie zorgt voor een continue terugkoppeling naar klanten voor verdere verbetering, ontwikkeling, testen en implementatie. Een van de gevolgen van deze inspanningen kan zijn dat de benodigde functiewijzigingen of -toevoegingen sneller en continu worden uitgebracht.

Sommige mensen groeperen DevOps-doelen in vier categorieën: cultuur, automatisering, meting en delen (CAMS) en DevOps-tools kunnen hierbij helpen. Deze tools kunnen de ontwikkelings- en operationsworkflows beter stroomlijnen en geschikt maken voor samenwerking, waardoor voorheen tijdrovende, handmatige of statische taken die betrokken waren bij integratie, ontwikkeling, testen, implementatie of bewaking, worden geautomatiseerd.

Waarom DevOps belangrijk is

Naast de inspanningen om barrières voor communicatie en samenwerking tussen ontwikkelings- en IT-operationsteams weg te nemen, is een kernwaarde van DevOps de klanttevredenheid en de snellere levering van waarde. DevOps is ook ontworpen om bedrijfsinnovatie te stimuleren en om processen continu te verbeteren.

De praktijk van DevOps stimuleert een snellere, betere en veiligere levering van meerwaarde aan de eindklanten van een organisatie. Deze waarde kan de vorm aannemen van frequentere productreleases, -functies of -updates. Het kan gaan om de snelheid waarmee een productrelease of nieuwe functie bij de klant terechtkomt, en dat allemaal met de juiste kwaliteits- en beveiligingsniveaus. Of de focus ligt misschien op hoe snel een probleem of bug wordt geïdentificeerd en vervolgens wordt opgelost en opnieuw wordt uitgebracht.

De onderliggende infrastructuur ondersteunt DevOps ook met naadloze performance, beschikbaarheid en betrouwbaarheid van software wanneer deze voor het eerst wordt ontwikkeld en getest en vervolgens in productie wordt genomen.

DevOps-methoden

Er zijn een paar veelgebruikte DevOps-methoden die organisaties kunnen gebruiken om de ontwikkeling en productreleases te versnellen en te verbeteren. Ze nemen de vorm aan van softwareontwikkelingsmethoden en -praktijken. De meest populaire zijn bijvoorbeeld Scrum, Kanban en Agile:

  • Scrum. Scrum definieert hoe leden van een team moeten samenwerken om ontwikkeling en QA-projecten te versnellen. Scrum-praktijken omvatten belangrijke workflows en specifieke terminologie (sprints, tijdvakken, dagelijkse scrum[vergadering]) en aangewezen rollen (Scrum Master, producteigenaar).
  • Kanban. Kanban is ontstaan uit efficiënties die zijn behaald op de fabrieksvloer van Toyota. Kanban schrijft voor dat de status van het softwareprojectwerk in uitvoering (WIP) wordt gevolgd op een Kanban-bord.
  • Agile. Eerdere Agile-methoden voor softwareontwikkeling blijven de werkwijzen en tools van DevOps sterk beïnvloeden. Veel DevOps-methoden, waaronder Scrum en Kanban, bevatten elementen van flexibele programmering. Sommige flexibele praktijken worden geassocieerd met een grotere reactiesnelheid op veranderende behoeften en vereisten, het documenteren van vereisten als gebruikersverhalen, het uitvoeren van dagelijkse standups en het opnemen van continue feedback van klanten. Agile schrijft ook korterelevenscycli van softwareontwikkelingvoor in plaats van lange, traditionele watervalontwikkelingsmethoden.

DevOps-toolketen

Volgers van DevOps-praktijken gebruiken vaak bepaalde DevOps-vriendelijke tools als onderdeel van hun DevOps-toolketen. Het doel van deze tools is het verder stroomlijnen, verkorten en automatiseren van de verschillende fasen van de softwareleveringsworkflow (of pipeline). Veel van dergelijke tools bevorderen ook de kernprincipes van DevOps op het gebied van automatisering, samenwerking en integratie tussen ontwikkelings- en operationsteams. Hieronder ziet u een voorbeeld van tools die in verschillende DevOps-levenscyclusfasen worden gebruikt.

  • Plannen. Deze fase helpt bij het definiëren van de bedrijfswaarde en -vereisten. Voorbeelden van tools zijn Jira of Git om bekende problemen bij te houden en projectmanagement uit te voeren.
  • Code. Deze fase omvat het ontwerpen van software en het maken van softwarecode. Voorbeelden van tools zijn GitHub, GitLab, Bitbucket of Stash.
  • Build. In deze fase beheert u softwarebuilds en -versies, en gebruikt u geautomatiseerde tools om te helpen bij het compileren en verpakken van code voor toekomstige release naar productie. U gebruiktbroncoderepository'sof pakketrepository's die ook de infrastructuur 'verpakken' die nodig is voor productrelease. Voorbeelden van tools zijn Docker, Ansible, Puppet, Chef, Gradle, Maven of JFrog Artifactory.
  • Testen. Deze fase omvat continue tests (handmatig of geautomatiseerd) om voor een optimale codekwaliteit te zorgen. Voorbeelden van tools zijn JUnit, Codeception, Selenium, Vagrant, TestNG of BlazeMeter.
  • Implementeren. Deze fase kan tools omvatten die u helpen bij het beheren, coördineren, plannen en automatiseren van productreleases naar productie. Voorbeelden van tools zijn Puppet, Chef, Ansible, Jenkins, Kubernetes, OpenShift, OpenStack, Docker of Jira.
  • Beheren. Deze fase beheert software tijdens de productie. Voorbeelden van tools zijn Ansible, Puppet, PowerShell, Chef, Salt of Otter.
  • Bewaken. Deze fase omvat het identificeren en verzamelen van informatie over problemen van een specifieke softwarerelease in productie. Voorbeelden van tools zijn New Relic, Datadog, Grafana, Wireshark, Splunk, Nagios of Slack.

DevOps-praktijken

DevOps-praktijken weerspiegelen het idee van continue verbetering en automatisering. Veel praktijken zijn gericht op een of meer ontwikkelingscyclusfasen. Deze praktijken omvatten:

  • Continue ontwikkeling. Deze praktijk omvat de planning- en coderingsfasen van de DevOps-levenscyclus. Er kunnen versiebeheermechanismen betrokken zijn.
  • Continue tests. Deze praktijk omvat geautomatiseerde, vooraf geplande, continue codetests terwijl de applicatiecode wordt geschreven of bijgewerkt. Dergelijke tests kunnen de levering van code aan productie versnellen.
  • Continue integratie (CI). Deze praktijk brengt configuratiemanagementtools (CM) samen met andere test- en ontwikkelingstools om te bepalen hoeveel van de code die wordt ontwikkeld, gereed is voor productie. Dit omvat snelle feedback tussen tests en ontwikkeling om codeproblemen snel te identificeren en op te lossen.
  • Continue leveringDeze praktijk automatiseert de levering van codewijzigingen na het testen in een pre-productie- of stagingomgeving. Een medewerker kan dan besluiten dergelijke codewijzigingen naar de productie te promoveren.
  • Continue implementatie (CD). Net als bij continue levering automatiseert deze praktijk de release van nieuwe of gewijzigde code naar de productie. Een bedrijf dat continu implementeert, kan meerdere keren per dag code- of functiewijzigingen uitbrengen. Het gebruik vancontainertechnologieën, zoals Docker en Kubernetes, kan een continue implementatie mogelijk maken door de consistentie van de code te helpen behouden in verschillende implementatieplatformen en -omgevingen.
  • Continue bewaking. Bij deze praktijk wordt zowel de operationele code als de onderliggende infrastructuur die deze ondersteunt, voortdurend bewaakt. Een feedbacklus die rapporteert over bugs of problemen, gaat vervolgens terug naar de ontwikkeling.
  • Infrastructuur als code. Deze praktijk kan worden gebruikt tijdens verschillende DevOps-fasen om de provisioning van de infrastructuur te automatiseren die nodig is voor een softwarerelease. Ontwikkelaars voegen infrastructuurcode toe vanuit hun bestaande ontwikkelingstools. Ontwikkelaars kunnen bijvoorbeeld op aanvraag een storagevolume maken van Docker, Kubernetes of OpenShift. Deze praktijk stelt operationsteams ook in staat om omgevingsconfiguraties te bewaken, wijzigingen bij te houden en het terugdraaien van configuraties te vereenvoudigen.

Voordelen van DevOps

De voorstanders van DevOps beschrijven verschillende zakelijke en technische voordelen, waarvan er veel kunnen leiden tot gelukkigere klanten. Voordelen van DevOps zijn onder meer:

  • Snellere, betere productlevering
  • Snellere probleemoplossing en minder complexiteit
  • Grotere schaalbaarheid en hogere beschikbaarheid
  • Stabielere besturingsomgevingen
  • Beter resourcegebruik
  • Meer automatisering
  • Meer inzicht in systeemresultaten
  • Meer innovatie

Geschiedenis van DevOps

Veel DevOps-methoden voor het stroomlijnen van softwareontwikkeling en -implementatie hebben een vroege basis voor flexibele softwareontwikkeling en leanprogrammering. Maar DevOps evolueerde oorspronkelijk vanuit verschillende basisbewegingen om de activiteiten van ontwikkelaars en hun collega's van het operationsteam te harmoniseren.

In de vroege jaren 2000 ontstond de noodzaak om de beschikbaarheid van populaire websites zoals Google en Flickr te handhaven tegen grote aantallen hits. Deze behoefte heeft geleid tot het gebruik van Software Reliability Engineers (SRE's): operationsmedewerkers die nauw samenwerken met ontwikkelaars om ervoor te zorgen dat de sites blijven draaien nadat code in productie werd genomen.

In 2009 presenteerden de technici van Flickr John Allspaw en Paul Hammond hun eigen DevOps-achtige methodologie op een conferentie. Hun presentatie kreeg de titel '10+ implementaties per dag: samenwerking van Dev en Ops bij Flickr'. In datzelfde jaar organiseerde Patrick Debois de eerste DevOps-dag in België. Er werd ook een hashtag #DevOps gemaakt en deze won aan kracht toen meer DevOps-dagen over de hele wereld werden gehouden.

In de komende jaren werden tools en frameworks voor de branche en open source ontwikkeld en voorgesteld om de doelen van DevOps te bevorderen.

NetApp en DevOps

NetApp helpt betere bedrijfsresultaten te bevorderen met DevOps: operationsteams leveren geautomatiseerde infrastructuur met minder engineering, en ontwikkelaars werken in betrouwbare en voorspelbare omgevingen met minder frictie. Met NetApp®-technologie kunt u vol vertrouwen de services en mogelijkheden leveren die uw organisatie nodig heeft om de productiviteit van ontwikkelaars te maximaliseren, zowel on-premises als in cloudomgevingen.

NetApp maakt het voor ontwikkelaars-, test-, QA- en operationsteams eenvoudig om infrastructuurresources (zoals persistente storagevolumes) als code te gebruiken, allemaal vanuit vertrouwde tools in de DevOps-pipeline. Voorbeelden zijn storage-API's van NetApp en IAC-integraties met tools zoals Puppet, Ansible, Docker, Kubernetes en OpenShift.

Maar NetApp maakt het ontwikkelaars niet alleen gemakkelijk om storage als code te gebruiken. Met NetApp-technologie kunnen operationsteams ook met vertrouwen resources provisionen en leveren aan ontwikkelings- en testpersoneel. Ontwikkelaars en testers kunnen de codering- en testcycli vervolgens versnellen door snelle, tijdbesparende storagefuncties, zoals snapshots of klonen, zelf te provisionen. Met deze functies kunnen kopieën van realtime productiedata of codesets binnen enkele seconden of minuten als code worden geleverd om de ontwikkeling en QA-workflow te versnellen.

De toewijding van NetApp aan de community strekt zich uit tot thePub. Deze ontwikkelaarscommunity moedigt samenwerking aan, deelt tips en trucs en behandelt ideeën over de nieuwste DevOps-praktijken en -protocollen.

Verder lezen over DevOps