DevOps er opstået som en afgørende filosofi, der bygger bro mellem softwareudvikling og IT-drift. Det handler om mere end blot at bruge DevOps-værktøjer. Et succesfuldt DevOps-team fremskynder ikke kun leveringsprocessen, men sikrer også kvalitet og pålidelighed. Det kræver imidlertid en harmonisk sammensmeltning af værktøjer, kultur, processer, samarbejde og meget mere at skabe et sådant team. Hvilke kritiske komponenter indgår i et førsteklasses DevOps-team, og hvordan kan organisationer integrere dem for at opnå de bedst mulige resultater? Som en del af denne serie havde vi fornøjelsen af at interviewe Dylan Etkin, medstifter og CEO for Sleuth.
Hej Dylan – Vil du fortælle os om din baggrund?
Jeg begyndte min karriere som softwareingeniør. Jeg var så heldig at blive ansat i en lille startupvirksomhed, Atlassian, som deres medarbejder nummer 20. Jeg tilbragte 10 år hos Atlassian, hvor jeg lærte utrolig meget og så organisationen vokse fra 20 til 1.200 medarbejdere. Jeg arbejdede som en af de første tre ingeniører på Jira, som den første Jira-arkitekt og som teknisk leder for Bitbucket, hvor jeg var med til at få produktet til at vokse fra 40.000 til 2 millioner brugere.
Jeg forlod Atlassian og sluttede mig til en lille startupvirksomhed, Statuspage. Et år senere blev Statuspage opkøbt af Atlassian, og jeg var pludselig tilbage på moderskibet igen. Efter tre år som leder af det team hos Atlassian besluttede jeg mig for at gå mine egne veje og starte Sleuth for at omsætte det, der altid har været min passion, til et produkt: at opbygge effektive ingeniørteams.
Jeg har altid været fascineret af udviklerværktøjer og af at hjælpe teams med at arbejde effektivt og lære kontinuerligt.
Hvem vil du tilskrive æren for at have hjulpet dig med at opnå succes?
Mange mennesker har hjulpet mig undervejs. Jo ældre jeg er blevet, desto mere er det gået op for mig, hvilket særligt netværk jeg har opbygget, og hvor åbne de alle er over for at hjælpe, når man spørger.
Et eksempel, der skiller sig ud, er John Kodumal, medstifter og CTO hos LaunchDarkly. John og jeg var kolleger hos Atlassian. Da han forlod virksomheden for at grundlægge LaunchDarkly, var han altid åben om sine erfaringer som startupstifter.
Da jeg begyndte at motivere mig selv til at starte Sleuth, støttede han mig på alle niveauer. Fra idéudveksling og åbne samtaler om, hvordan jeg skulle gå videre, til at tilmelde sig som vores første kunde – John har altid hjulpet mig på alle punkter i min rejse.
Vil du dele tre styrker, færdigheder eller egenskaber, der har hjulpet dig med at nå dette punkt i din karriere? Hvordan kan andre aktivt udvikle disse områder hos sig selv?
- Vedholdenhed. Færdigheder og intelligens rækker kun et stykke. Det er langt mere effektivt at vende tilbage til et problem igen og igen. Vedholdenhed, selv når man står over for flere fiaskoer, har været afgørende for min succes.
- Sans for detaljer. Det er en egenskab, der altid er faldet mig naturligt. Som ingeniør er det en afgørende færdighed, der gør det muligt at løse de opgaver, man står over for, på en måde, der skiller sig positivt ud. I et startupmiljø er denne færdighed endnu vigtigere. Når man fører et produkt fra vision til virkelighed, kan sans for detaljer være forskellen mellem et middelmådigt produkt og noget, brugerne elsker.
- Delegering. Selvom man er nødt til at tage fuldt ejerskab for sin virksomhed, bliver en startupvirksomhed meget hurtigt en øvelse i at ansætte mennesker, der er dygtigere end en selv på mange områder, og i at give sine byggeklodser videre, så andre kan få succes og føre virksomheden fremad.
Hvilke færdigheder forsøger du stadig at udvikle?
Jeg arbejder altid på mange ting, så der er aldrig mangel på færdigheder, der kan udvikles. Det, der fylder mest for mig lige nu, er kunsten at få det bedste frem i sine medarbejdere. Alle er forskellige, og det er en udfordring at vide, hvordan man skaber et miljø, hvor hvert enkelt menneske kan udføre sit bedste arbejde.
Lad os tale om at have et succesfuldt DevOps-team. Hvilke centrale mål kan et DevOps-team opstille for en digital transformationsrejse?
DevOps-teams får beføjelse til effektivt at føre arbejdet fra idé til vellykket lancering i produktion. Derfor er det vigtigste mål for et DevOps-team at opbygge de værktøjer, processer og den kultur, der gør det muligt for de enkelte udviklere hurtigt at føre arbejdet fra idé til vellykket lancering.
Mål, der understøtter opnåelsen af det vigtigste mål, er:
- Muligheden for at definere arbejde i små portioner
- En fuldt automatiseret CI/CD-pipeline
- Observérbarhed og præproduktionsmiljøer der fungerer som sikkerhedsnet, så udviklere trygt kan skubbe ændringer i produktion
- En klar proces for, hvad man skal gøre, når ændringer går galt. Alle ved, hvordan fejl opdages, og hvordan systemet bringes tilbage til en fungerende tilstand
- Opbakning fra resten af organisationen – PM'er, marketing, support, salg og ledelsen. Teams vil ikke kunne gennemføre en DevOps-transformation uden støtte fra hele organisationen
Er der nogle udfordringer eller almindelige faldgruber, som DevOps-teams bør være opmærksomme på?
Der er for mange til at nævne dem alle. En, der skiller sig ud, er at erkende, at DevOps-praksis betyder, at man lægger mere ansvar over på udvikleren. Det kommer ikke gratis, og hvis man ikke investerer i processer og værktøjer, risikerer man at opbygge et system, der ikke efterlader udviklerne tid til rent faktisk at få arbejdet udført.
Du løber også risikoen for at skabe et miljø, hvor udviklere hurtigt bliver udbrændte. Du skal huske, at mennesker kun har en begrænset kapacitet, så du skal være opmærksom på, hvad du indfører for at understøtte udviklere, der arbejder efter DevOps-principper.
Hvordan kan effektivt samarbejde og kommunikation blandt teammedlemmer øge produktiviteten og succesen for et DevOps-team, og hvilke praksisser kan fremme dette?
Kommunikation og samarbejde er nødvendigt for at praktisere DevOps. Nogle vigtige praksisser omfatter:
- Brug af et system til sporing af opgaver til alt arbejde og inkludering af denne kontekst og information i commits og kodegennemgange
- Kodegennemgang med pull requests
- At stille en chatløsning i realtid, såsom Slack, til rådighed for teamet
- Teambaserede meddelelser om udrulninger i Slack eller teamets ChatOps-værktøj
- Slack-baserede godkendelser til at fremføre ændringer fra præproduktionsmiljøer til produktion
- Individuelle meddelelser til udviklere, når deres ændringer er sat i drift, og når de har overskredet betingelser for fejl
- Synlighed for teamet i forbindelse med hændelser og perioder, hvor udrulninger bør vente
- Teampresentationer med PM'er og andre interessenter
- Daglige standup-møder
Hvilken rolle spiller CI/CD i DevOps, og hvad er de bedste praksisser for implementering af CI/CD-pipelines for at sikre en problemfri og pålidelig softwareudgivelsesproces?
CI/CD er uden tvivl den vigtigste værktøjskomponent, der understøtter et team, som arbejder efter DevOps-principper. Det ideelle er, at teams har en fuldautomatisk udrulningspipeline, der kører på rimelig tid, så udviklerne ikke skal vente længe og kan føre deres ændringer ind i produktion. Det er vigtigt at inkludere CI og testkørsel som en del af denne ideelle pipeline. At køre en robust testpakke mod dine ændringer som en kontrol før udrulning er dit primære sikkerhedsnet for at sikre, at gode ændringer sættes i drift.
Hvis teams kun ønsker at udrulle én gang om ugen, er det muligt at have en udrulningspipeline, der ikke er fuldautomatisk. Hvis dit team derimod ønsker at udrulle mindst én gang om dagen, skal processen være fuldautomatisk, og udrulning skal være en ikke-begivenhed.
Hvordan bidrager fremme af en DevOps-kultur og tankegang til den overordnede succes for et DevOps-team, og hvilke strategier kan organisationer bruge til at fremme denne kultur blandt deres udviklings- og driftsteams?
For udviklere:
- Ugentlig eller to-ugentlig sprintplanlægning kan hjælpe med at fastsætte opgavernes størrelse og skabe en aftale i teamet om, hvordan opgaverne skal passe ind i dette tidsrum
- Automatiseret CI mod udgivelsesgrenen og synlighed for hele teamet i forhold til resultaterne, så teamet kan holde udgivelsen bygbar
- Opretholdelse af en “forstyrret” rolle i et team, hvor det er tydeligt, hvis opgave det er at holde udgivelsesgrenen bygbar
- En af de bedste mekanismer til at kunne sætte ufærdigt arbejde i drift er at indføre en form for funktionsflagning.
- Det kan også være meget effektivt at udrulle hver pull request én ad gangen. Ved at anvende dette mønster kan I inkludere en gennemgang af ændringens batchstørrelse sammen med kodegennemgangen af jeres pull request. Hvis en batch er for stor, kan andre teammedlemmer bede en udvikler om at opdele ændringen i flere pull requests.
- Hav tilstrækkeligt med målepunkter og en forståelse af deres normalværdier til at kunne verificere en udrulning
- Forstå, hvordan man eskalerer og ruller tilbage, hvis det bliver nødvendigt
- Vær bemyndiget til at udrulle egne ændringer til alle de miljøer, I vedligeholder, og kunne gøre det hurtigt og uden fejl
For PM'er og designere:
- Inddrag en PM i planlægningsprocessen, så vedkommende får mulighed for at udtrykke kundens behov i trinvise udrulninger.
- Implementer funktionsflag, så kode kan rulles ud uden endnu at blive gjort synlig for kunderne. Det hjælper PM'er med at bevare den fleksibilitet, de har brug for, samtidig med at udviklerne kan gå videre i højt tempo.
- Hav en aftalt mekanisme til feedback og omarbejdning, f.eks. en opgave, der tildeles direkte til en udvikler. En strategi til at løse problemet med ufærdigt arbejde er, at et team indfører seksugerscyklusser.
For engineeringledere:
- Implementer processer, der fremmer kommunikationen, såsom tilbagevendende planlægningsmøder, kodegennemgange og ugentlige demonstrationer.
- Forpligt jer til at afsætte tid fra engineering til at holde byggeprocesserne fra udgivelsesgrenen fejlfri. At holde koden i bevægelse betyder også, at man investerer i dette nye system. Når teamet identificerer en flaskehals, bør lederen kunne give teamet mulighed for at fjerne den (f.eks. rette CI-tests, der har en ustabilitet på over 20 %).
- Implementer værktøjer, der hjælper jer med løbende at måle DORA-metrikker
For ledere:
- Synliggør Accelerate-metrikkerne for dine projekter, og gør dem tilgængelige for din ledelse sammen med den nødvendige kontekst.
- Synliggør din oppetid eller tilsvarende for dine applikationer.
- Giv dit ledelsesteam de samme overordnede oplysninger om store dele af funktionaliteten, der bliver lanceret.
- Hvis du er leder, skal du forstå, at forandring tager tid. Vær fast i din forventning om, at dine teams står til ansvar for overordnede mål, men vær fleksibel med hensyn til, hvordan de når dem. Stol på dem, men kontrollér.
- Tag dig tid til at forklare din organisation, hvordan du leverer værdi til dine kunder. Forklar, hvordan trinvis levering fungerer, hvilke ting der bliver lanceret på én gang, og hvordan denne arbejdsform kan gøre det muligt for dig at levere værdi til kunderne hurtigere.
Hvad er de vigtigste bestanddele i et succesfuldt DevOps-team?
1 . Teamet arbejder sammen i en kultur uden skyldplacering.
Softwareudvikling er en holdsport. Hændelser og fejl er muligheder for teams til at lære, ikke muligheder for at placere skyld. En kultur uden skyldplacering kan række ud over hændelser. Når et team fastsætter mål for forbedringer, kan det fokusere på at forbedre resultaterne i stedet for at bebrejde enkeltpersoner eller processer for, hvorfor tingene ikke er, som de burde være.
2 . Implementeringer er ikke noget særligt.
For at kunne levere i små trin og reagere hurtigt på hændelser og kundefeedback skal implementeringen være nem og ikke skabe frygt eller bekymring. Hvis et team ikke har tillid til sine implementeringer, eller hvis de tager for lang tid eller involverer manuelle trin, vil det føre til frygt og tøven, hvilket forhindrer teams i at anvende DevOps.
3 . Udviklere har individuel bemyndigelse til at føre ændringer fra idé til en pålidelig lancering i produktion. DevOps fungerer, når du overdrager ansvaret for hele processen fra idé til lancering til udviklerne. Det gør det muligt for dit team at opdele arbejdet i små portioner og hurtigt levere værdi til kunden i små trin.
4 . Teamet har sikkerhedsnet, såsom observerbarhed og fejlmål, så de har tillid til at kunne arbejde hurtigt (dette er en af mange fordele ved værktøjer til dataobserverbarhed). Tiden, hvor man arbejdede hurtigt og ødelagde ting, er forbi. Nu skal du arbejde hurtigt og samtidig pålideligt. For at gøre det skal du have automatiserede sikkerhedsnet på plads.
5 . Hele organisationen har taget arbejdsformen i et DevOps-flow til sig.
Hvilke nye tendenser forventer du i DevOps-landskabet, som i fremtiden kan få betydelig indflydelse på strategier for digital transformation?
Det kan virke som et oplagt svar lige nu, men AI-værktøjer ændrer allerede den måde, udviklere arbejder på, og de vil helt sikkert få stor indflydelse på, hvordan DevOps praktiseres fremover. AI vil som minimum blive brugt til at opdage og identificere fejl på måder, der ikke er mulige i dag.
Hvis det lever op til alle sine løfter, vil det fuldstændigt erstatte de komplicerede implementerings- og testpipelines, vi har i dag.
Tilmeld dig The CTO Clubs nyhedsbrev for flere indsigter, opsamlinger, spørgsmål og svar samt meget mere!




