Lokaltrafik

Från DevOps-problem till utvecklarnöjdhet med Platform Engineering

Hur vi förbättrade lokaltrafik-bolagets utvecklingslandskap

Det lokala kollektivtrafikbolaget är inte ett helt traditionellt kollektivtrafikbolag om man lyfter på huven. De har en långt gången teknisk mognad och en tydligt medveten IT- och utvecklingsavdelning. Det märktes inte minst när de upptäckte de återkommande utmaningar de hade när det gällde deras deployment-pipeline. Med flera utvecklarteam som arbetade samtidigt och på lite olika vis blev det tydligt att de behövde se över sin uppsättning. En viktig del var att säkerställa att bolaget själv hade ett fullt ägandeskap över de tekniska lösningarna men utan att förhindra DevOps-metodiken för utvecklingsteamen. Långt ifrån alla bolag skulle ens identifiera de här problemen - inte ens rena utvecklingsbolag. Behovet av en robust, men flexibel, lösning var tydligt och det var då de vände sig till teamet från adesso Sweden som redan sedan tidigare satt i projekt hos dem.

Tillvägagångssätt

Full självständighet är extremt effektivt vid uppstart av projekt och gör att väldigt mycket kan utvecklas under relativt kort tid, men ju längre tiden går och ju större projektet växer, desto fler utmaningar ställs man inför. Detta gjorde att takten på utvecklingen stadigt sjönk ju längre in i de växande projekten man kom. Lösningen på dilemmat tog därför sin utgångspunkt i vad som ofta kallas Platform Engineering, där helheten - projektets och utvecklingsteamens behov, vägdes samman. För att behålla hastigheten i utvecklingen även när ett projekt eller en produkt växer, behöver man skapa abstraktioner på rätt nivå för utvecklingsteamen. Man behöver en tydlig nätverksstruktur och governance model. Detta tillvägagångssätt fokuserar på att leverera programvara som en produkt, vilket säkerställer att utvecklarteam kan arbeta effektivt och i en kontrollerad miljö, med precis rätt mängd frihet.

Platform Engineering handlar i grunden om att tillhandahålla de underliggande verktygen, processerna och plattformarna för att möjliggöra för utvecklarteam att effektivt distribuera, köra och övervaka sina applikationer. I stället för att varje utvecklarteam behöver hålla ordning på sina egna distributionspipelines eller övervakningsverktyg för att kunna arbeta effektivt, levererar Platform Engineering-metoden dessa funktioner som en form av standardtjänster med i princip steglösa abstraktionslager som möjliggör både enkel uppsättning samt detaljerad konfiguration beroende på utvecklingsteamens kompetens och behov. Alltså, ytterst flexibelt – men absolut kontrollerat.

Vi identifierade flera anti-patterns i deras befintliga DevOps-setup, som bland annat inkluderade:

• Separerade, enskilda utvecklarteam som ofta arbetade isolerat, vilket ledde till en del dubbelarbete.

• Brist på delade verktyg, vilket orsakar inkonsekvens i utbyggnad och övervakning.

• Fragmenterad kommunikation mellan Operations och utvecklarteamen, vilket leder till felaktigheter och framför allt ineffektivitet.

För att behålla hastigheten i utvecklingen även när ett projekt eller en produkt växer, behöver man skapa abstraktioner på rätt nivå för utvecklingsteamen. Man behöver en tydlig nätverksstruktur och governance model.

Lösning

För att hitta passande lösningar till utmaningarna tog plattformsarkitekterna från adesso Sweden flera viktiga steg:

”Vi introducerade delade verktyg, unified tooling, som alla utvecklarteam kunde dra nytta av, vilket säkerställde stabilitet över distributioner och minskade dubbelarbete. På samma sätt introducerade vi delade plattformar; I stället för att varje team mer eller mindre har sin egen infrastrukturuppsättning introducerade vi standardiserade plattformar som uppfyllde kraven från flera team.”, säger Johannes, plattformsarkitekt på adesso Sweden.

Detta gjorde inte bara att resurserna användes mer effektivt utan minskade också potentiella felkällor samtidigt som den vitala punkten – ett av kollektivtrafikbolaget komplett ägandeskap av den tekniska lösningen – kunde garanteras.

Utöver dessa rena tekniska förändringar såg man också till att förbättra kommunikationen mellan Operations och utvecklarteamen, och även teamen sinsemellan. Detta skulle komma att innebära att det fanns en ömsesidig förståelse för mål och begränsningar, vilket leder till mer anpassade mål och betydligt smidigare implementeringar.

Resultat

Förändringen gav ett oerhört bra resultat och satsningen har lett till flera positiva effekter för bolaget och utvecklingsavdelningen i synnerhet:

• En avsevärd minskning av driftsättningsfel.

• Snabbare time-to-market för deras projekt.

• Förbättrat samarbete och kommunikation mellan teamen.

• Minskade kostnader tack vare eliminering av redundanta verktyg och resurser.

• Betydligt bättre möjligheter att snabbt och effektivt kunna anpassa och ytterligare förbättra sin uppsättning för att vidare stärka utvecklingen framåt.

Slutsats

Genom att använda metoder och principer för Platform Engineering på det sätt som vi på adesso Sweden föreslog, och satte upp, förändrade kollektivtrafikbolaget deras utvecklings- och distributionsprocess och såg effektivitetsvinster som ”traditionell” DevOps inte riktigt kunde ge.

Vi är såklart stolta över att ha fått förtroendet att vägleda och implementera denna förändring och bevisade både för oss själva och för kunden att rätt tillvägagångssätt, skräddarsytt för ett företags unika utmaningar, leder till framgång – vilket är precis det sätt på vilket vi ser alla våra uppdrag. Vi löser problemen genom den tekniska lösning som passar bäst just i det enskilda fallet. One size doesn’t fit all…