Artikelen
Tutorials
Interactieve handleidingen
Wat is een DevOps engineer?
Een DevOps engineer moet beschikken over vaardigheden op het gebied van ontwikkeling en operations, maar ook interpersoonlijke vaardigheden om de verschillen tussen geïsoleerde teams te helpen verkleinen.
Tom Hall
DevOps-vertegenwoordiger en -professional
Wanneer een organisatie geworteld is in een geïsoleerde structuur waarin development en operations afzonderlijk werken, betekent de implementatie van DevOps vaak een organisatorische verandering. Het vereist de juiste mensen, cultuur en tools om DevOps succesvol te implementeren. Toch is een van de meest voorkomende valkuilen bij het implementeren van DevOps een gebrek aan vaardigheden bij medewerkers, volgens de DevOps Trends Survey van Atlassian 2020.
Een van de belangrijkste rollen voor het implementeren van een DevOps-herstructurering is een DevOps engineer. Deze persoon moet beschikken over verschillende vaardigheden op het gebied van ontwikkeling en operations, maar ook over de interpersoonlijke vaardigheden om de verschillen tussen geïsoleerde teams te helpen verkleinen.
Wat is een DevOps engineer?
Een DevOps engineer is een IT-generalist die uitgebreide kennis moet hebben van ontwikkeling en operations, waaronder codering, infrastructuurbeheer, systeembeheer en DevOps toolchains. DevOps engineers moeten ook over interpersoonlijke vaardigheden beschikken, omdat ze met vaste bedrijfsstructuren werken om een beter samenwerkende omgeving te creëren.
DevOps engineers moeten een goed begrip hebben van gemeenschappelijke systeemarchitectuur, provisioning en administratie, maar moeten ook ervaring hebben met de traditionele toolset voor ontwikkelaars en het gebruik van broncontrole, het geven en ontvangen van code-reviews, het schrijven van apparaattests en moeten bekend zijn met agile-principes.
Rollen en verantwoordelijkheden
De rol van een DevOps engineer verschilt van organisatie tot organisatie, maar brengt steevast een combinatie met zich mee van release engineering, infrastructuur provisioning en management, systeembeheer, beveiliging en het belang van DevOps.
oplossing bekijken
DevOps-tools voor het hele team
Training
Atlassian DevOps essentials leren
Release engineering bestaat uit het werk dat nodig is om applicatiecode te bouwen en te implementeren. De exacte tools en processen variëren sterk afhankelijk van veel variabelen, zoals in welke taal de code is geschreven, hoeveel van de pipeline is geautomatiseerd en of de productie-infrastructuur on-premise of in de cloud is. Release engineering kan bestaan uit het selecteren, inrichten en onderhouden van CI/CD-tooling of het schrijven en onderhouden van op maat gemaakte build/implementatiescripts.
Infrastructuur provisioning en systeembeheer bestaan uit het implementeren en onderhouden van de servers, opslag en netwerkresources die vereist zijn om toepassingen te hosten. Voor organisaties met on-premise resources kan dit bestaan uit het beheer van fysieke servers, opslagapparaten, switches en virtualisatiesoftware in een datacenter. Voor een hybride of volledig cloudgebaseerde organisatie omvat dit meestal het inrichten en beheren van virtuele instanties van dezelfde componenten.
Het belang van DevOps wordt vaak ondergewaardeerd of volledig over het hoofd gezien, maar is misschien wel de belangrijkste rol van een DevOps-engineer. De omschakeling naar een DevOps-cultuur kan verstorend en verwarrend zijn voor leden van het technische team. Als DevOps-expert is het de taak van de DevOps-engineer om de DevOps-manier binnen de hele organisatie onder de aandacht te brengen en aan te leren.
De 9 belangrijkste vaardigheden van DevOps-engineers
De technische vaardigheden vereist voor een DevOps engineer variëren afhankelijk van de teamstructuur, technologieën en toolsets die worden gebruikt. Toch zijn sterke communicatie- en samenwerkingsvaardigheden van essentieel belang. Het is ook belangrijk dat een DevOps engineer alle componenten van een pipeline voor levering kent en de voor- en nadelen van beschikbare tools en services kent.
1. Communicatie en samenwerking
Het is belangrijk dat een DevOps engineer effectief communiceert en samenwerkt met teams, managers en klanten. Deze zogenaamde 'soft skills' worden vaak over het hoofd gezien en ondergewaardeerd, maar het succes van DevOps is sterk afhankelijk van de kwaliteit en kwantiteit van feedback over de volledige waardestroom.
2. Systeembeheer
Een DevOps engineer heeft ervaring met systeembeheer, zoals het inrichten en beheren van servers, het implementeren van databases, beveiligingsbewaking, systeempatching en het beheren van interne en externe netwerkverbindingen.
3. Ervaring met DevOps-tools
Omdat het gebruik van de juiste tools essentieel is voor DevOps-werkwijzen, moet de DevOps engineer verschillende tools begrijpen en kunnen gebruiken. Deze tools bestaan onder andere uit de DevOps-levenscyclus, van infrastructuur en gebouw tot het monitoren en bedienen van een product of service.
4. Configuratiebeheer
Van DevOps engineers wordt vaak verwacht dat ze ervaring hebben met één of meer tools voor configuratiebeheer, zoals Chef, Puppet of Ansible. Veel organisaties hebben deze of vergelijkbare tools gebruikt om systeembeheertaken te automatiseren, zoals het implementeren van nieuwe systemen of het toepassen van beveiligingspatches op systemen die al worden uitgevoerd.
5. Containers en containerorkestratie
Met 'containerisatie', een technologie die door Docker populair is gemaakt, worden de code voor de toepassing en de runtime-omgeving gecombineerd. Hierdoor zijn traditionele tools voor configuratiebeheer minder nodig. Tegelijkertijd brengt het beheren van containers zijn eigen uitdagingen met zich mee, en ervaring met het soort tools dat we 'containerorkestratie' noemen (zoals Docker Swarm of Kubernetes) wordt een noodzakelijke vaardigheid voor de DevOps engineer.
6. Continue integratie en continue implementatie
Continuous Integration and Continuous Delivery (CI/CD) zijn kernpraktijken van een DevOps-benadering voor softwareontwikkeling en worden mogelijk gemaakt door veel beschikbare tools. De meest fundamentele functie van elke CI/CD-tool of set tools is het automatiseren van het proces voor het bouwen, testen en implementeren van software.
DevOps engineers hebben meestal ervaring nodig met het configureren en implementeren van één of meer CI/CD-tools, en moeten meestal nauw samenwerken met de rest van de ontwikkelingsorganisatie om ervoor te zorgen dat deze tools effectief worden gebruikt.
7. Systeemarchitectuur en provisioning
Een DevOps engineer moet de mogelijkheid hebben om on-premise en in de cloud computerecosystemen te ontwerpen, aan te bieden en te beheren. Het is belangrijk om Infrastructure as Code (Iac) te begrijpen, een IT-beheerproces dat best practices van DevOps-softwareontwikkeling toepast op het beheer van bronnen voor cloudinfrastructuur. Een DevOps engineer moet begrijpen hoe je systeeminfrastructuur in de cloud vorm geeft met Amazon Web Services (AWS), AWS CloudFormation of Terraform.
8. Vertrouwd zijn met codering en scripting
Veel traditionele systeembeheerders hebben ervaring met het schrijven van shell-scripts om zich herhalende taken te automatiseren. Een DevOps engineer moet meer kunnen dan alleen maar automation-scripts schrijven en kennis hebben van geavanceerde processen voor softwareontwikkeling en hoe je agile ontwikkelingsprocessen zoals code-reviews implementeert en moet broncontrole gebruiken.
9. Vaardigheden op het gebied van gezamenlijk management
Samenwerking tussen teams is een fundamenteel onderdeel van een effectieve DevOps-strategie, ongeacht de specifieke organisatiestructuur. Of het engineeringteam nu een groep is die alleen in rollen is opgedeeld of dat er afzonderlijke teams zijn voor functieontwikkeling, kwaliteitsborging, DevOps, etc., de DevOps engineer moet binnen de volledige organisatie met veel verschillende mensen als coach en medewerker samenwerken.
Een van de meest waardevolle voordelen van een DevOps-investering is bijvoorbeeld de mogelijkheid om ontwikkelaars sneller feedback te geven. Een DevOps engineer moet vaak met QA samenwerken (of het nu gaat om handmatige testers of ontwikkelaars die test-automation schrijven) om de snelheid, werkzaamheid en uitvoer van testmethoden te verbeteren.
Tegelijkertijd kunnen ontwikkelaars support nodig hebben van DevOps engineers wanneer ze werken aan het verbeteren van het proces voor het bouwen en implementeren van toepassingscode.
Het DevOps-team: andere rollen en verantwoordelijkheden
DevOps evangelist
Dit is een DevOps-expert die DevOps-werkwijzen binnen de hele organisatie promoot en ontwikkelt. De DevOps evangelist heeft doorgaans een goede technische achtergrond, maar de focus van de rol ligt op interpersoonlijke communicatie en procesverbetering.
Releasemanager/change advisory board
Organisaties die niet zijn overgestapt op DevOps of zich nog in de beginfase bevinden, kunnen een aparte groep hebben die de Change Advisory Board (CAB) wordt genoemd of de rol van releasemanager.
Het doel van dergelijke rollen is ervoor te zorgen dat nieuwe toepassingssoftware die in productie wordt genomen, voldoet aan kwaliteits- en beveiligingsnormen en de juiste goedkeuringen voor beheer heeft.
Deze rollen waren vooral belangrijk toen softwareleases risicovoller waren. Deze rollen zijn echter minder belangrijk (zo niet verouderd) nu er strategieën worden gebruikt zoals automatisch testen en niet-geteste implementaties.
Automation-expert
Van elke DevOps engineer wordt verwacht dat hij of zij expert is op het gebied van automation. Toch is het niet ongebruikelijk dat een organisatie een aparte automation-expert of automation-engineer heeft. Dit kan iemand zijn die zich richt op het beheren van de CI/CD-tools of het ontwikkelen en onderhouden van geautomatiseerde testreeksen.
softwareontwikkelaar
In de meeste gevallen wordt de titel softwareontwikkelaar gegeven aan personen die front-end of back-end toepassingscode schrijven, of beide. Dit zijn de mensen die we altijd 'computerprogrammeurs' hebben genoemd vóór de opkomst van agile denken.
Quality Assurance
Het Quality Assurance-team (QA) is verantwoordelijk voor het vinden van softwarefouten. QA engineers hebben zich altijd geconcentreerd op het handmatig testen van nieuwe toepassingscode om ervoor te zorgen dat deze niet onmiddellijk crasht ('smoke-tests'), bestaande functies ontregelt ('regressietests') of andere nieuwe functies verstoort ('integratietests').
Organisaties voegen steeds vaker handmatige testers toe of vervangen ze door de rol van software development engineer in test (SDET). De SDET richt zich op het testen van nieuwe toepassingscode voordat deze in productie wordt genomen. In plaats van software handmatig te testen, richt hij of zij zich echter op het schrijven van code voor test-automation.
Security engineer
Organisaties die het idee niet hebben omarmd om veiligheids- en nalevingsproblemen volledig te integreren in hun plannings- en ontwikkelingsprocessen, hebben vaak een persoon die of team dat verantwoordelijk is voor de beveiliging. Dit blijkt vaak een tegenstrijdig patroon te zijn, omdat het van beveiliging een bijzaak maakt, en het veel moeilijker is om software te beveiligen als deze al is ontworpen, gebouwd en geïmplementeerd dan te ontwerpen met beveiliging in gedachten.
Meer dan alleen één rol
Voor DevOps zijn een culturele verandering, nieuwe managementprincipes en het gebruik van technologische tools vereist. Een DevOps engineer vormt de kern van een DevOps-transformatie en moet over veel verschillende vaardigheden beschikken om deze verandering mogelijk te maken. Toch hebben de meeste organisaties meer dan één DevOps engineer nodig, een combinatie van generalisten en specialisten die nauw met elkaar samenwerken om DevOps te implementeren en de levenscyclus van softwareontwikkeling te verbeteren. Een DevOps engineer helpt silo's afbreken om samenwerking tussen verschillende experts en tussen toolchains mogelijk te maken om het volledige potentieel van DevOps te benutten.
Open DevOps van Atlassian biedt alles wat teams nodig hebben om software te ontwikkelen en te gebruiken. Teams kunnen de DevOps-toolchain bouwen die voor hen werkt, dankzij integraties met toonaangevende leveranciers en marketplace-apps. Omdat wij vinden dat teams op de manier moeten werken zoals ze willen, in plaats van zoals verkopers dat willen. Probeer het nu uit.
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.