I efterdyningarna av fotbolls-vm dyker plötsligt ett gammalt uttryck från fotbollen upp i mitt huvud. Det där uttrycket om att man inte ska röra en vinnande 11:a. För har man hittat något som funkar bra kör man såklart vidare med det. Även bland de appar vi bygger kan man hitta sådana vinnare. Appar som bara rullar på utan att man behöver peta på dem. Månad efter månad, ibland år, lever de sitt eget liv. Utan buggar, till synes problemfria. Jag inser snabbt att uttrycket inte är applicerbart i vår digitala värld. En app som bara rullar på utan att vi behöver releasa nya versioner av den är i sig ett bra betyg, men också ett varningstecken. Med största sannolikhet är den ingen vinnare eftersom den digitala spelplanen kräver ständig förändring och anpassning. Den kod vi skriver idag degenererar snabbt då nya sårbarheter hela tiden upptäcks, både i vår egen kod och i beroendet till andra artefakter.
Sedan en tid tillbaka har vi på uppdraget ökat aktiviteten i vår förvaltning och ser återkommande över och uppdaterar kod, java-versioner och beroenden till andra artefakter. Detta tar en hel del tid i anspråk och är inte alltid de roligaste uppgifterna på boarden. Lätt är också att dessa uppgifter faller i glömska eller prioriteras bort. Ofta har dessa uppgifter en manuell karaktär, dvs varseblivning, inplanering och genomförandet är upp till teamet att hantera. Erfarenhet har visat att världen tenderar att snurra fortare än vad vi hinner med varför vi hamnar efter både när gäller uppdateringar och att upptäcka sårbarheter i koden. Men det finns såklart verktyg som kan hjälpa oss med detta.
På nuvarande uppdrag har våra duktiga devops:are sett till att det i vår CI-pipeline körs kontinuerliga kontroller efter sårbarheter. För att få till detta används ett verktyg som heter Trivy. Trivy söker igenom koden efter kända sårbarheter i externa artefakter, lösenord i koden, api-nycklar, mm. Vid varje push till Gitlab körs dessa kontroller, vilka måste passeras innan bygget blir grönt. Hittas en sårbarhet fallerar bygget omedelbart. Att det ser bra ut ena dagen betyder inte att det ser bra ut nästa dag. Detta har skapat en del utmaningar för oss eftersom vi inte har lika bra koll på omvärlden som Trivy. T ex har vi hamnat i ett läge då vi varit inställda på att få ut en ny release, men istället fått skifta fokus till att lyfta dependencies eftersom Trivy hittat sårbarheter i den kod vi skulle releasa. Men såklart finns det även verktyg som kan hjälpa oss med detta.
I CI-pipelinen finns sedan en tid även Dependabot som hjälper oss uppdatera beroenden till andra artefakter i apparna. Så fort det finns en uppdatering snappar Dependabot upp det och skapar till och med merge requests åt oss. Detta gör det betydligt enklare att hålla apparna uppdaterade under kontrollerade former. Dependabot meddelar oss även om en merge kommer att gå bra eller inte. I många fall är det bara att “trycka på knappen” i de fall vi väljer att merga. Vi kommer ännu inte runt en del manuella regressionstester innan vi kan releasa, men förhoppningsvis når vi snart ett tillstånd där vi har tillräckligt med tester för att automatisera även detta.
Båda verktygen har öppnat våra ögon för hur mycket tid en aktiv förvaltning tar i anspråk och det faktum att vi hela tiden måste vara på tårna om apparna ska utvecklas i takt med omvärlden.
Vid pennan/ Stefan Nildén, CAG Contactor
Bolag: CAG Contactor
Grundat: 1987, del av CAG sedan 2005
Branscher: Alla branscher
Specialistområden: Specialister inom Java, Frontend, test och testautomatisering
Passion för utveckling: Det är ett privilegium att få arbeta på CAG med alla kompetenta och välutbildade konsulter som brinner för att skapa värde för våra kunder. Att utvecklas tillsammans driver oss framåt.
Adress: Tegnérlunden 3, 111 61 Stockholm