Artikelen
Tutorials
Interactieve handleidingen
Wat is een DevOps-cultuur?
Hoe DevOps-cultuur mensen, processen en tools helpt af te stemmen op een meer uniforme klantgerichtheid.
Tom Hall
DevOps-vertegenwoordiger en -professional
DevOps is een agile benadering van organisatieverandering die tracht traditionele, geïsoleerde scheidingen tussen teams te overbruggen en nieuwe processen tot stand te brengen die een grotere samenwerking mogelijk maken. Hoewel DevOps mogelijk wordt gemaakt door nieuwe tools en agile engineering-werkwijzen, zijn deze niet voldoende om de voordelen van DevOps te benutten. Zonder de juiste mentaliteit, routines en cultuur is het moeilijk om de volledige belofte van DevOps te realiseren.
Mens en cultuur zijn de belangrijkste factoren voor een succesvolle DevOps-implementatie.
- Atlassian 2020 DevOps Trends Survey
Wat is een DevOps-cultuur?
Een DevOps-cultuur houdt in essentie een nauwere samenwerking en een gedeelde verantwoordelijkheid in tussen development en operations voor de producten die ze maken en onderhouden. Dit helpt bedrijven hun mensen, processen en tools af te stemmen op een meer uniforme klantgerichtheid.
Het bestaat onder andere uit het cultiveren van multidisciplinaire teams die verantwoording afleggen voor de volledige levenscyclus van een product. DevOps-teams werken autonoom en omarmen een cultuur van software-engineering, workflow en toolset die operationele vereisten naar een hoger niveau tillen, hetzelfde niveau als architectuur, design en ontwikkeling. Het feit dat ontwikkelaars die het bouwen, het ook uitvoeren, brengt ontwikkelaars dichter bij de gebruiker, met een beter begrip van vereisten en behoeften van gebruikers. Omdat operations teams meer betrokken zijn bij het ontwikkelingsproces, kunnen ze onderhoudsvereisten en klantbehoeften toevoegen voor een beter product.
De kern van de DevOps-cultuur is meer transparantie, communicatie en samenwerking tussen teams die vroeger geïsoleerd werkten. Maar er moeten belangrijke culturele veranderingen worden doorgevoerd om deze teams dichter bij elkaar te brengen. DevOps is een verandering van de organisatiecultuur die de nadruk legt op continu leren en continue verbetering, vooral door autonome teams, snelle feedback, veel empathie en vertrouwen en samenwerking tussen teams.
gerelateerd materiaal
Omarm een klantgerichte mindset
gerelateerd materiaal
Meer informatie over de voordelen van DevOps
DevOps brengt gedeelde verantwoordelijkheden met zich mee. Development en operations-medewerkers moeten verantwoordelijk zijn voor zowel het succes als het falen van een product. Van ontwikkelaars wordt verwacht dat ze meer doen dan alleen bouwen en overdragen aan operations - er wordt verwacht dat ze de verantwoordelijkheid delen voor toezicht op een product gedurende de hele levensduur. Het adopteren van een 'you build it, you run it'-mentaliteit. Ze testen en gebruiken software en werken meer samen met QA en IT Ops. Als ze begrijpen wat de uitdagingen voor operations zijn, vereenvoudigen ze de implementatie en het onderhoud eerder. En wanneer operations de bedrijfsdoelen van het systeem begrijpt, kunnen ze samenwerken met ontwikkelaars om de operationele behoeften van een systeem te definiëren en automatiseringstools te gebruiken.
Autonome teams zijn een ander belangrijk aspect van DevOps. Om de development en operations teams effectief te laten samenwerken, moeten ze beslissingen nemen en wijzigingen doorvoeren zonder een omslachtig en langdurig goedkeuringsproces. Dit houdt in dat teams vertrouwen krijgen en een omgeving creëren wordt waarin men niet bang is iets verkeerd te doen. Deze teams moeten over de juiste processen en tools beschikken om sneller en gemakkelijker beslissingen te nemen, voor elk risiconiveau voor de klant.
Een kenmerkende ontwikkelingsworkflow kan bijvoorbeeld betrokkenheid van verschillende medewerkers van verschillende teams vereisen om codewijzigingen te implementeren. De ontwikkelaar voert een codewijziging door en pusht deze naar een repository voor bronbeheer, een build engineer bouwt en implementeert de code in een testomgeving, een producteigenaar werkt de status van het werk bij in een tool voor het volgen van issues, etc. Een autonoom team profiteert van tools die deze processen automatiseren, zodat het pushen van nieuwe code het bouwen en implementeren van een nieuwe functie in een testomgeving activeert en de tool voor het volgen van issues automatisch wordt bijgewerkt.
Een team wordt bijvoorbeeld beperkt door vereisten zoals het openen van een ticket met een afzonderlijk operations team om een eenvoudige infrastructuurwijziging door te voeren, zoals een nieuwe DNS-invoer. Een taak die een paar seconden zou moeten duren, duurt dan dagen of weken. Een autonoom team heeft de mogelijkheid om dergelijke veranderingen zelf door te voeren, of het nu gaat om een persoon in het team met de juiste vaardigheden en ervaring, of door toegang tot self-service tools.
Een DevOps-teamcultuur hecht veel waarde aan snelle feedback die kan helpen bij de continue verbetering van een uniform ontwikkelings- en operations-team. In een omgeving waar de ontwikkelings- en operations-teams zich in geïsoleerde silo's bevinden, komt feedback over de prestaties en stabiliteit van toepassingssoftware in productie vaak niet snel terug bij het ontwikkelingsteam, als het al terugkomt. DevOps zorgt ervoor dat ontwikkelaars de snelle feedback ontvangen die ze nodig hebben om snel toepassingscodes te herhalen en te verbeteren door samenwerking tussen operations-medewerkers te vereisen bij het ontwerpen en implementeren van strategieën voor toepassingsbewaking en rapportagestrategieën. Iedere voldoende geschikte tool voor continue integratie maakt bijvoorbeeld automatisch bouwen en testen van nieuwe code-pushes mogelijk en biedt de ontwikkelaar onmiddellijk feedback over de kwaliteit van zijn of haar code.
Automatisering is essentieel voor de DevOps-cultuur, omdat het een goede samenwerking mogelijk maakt en resources vrijmaakt. Door de processen tussen software development en IT-teams te automatiseren en integreren, kunnen ze software sneller en betrouwbaarder bouwen, testen en vrijgeven.
Wat zijn de voordelen van een DevOps-cultuur?
Het meest voor de hand liggende en impactvolle voordeel van het omarmen van een DevOps-cultuur zijn gestroomlijnde, frequente en hoogwaardige softwarereleases. Dit verhoogt niet alleen de bedrijfsprestaties, maar ook de tevredenheid van de medewerkers.
Een DevOps-cultuur bevordert een hoog niveau van vertrouwen en samenwerking, resulteert in betere besluitvorming en nog hogere werktevredenheid, aldus het boek “Accelerate: Building and Scaling High Performing Technology Organizations.”
Het omarmen van een DevOps-cultuur is de sleutel tot het opbouwen van een goed presterende engineeringorganisatie zonder dat de tevredenheid van medewerkers hier onder lijdt. Het is een win-winsituatie. Voor een engineer gaat er niets boven het gevoel om regelmatig en eenvoudig stabiele, goed presterende software te implementeren en uit te voeren die gebruikers blij maakt, en voor leidinggevenden zijn de verbeterde bedrijfsresultaten een schot in de roos.
Wat zijn de uitdagingen?
Het volledig omarmen van een DevOps-cultuur vereist meestal dat individuen en teams de manier waarop ze werken significant veranderen, en vereist daarom inspanningen op het hoogste niveau van de organisatie.
Basisinspanningen kunnen een belangrijk uitgangspunt zijn en zijn vaak een belangrijk uitgangspunt om ervoor te zorgen dat men op management- en executiveniveau achter een DevOps-transformatie staat. Vaak is het meest overtuigende argument voor een bredere DevOps-implementatie wanneer een paar individuen of kleine teams een DevOps-benadering hanteren en succes beginnen te krijgen.
De hoge niveaus van autonomie en vertrouwen die typerend zijn voor een DevOps-cultuur, kunnen moeilijk te cultiveren zijn als een van de betrokken individuen of teams een conflict heeft gehad. Des te geïsoleerd de teams waren voordat er werd geprobeerd een DevOps-benadering in te voeren, hoe moeilijker het wordt om te verbinden.
Veranderingen zijn lastig. Zelfs in omgevingen waar veel harmonie is tussen de bestaande individuen en teams kan, als de voordelen van veranderingen niet duidelijk worden verwoord en begrepen, het moeilijk zijn om acceptatie en bereidheid om de energie erin te steken te stimuleren.
Het is begrijpelijk dat organisaties met een sterke engineering-mindset vaak onmiddellijk naar tools en technologieën grijpen om zakelijke uitdagingen op te lossen. Ja, er zijn tools en technologieën die je organisatie kunnen helpen over te stappen naar een DevOps-benadering. Maar tools en technologieën wijzigen zonder de cultuur te veranderen, wordt vaak 'cargo-cult DevOps' genoemd, omdat het randverschijnselen verandert zonder de zwakte in de basis aan te pakken.
Overwegingen om over te stappen naar een DevOps-cultuur
Open communicatie
Een van de meest fundamentele problemen die DevOps probeert op te lossen, is het isoleren van kennis, ervaring en werk in verschillende bedrijfsafdelingen. Wanneer de programmeurs die code schrijven en de systeembeheerders die deze implementeren en onderhouden niet communiceren, heb je waarschijnlijk inefficiënties.
De kans om fouten te maken
Veel organisaties, teams en individuen zetten buitengewone druk op zichzelf en elkaar om nooit fouten te maken. Als falen geen optie is, probeert een individu of team minder snel een nieuwe benadering om een probleem op te lossen of innovatieve functies te ontwikkelen.
Deze mentaliteit wordt weerspiegeld in de vroegere obsessie met het meten van "Mean Time Between Failures" (MTBF) in plaats van "Mean Time to Recovery" (MTTR). MTBF gebruikt tools zoals 'probleemanalyse' om de bron van storingen te identificeren en ze proberen te voorkomen. MTTR geeft een beeld van softwaretoepassingen als complexe systemen die geneigd zijn op onvoorspelbare manieren te falen en richt zich op snel herstel wanneer ze falen.
Een 'retrospectief zonder een schuldige aan te wijzen' is een veel voorkomend kenmerk in de DevOps-cultuur. De resultaten kunnen worden verbeterd wanneer een team aan het einde van een sprint of project samenkomt om te bespreken wat er goed ging en wat er verbeterd kan worden, in een open en veilige omgeving.
Een onberispelijke kijk op mislukking werkt zo goed, deels omdat er een groeimentaliteit wordt aangenomen, erkend wordt dat er fouten worden gemaakt, maar er gewerkt wordt in de veronderstelling dat mens en organisatie kunnen leren, groeien en verbeteren.
- "Effectieve DevOps" door Jennifer Davis en Katherine Daniels
Nieuwe processen
Het cultiveren van een DevOps-cultuur vereist nieuwe benaderingen van oude problemen. DevOps houdt in dat het geïsoleerde proces van programmeurs die toepassingscode schrijven en het blindelings doorgeven aan een operations team dat de toepassing implementeert en beheert, wordt veranderd. Bij een DevOps-benadering werken development en operations tijdens de volledige levenscyclus van een project samen.
Continue integratie en continue levering (CI/CD) worden algemeen geacht noodzakelijk te zijn voor een DevOps-cultuur. Een derde proces, continue implementatie, wordt omarmd en gepromoot door grote organisaties als Netflix, maar niet vaak doorgevoerd (of vereist) in de meeste kleinere bedrijven. Dit komt omdat het continu inzetten van nieuwe functies in een productieomgeving groot vertrouwen vereist dat nieuwe code grondig is getest en veilig kan worden geïmplementeerd (bijvoorbeeld na een functiewisseling). Tenzij je organisatie dus meerdere keren per dag implementeert, is het misschien niet de moeite waard te investeren in de processen die deze benadering ondersteunen.
In de meeste gevallen vereenvoudigt een variatie op 'trunk-gebaseerde ontwikkeling' je CI/CD-inspanningen enorm. In dit model verwijdert het team lang gebruikte functie-branches en maakt het regelmatig commits aan voor de 'trunk' branch van de code.
Een belangrijk component van trunk-gebaseerde ontwikkeling is uitgebreide geautomatiseerde tests: afdeling, integratie en regressie. Dit helpt om ervoor te zorgen dat alle nieuwe commits naar de trunk branch grondig zijn doorgelicht wanneer ze naar de repository worden gepusht.
Continue integratie is het automatiseren van de integratie van codewijzigingen in een softwareproject. Dit gaat van development teams tot de rest van de organisatie. Productteams coördineren bijvoorbeeld wanneer ze achtereenvolgens functies en fixes moeten starten en welke teamleden verantwoordelijk zijn.
Continue levering is een organisatorische methode die technische en niet-technische teams zoals design, product en marketing samenbrengt om een product te leveren. Omgevingen zonder CD stimuleren 'blindelings doorgeven' waarbij ontwikkelaars zich richten op het QA-team als primaire gebruikerservaring. Dit betekent dat de 'trunk' branch van je repository altijd in een 'implementeerbare' staat verkeert.
Door continue implementatie kunnen codewijzigingen automatisch in productie worden geïmplementeerd wanneer ze worden gemaakt, verborgen achter een functievlag, geïmplementeerd voor een kleine groep klanten, en/of eenvoudig teruggedraaid. Dit biedt teams meer flexibiliteit om in te spelen op veranderende markten en eisen van klanten, omdat ze kunnen reageren op feedback van klanten en snel nieuwe functies kunnen implementeren en valideren. Teams kunnen ook eenvoudig functies terugdraaien, waardoor ze niet worden gehinderd door de build te verbreken.
Functievlag, functiewisseling of niet geteste implementatie zijn veelgebruikte manieren om ervoor te zorgen dat nieuwe toepassingsfuncties niet worden weergegeven of functioneren wanneer ze worden geïmplementeerd in de productieomgeving, maar met minimale inspanningen kunnen worden ingeschakeld. Deze strategie maakt continue implementatie mogelijk, omdat het risico zeer klein is dat gebruikers nadelig worden beïnvloed. Het is ook gebruikelijk om functies te beperken tot een subset van het gebruikersbestand door ze te segmenteren op basis van geografie of door afzonderlijke serverinstallaties uit te voeren en functies te releasen op slechts één server die toegankelijk is voor gebruikers.
Een bijgewerkte toolchain
De meeste softwareontwikkelingsteams gebruiken ten minste een bepaald soort versiebeheer, het volgen van issues en tools voor het monitoren van toepassingen. Dit zijn allemaal belangrijke tools om een DevOps-cultuur te ondersteunen, maar misschien wel de belangrijkste toevoeging aan de traditionele toolset is software ter ondersteuning van CI/CD. Een geautomatiseerde workflow die een commit, test en implementatie vereist, is echt de enige manier om de snelle feedback te ontvangen die een DevOps-cultuur nodig heeft.
DevOps - een culturele verschuiving die resultaten oplevert
Ontwikkelaars dromen er al jaren van om vaker software te leveren, met minder moeite en minder bugs. Nu zijn de tools en procedures om dit te realiseren er eindelijk.
Atlassian heeft ontdekt dat organisaties die DevOps gebruiken, zeggen dat ze hogere kwaliteit leveren (61%), met een verhoogde implementatiefrequentie en een snellere time-to-market (49%). En het zijn niet alleen organisaties die er de vruchten van plukken, maar gebruikers zeggen dat ze nieuwe vaardigheden hebben geleerd (78%) en meer verdienen (48%).
Het cultiveren van een DevOps-cultuur kan een uitdaging zijn, maar de beloning van meer tevreden ontwikkelaars, managers en klanten is het waard.
Wil je je DevOps-cultuur verbeteren? Begin met de Health Monitor voor serviceteams. Oefen ook met communiceren, samenwerken en brainstormen met collega's met de Top 4 spellen voor het bouwen van een DevOps-cultuur.
Deel dit artikel
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.