Skip to main content

DevOps har vuxit fram som en viktig filosofi som överbryggar klyftan mellan programvaruutveckling och IT-drift. Det handlar om mer än att bara använda DevOps-verktyg. Ett framgångsrikt DevOps-team snabbar inte bara upp leveransprocessen, utan säkerställer också kvalitet och tillförlitlighet. Att skapa ett sådant team kräver dock en harmonisk kombination av verktyg, kultur, processer, samarbete och mycket mer. Vilka är de viktigaste komponenterna i ett förstklassigt DevOps-team, och hur kan organisationer integrera dem för optimala resultat? Som en del av den här serien hade vi nöjet att intervjua Dylan Etkin, medgrundare och vd för Sleuth.

Hej, Dylan – Kan du berätta om din bakgrund? 

Jag började min karriär som programvaruingenjör. Jag hade turen att få börja på det lilla startupföretaget Atlassian som deras tjugonde medarbetare. Jag tillbringade tio år på Atlassian, där jag lärde mig oerhört mycket och såg organisationen växa från 20 till 1 200 medarbetare. Jag arbetade som en av de tre första ingenjörerna på Jira, som den första Jira-arkitekten och som teknisk ledare för Bitbucket, där jag var med och växte produkten från 40K till 2 miljoner användare. 

Continue Reading for Free

Create a free account to finish this article, plus get ongoing access to timely insights and practical resources.

Jag lämnade Atlassian och började på startupföretaget Statuspage. Ett år senare förvärvades Statuspage av Atlassian, och jag fann mig återigen tillbaka i moderbolaget. Efter tre år som ledare för det teamet på Atlassian bestämde jag mig för att gå min egen väg och startade Sleuth för att produktifiera det som alltid har varit min passion: att bygga effektiva ingenjörsteam.

Jag har alltid fascinerats av utvecklarverktyg och av att hjälpa team att arbeta effektivt och lära sig kontinuerligt.

Vem vill du tacka för att ha hjälpt dig att nå framgång?

Många människor har hjälpt mig på vägen. Ju äldre jag har blivit, desto mer har jag insett vilket speciellt nätverk jag har byggt upp och hur öppna alla är för att hjälpa till när man frågar.

Ett exempel som sticker ut är John Kodumal, medgrundare och CTO på LaunchDarkly. John och jag var jämbördiga kollegor på Atlassian. När han gav sig av för att grunda LaunchDarkly var han alltid öppen med sina erfarenheter av startupföretag.

När jag började motivera mig själv att starta Sleuth stöttade han mig på alla nivåer. Från att bolla idéer och ha öppna samtal om hur vi skulle gå vidare till att registrera sig som vår första kund har John alltid hjälpt mig i varje steg av min resa. 

Kan du berätta om tre styrkor, färdigheter eller egenskaper som har hjälpt dig att nå den här punkten i din karriär? Hur kan andra aktivt utveckla dessa områden hos sig själva? 

  1. Uthållighet. Färdighet och intelligens räcker bara så långt. Att återkomma till ett problem gång på gång är mycket kraftfullare. Uthållighet, även när man möter flera misslyckanden, har varit avgörande för min framgång.
  2. Öga för detaljer. Det här är en egenskap som alltid har fallit sig naturlig för mig. Som ingenjör är det en viktig färdighet som gör att du kan utföra uppgifterna framför dig på ett sätt som utmärker sig. I en startupmiljö är den här färdigheten ännu viktigare. När du vägleder en produkt från vision till verklighet är det ögat för detaljer som avgör skillnaden mellan en medioker produkt och något som användarna älskar.
  3. Delegering. Även om du måste ta fullt ansvar för ditt företag övergår ett startupföretag mycket snabbt till att handla om att anställa personer som är smartare än du inom många områden och att våga lämna över dina legobitar så att andra kan lyckas och driva verksamheten framåt. 

Vilka färdigheter försöker du fortfarande utveckla?

Jag arbetar alltid med många saker, och det råder aldrig brist på färdigheter att utveckla. Det jag främst fokuserar på just nu är konsten att få ut det bästa av sina medarbetare. Alla är olika, och att veta hur man skapar en miljö där varje individ kan göra sitt bästa arbete är en utmaning.

Låt oss prata om att ha ett framgångsrikt DevOps-team. Vilka är de viktigaste målen som ett DevOps-team kan identifiera under en digital transformationsresa?

DevOps-team får mandat att effektivt ta arbetet från idé till framgångsrik lansering i produktion. Därför är det främsta målet för ett DevOps-team att bygga de verktyg, processer och den kultur som gör det möjligt för enskilda utvecklare att snabbt ta arbetet från idé till framgångsrik lansering. 

Mål som stödjer uppnåendet av det främsta målet är:

  • Möjlighet att definiera arbete i små batchstorlekar
  • En helt automatiserad CI/CD-pipeline
  • Observerbarhet och förproduktionsmiljöer  som fungerar som skyddsnät så att utvecklare tryggt kan skicka ändringar till produktion
  • En tydlig process för vad man ska göra när ändringar går fel. Alla vet hur man upptäcker fel och återställer systemet till ett fungerande tillstånd
  • Stöd från resten av organisationen – produktchefer, marknadsföring, support, försäljning och ledning. Team kommer inte att kunna genomföra en DevOps-transformation utan stöd från hela organisationen

Finns det några utmaningar eller vanliga fallgropar som DevOps-team bör tänka på?

Det finns för många för att kunna lista dem alla. En som sticker ut är att inse att DevOps innebär att du lägger mer ansvar på utvecklaren. Det sker inte utan kostnad, och om du inte investerar i processer och verktyg riskerar du att bygga ett system som inte lämnar någon tid för utvecklarna att faktiskt få arbetet gjort.

Du riskerar också att skapa en miljö där utvecklare snabbt blir utbrända. Du måste komma ihåg att människor bara har en viss kapacitet, så du måste vara uppmärksam på vad du inför för att stödja utvecklare som arbetar enligt DevOps.

Hur kan effektivt samarbete och effektiv kommunikation mellan teammedlemmar förbättra produktiviteten och framgången för ett DevOps-team, och vilka metoder kan underlätta detta?

Kommunikation och samarbete krävs för att arbeta enligt DevOps. Några viktiga metoder är:

  • Använda en ärendehanterare för allt arbete och inkludera det sammanhanget och den informationen i incheckningar och kodgranskningar
  • Kodgranskning med pull-begäranden
  • Tillhandahålla en chattlösning i realtid, som Slack, för teamet
  • Teambaserade aviseringar om driftsättningar i Slack eller teamets ChatOps-verktyg
  • Slack-baserade godkännanden för att flytta ändringar från förproduktionsmiljöer till produktion
  • Individuella aviseringar till utvecklare när deras ändringar driftsätts och när de har brutit mot villkor för misslyckanden
  • Synlighet för teamet kring incidenter och perioder då driftsättningar bör vänta
  • Teamdemonstrationer med produktchefer och andra intressenter
  • Dagliga avstämningsmöten

Vilken roll spelar CI/CD i DevOps, och vilka är de bästa metoderna för att implementera CI/CD-pipelines som säkerställer en smidig och tillförlitlig process för programvaruleveranser?

CI/CD är utan tvekan den viktigaste verktygskomponenten som stöder ett team som arbetar enligt DevOps. Idealet är att teamen har en helt automatiserad driftsättningspipeline som körs på rimligt kort tid, så att utvecklarna inte behöver vänta länge och kan lotsa sina ändringar till produktion. Det är viktigt att inkludera CI och testkörning som en del av denna idealiska pipeline. Att köra en robust testsvit mot dina ändringar som ett villkor för driftsättning är ditt främsta säkerhetsnät för att säkerställa att bra ändringar levereras. 

Om teamen bara vill driftsätta en gång i veckan är det möjligt att ha en driftsättningspipeline som inte är helt automatiserad. Om teamet däremot vill driftsätta minst en gång om dagen måste processen vara helt automatiserad, och driftsättningen måste vara en icke-händelse.

Hur bidrar främjandet av en DevOps-kultur och ett DevOps-tankesätt till den övergripande framgången för ett DevOps-team, och vilka strategier kan organisationer använda för att främja denna kultur bland sina utvecklings- och driftteam?

För utvecklare:

  • Veckovis eller varannan vecka kan sprintplanering bidra till att fastställa uppgifternas omfattning och skapa en överenskommelse i teamet om hur uppgifterna ska rymmas inom detta tidsfönster
  • Automatiserad CI mot versionsgrenen och synlighet för hela teamet kring resultaten, så att teamet kan hålla leveransbygget körbart
  • Upprätthålla en särskild ansvarig roll i teamet, där det är tydligt vems uppgift det är att hålla versionsgrenen körbar
  • En av de bästa mekanismerna för att kunna leverera ofullständigt arbete är att införa någon form av funktionsflaggning.
  • Det kan också vara mycket effektivt att driftsätta varje pull-begäran en i taget. Genom att använda detta mönster kan ni inkludera en granskning av ändringens batchstorlek i kodgranskningen av pull-begäran. Om en batch är för stor kan andra teammedlemmar be en utvecklare att dela upp ändringen i flera pull-begäranden.
  • Ha tillräckligt många mätvärden och en förståelse för deras normalvärden för att kunna verifiera en driftsättning
  • Förstå hur ni eskalerar och återställer vid behov
  • Ha befogenhet att driftsätta sina egna ändringar i alla miljöer ni underhåller och kunna göra det snabbt och utan fel

För produktchefer och designers:

  • Inkludera en produktchef i planeringsprocessen för att ge personen möjlighet att uttrycka kundens behov i inkrementella driftsättningar.
  • Implementera funktionsflaggor som gör det möjligt att rulla ut kod utan att den ännu exponeras för kunderna. Detta hjälper produktchefer att behålla den flexibilitet de behöver samtidigt som utvecklarna kan gå vidare snabbt.
  • Ha en överenskommen mekanism för återkoppling och omarbetning, till exempel ett ärende som tilldelas direkt till en utvecklare. En strategi för att lösa problemet med ofullständigt arbete är att ett team inför sexveckorscykler.

För tekniska chefer:

  • Implementera processer som underlättar kommunikation, till exempel återkommande planeringsmöten, kodgranskningar och veckovisa demonstrationer.
  • Åta er att avsätta utvecklingstid för att hålla versionsgrenens byggen godkända. Att hålla koden i flöde innebär också att investera i detta nya system. När teamet identifierar en flaskhals bör chefen kunna låta teamet undanröja den (t.ex. åtgärda CI-tester som är instabila i mer än 20 % av fallen).
  • Implementera verktyg som hjälper er att kontinuerligt mäta DORA-mått

För chefer:

  • Synliggör Accelerate-måtten för dina projekt och gör dem tillgängliga, med sammanhang, för dina chefer.
  • Synliggör drifttiden eller motsvarande för dina applikationer.
  • Ge din ledningsgrupp samma övergripande information om stora delar av funktionalitet som lanseras.
  • Om du är chef, förstå att förändring tar tid. Var tydlig med att hålla dina team ansvariga för övergripande mål, men var flexibel när det gäller hur de uppnår dem. Lita på dem, men verifiera.
  • Ta dig tid att förklara för din organisation hur ni skapar värde för era kunder. Förklara hur inkrementell leverans fungerar, vilka saker som kommer att lanseras i ett enda stort steg och hur detta arbetssätt kan göra det möjligt för er att skapa värde för kunderna snabbare.

Vilka är de viktigaste komponenterna i ett framgångsrikt DevOps-team?

1 . Teamet arbetar tillsammans i en skuldfri kultur. 

Programvaruutveckling är en lagsport. Incidenter och misstag är möjligheter för team att lära sig, inte möjligheter att fördela skuld. En skuldfri kultur kan sträcka sig bortom incidenter. När ett team sätter mål för förbättringar kan det fokusera på att förbättra resultaten i stället för att skylla på individer eller processer för varför saker inte är där de borde vara.

2 . Driftsättningar är en icke-händelse.

För att kunna leverera i små steg och snabbt reagera på incidenter och kundfeedback måste driftsättningen vara enkel och inte skapa rädsla eller oro. Om ett team inte litar på sina driftsättningar, eller om de tar för lång tid eller omfattar manuella steg, leder detta till rädsla och tvekan, vilket hindrar team från att införa DevOps.

3 . Utvecklare har individuellt mandat att ta förändringar från koncept till en tillförlitlig lansering i produktion. DevOps fungerar när du överför ansvaret för hela processen från koncept till lansering till utvecklarna. Detta gör det möjligt för ditt team att dela upp arbetet i små delar och snabbt leverera värde till kunden i små steg.

4 . Teamet har säkerhetsnät, såsom observerbarhet och åtgärder för att hantera fel, så att de har självförtroende nog att arbeta snabbt (detta är en av många fördelar med verktyg för dataobserverbarhet). Tiden då man arbetade snabbt och hade sönder saker är förbi. Nu behöver du arbeta snabbt och tillförlitligt. För att göra det måste du ha automatiserade säkerhetsnät på plats.

5 . Hela organisationen står bakom att arbeta enligt ett DevOps-flöde.

Vilka framväxande trender ser du framför dig inom DevOps-landskapet som påtagligt kan påverka strategier för digital omvandling i framtiden?

Det kan verka som ett uppenbart svar just nu, men AI-verktyg förändrar redan hur utvecklare arbetar och kommer utan tvekan att ha stor inverkan på hur DevOps tillämpas framöver. AI kommer åtminstone att användas för att upptäcka och identifiera fel på sätt som inte är möjliga i dag.

Om det lever upp till alla sina löften kommer det helt att ersätta de komplicerade driftsättnings- och testningspipelines som vi har i dag.

Prenumerera på The CTO Clubs nyhetsbrev för fler insikter, sammanställningar, frågor och svar samt mycket mer!