Wat is DevOps en wat zijn de voordelen?
Bij DevOps werken developer-teams en IT-operation teams samen als één team. Ontwikkel- en beheeractiviteiten zijn aan elkaar gekoppeld en nauw met elkaar geïntegreerd. Dit biedt diverse voordelen. Zo kan sneller toegevoegde waarde worden geleverd via ontwikkelde applicaties. Continue terugkoppeling tussen specialisten uit beide vakgebieden zorgt ervoor dat het eindresultaat nauwer aansluit op de wensen van eindgebruikers. Gebruikers krijgen hierdoor een nieuwe functionaliteit sneller tot hun beschikking, of profiteren van nieuwe voordelen door een gewenste wijziging.
Populaire DevOps methoden
Er zijn diverse DevOps methoden beschikbaar. De populairste methoden zijn:
Agile
Agile omschrijft methodologieën voor softwareontwikkeling die draaien om iteratieve ontwikkeling. Kenmerkend hierbij is dat de vereisten vanuit eindgebruikers en oplossingen waarmee hieraan wordt voldaan, zich continu ontwikkelen. Agile teams zijn zelfsturend en omvatten uiteenlopende competenties. Agile helpt teams onder meer bij het sneller leveren van waarde met een grotere kwaliteit en voorspelbaarheid. Ook kunnen teams sneller reageren op bijvoorbeeld veranderende vraag van eindgebruikers en veranderingen in de markt.
Scrum
Scrum is een agile-methodiek voor het op een flexibele wijze ontwikkelen van onder meer software. Centraal hierbij staan multidisciplinaire teams, die werken in korte sprints met een vaste lengte van één tot vier weken. Na iedere sprint leveren de teams een werkend softwareproduct of -component op. Scrum is gebaseerd op zelf-organiserende autonome teams, die zichzelf continu verbeteren. Bij DevOps nemen teams de verantwoordelijkheid voor het volledige project, van idee tot realisatie en van ingebruikname tot beheer.
Kanban
Een andere veel gebruikte agile-methodiek is Kanban. Deze methode kent zijn oorsprong in de maakindustrie en wordt gebruikt in zogeheten lean manufacturing of just-in-timeproductie. De methode helpt bij het tijdig in kaart brengen van wanneer iets nodig is en het aansturen van de logistieke productieketen. DevOps-teams zetten Kanban in voor het verbeteren van workflows en het combineren van workflows van verschillende functies en activiteiten. Hierdoor ontstaat een enkelvoudige workflow die alle ontwikkel- en operationele activiteiten omvat. Kanban biedt je inzicht in het volledige proces en het opzetten van een DevOps cultuur.
Hoe ziet de DevOps cyclus eruit?
De cyclus van een met DevOps ontwikkelde applicatie omvat verschillende fasen: plannen, coderen, bouwen & testen, implementeren, en beheren en monitoren. In elke fase zijn er meerdere tools die je hierbij kunnen ondersteunen.
Plannen
In deze fase identificeren DevOps-teams werkzaamheden. Vaak zetten zij tools als Kanban-borden, Jira of Git in voor het bijhouden van bekende problemen en uitvoeren van projectmanagement. In deze fase plannen teams taken en brengen ze hierin prioriteiten aan.
Coderen
Teams richten zich in deze fase op het schrijven van code. Ze ontwerpen de software en schrijven de broncode van deze software. In veel gevallen zetten DevOps-teams hierbij versiebeheersystemen als GitHub, GitLab, Bitbucket of Stash in.
Bouwen en testen
In de bouwen & testen fase richten DevOps-teams zich op het beheren van softwarebuilds en -versies. Veel versiebeheersystemen omvatten geautomatiseerde tests, al zijn ook handmatige testtools beschikbaar. Deze tools testen en valideren onder meer de code, zodat je fouten identificeert voordat je de software naar productie pusht. Voorbeelden van tools zijn onder meer Docker, Ansible, Puppet en Chef, maar ook JUnit, TestNG en BlazeMeter.
Implementeren
Is de softwarebuild getest en gevalideerd? Dan kun je deze naar productie pushen, dat zowel geautomatiseerd als handmatig kan. Diverse tools ondersteunen je bij het pushen van een nieuwe build, waaronder Puppet, Chef, Ansible, Jenkins en Kubernetes. Denk echter ook aan OpenShift, OpenStack, Docker of Jira.
Beheren en monitoren
Zodra de software naar productie is gepusht, moet deze worden beheerd en gemonitord. Dit betekent onder meer dat je de prestaties en het gebruik van de software in kaart brengt. Zo kun je problemen waar gebruikers tegenaan lopen, vroegtijdig signaleren en relevante informatie verzamelen voor toekomstige builds. Tools zijn onder meer Ansible, Puppet en Chef, maar ook Grafana, Wireshark, Splunk en Nagios.
DevOps pipeline: eindresultaat van hogere kwaliteit
Snelheid en efficiëntie spelen een cruciale rol bij DevOps. Een belangrijk component hierbij is de DevOps pipeline. Deze pipeline kun je vergelijken met een productielijn in een fabriek, die uit verschillende stations (fasen) bestaat. In iedere fase voeg je iets toe of verwijder je juist iets, voer je testen uit en breng je componenten in balans. Zo zorgt een DevOps pipeline ervoor dat het eindresultaat dat het DevOps team oplevert van hoge kwaliteit is.
Deze pipeline van groot belang. Door de snelle ontwikkelcycli die bij DevOps centraal staan, kan het aantal wijzigingen aan code dat developers per maand doorvoeren fors oplopen. Bij de grootste techbedrijven zoals Amazon en Google loopt dit aantal zelfs in de duizenden wijzigingen per dag. De sleutel tot succes hierbij is een correct opgezette DevOps pipeline.
Welke DevOps practices zijn er?
Een DevOps pipeline bestaat in de praktijk uit tools en geautomatiseerde processen die het DevOps team inzet voor het compileren, bouwen en uitrollen van code. Een aantal van deze practices zijn:
Continuous integration
Deze practice omvat het automatiseren van de integratie van codewijzigingen die meerdere ontwikkelaars hebben gemaakt. DevOps-teams verzamelen deze wijzigingen in een centrale repository, waar zij builds creëren en de code aan tests onderwerpen. Feedback uit tests wordt door ontwikkelaars verzameld en toegepast op de code, zodat eventuele problemen snel zijn opgelost.
Continuous delivery
Deze practice bereidt code na het testen automatisch voor, voor het pushen van de code naar een productieo-mgeving. Centraal hierbij staat het zo snel en efficiënt mogelijk in productie krijgen van ideeën. Teams werken dan ook in korte cycli en maken deployments onderdeel van hun routine. Dit betekent onder meer dat je deployments zo voorspelbaar mogelijk maakt en op ieder moment kunt uitvoeren.
Continuous deployment
Continuous deployment is een practice waarbij je wijzigingen in code die de testfase hebben doorlopen automatisch naar productie pusht. Dit zonder verdere menselijke interactie. Eindgebruikers kunnen hierdoor direct met de gewijzigde software aan de slag.
Infrastructure as Code
Infrastructure as Code (IaC) is het beheren, monitoren en provisioneren van infrastructuur via code, in plaats van handmatige processen. Zo creëer je configuratiebestanden die alle infrastructurele specificaties omvatten. Denk hierbij aan netwerken, virtuele machines, load balancers en connecties. Een IaC-model zorgt ervoor dat iedere keer dat je het model uitrolt exact dezelfde infrastructuuromgeving ontstaat. Het speelt hiermee een belangrijke rol in continuous delivery en continuous deployment.
Belang van automatisering in DevOps
Alle DevOps processen, zoals continuous integration en continuous delivery, zijn handmatig uitvoerbaar. Dit neemt echter veel tijd in beslag. Automatisering speelt dan ook een belangrijke rol. DevOps-teams houden dankzij automatiseringstools meer tijd over voor het ontwikkelen van software.
Daarnaast zorgt automatisering voor consistentie: tools voeren geautomatiseerde taken immers altijd op dezelfde wijze uit. Denk echter ook aan snelheid. Zo kunnen teams automatisering inzetten om razendsnel taken uit te voeren die handmatig veel meer tijd in beslag zouden nemen.
Welke processen jij binnen jouw DevOps team het beste kunt automatiseren, is afhankelijk van jouw specifieke werkwijze. Het opzetten van automatisering kan enige tijd in beslag nemen. Identificeer daarom welke processen het meest kunnen worden versneld met behulp van automatisering, en welke tijdsinvestering dit vergt. Zo zijn er wellicht eenvoudige processen die je vaak gebruikt en relatief eenvoudig automatiseerbaar zijn. Dit kan dan ook een eenvoudige manier zijn om met automatisering aan de slag te gaan.
Benieuwd hoe True je in dit proces kunt ondersteunen? Meer informatie over onze DevOps manier van werken vind je hier. Lees daarnaast hier meer over de stap die je ná DevOps kunt zetten.