FallstudieEmbedded/Real-TimePågående

1 000 tester parallellt, svar på minuter.

DeLaval bygger framtidens mjölkningsteknik. I Satin-teamet ansvarar vi för byggmiljön och automattesterna som säkrar kvaliteten. Uppdraget: flytta hela byggmiljön från OnPrem till molnet — och lyfta utvecklingsteam som är vana vid lokal hårdvara, så att de tar ut det molnet gör bättre istället för att lyfta 1-till-1.

KundDeLaval
Periodokt 2021 – Nuvarande
RollerDevOps, Delivery Engineer, Cloud Ops Engineer
01 / Problem

Testerna gick i hårdvarans takt — inte utvecklarens.

Mjukvara till mjölkningsrobotar testas mot en komplett systemmiljö, inte mot enskilda funktioner. OnPrem betyder att antalet miljöer är lika med antalet maskiner i rummet: tester köar, feedback dröjer timmar, och en utvecklare som väntar byter uppgift och tappar sammanhanget.

Den enkla vägen hade varit att lyfta samma uppsättning maskiner till EC2 och kalla det moln. Uppdraget var uttalat det motsatta: teamen skulle få ut det som molnet faktiskt gör bättre — elasticitet och isolering per testfall — vilket kräver att både plattform och arbetssätt ändras samtidigt.

BegränsningEtt testfall kräver en hel systemmiljö — inte en process.
BegränsningTeamen var vana vid lokal hårdvara; verktyg utan omställning hade inte räckt.
BegränsningBygg och artefakter låg OnPrem i Jenkins och JFrog Artifactory.
BegränsningFlaky tester kunde inte skiljas från riktiga fel utan historik.
02 / Angreppssätt

En container per testfall.

Istället för att kopiera maskinparken byggdes ACME: ett ramverk som reser en komplett systemmiljö i Docker inom varje testsession och kör en container per testfall i AWS Fargate och Batch. Elasticiteten blir därmed en egenskap i testramverket, inte något utvecklaren måste boka.

okt 2021In i Satin-teametAnsvar för byggmiljön och automattesterna som säkerställer kvaliteten i DeLavals mjölkningsteknik — med OnPrem som utgångsläge.
2021 – 2022ACME tar formEtt ramverk som inom varje testsession sätter upp en komplett systemmiljö i Docker och orkestrerar en container per testfall i AWS Fargate och Batch.
2022Artifactory till AWSJFrog Artifactory migrerades från OnPrem till AWS och driftades dagligen — artefakterna måste följa med innan bygget kan flytta.
2022 – 2023Data istället för känslaTestresultat konverteras från pipelines till InfluxDB och visas i Grafana: trender, flaky tester och underlag för att agera.
2023 – nuJenkins ut, GitLab inPipelines migrerades från Jenkins OnPrem till GitLab CI/CD, med daglig drift av GitLab Runners på Docker Autoscaler executor.
2024Avveckling utan dramaVid övergången till JFrog SaaS avvecklades den egna Artifactory-lösningen planerat — hela livscykeln, inte bara uppsättningen.
Principen
Lyft inte maskinparken till molnet. Lyft arbetssättet — och låt plattformen följa.
03 / ACME

Autotest Cloud Managed Environment.

ACME är ramverket som gör en testsession till infrastruktur: den beskriver miljön, reser den, fördelar testfallen och river allt igen. Fyra steg, samma väg varje gång.

Steg 01Miljön beskrivsEn komplett systemmiljö definieras i Docker som del av testsessionen.
Steg 02Sessionen resesACME startar miljön och fördelar testfallen — en container per testfall.
Steg 03Körning i Fargate/BatchUpp till 1 000 isolerade tester kör parallellt istället för i kö.
Steg 04Resultat och rivningResultat skickas till InfluxDB/Grafana; miljön rivs och lämnar inget efter sig.

Beslut runt ramverket

BeslutVarförKonsekvens
En container per testfallIsolering är billigare än felsökning av tester som stör varandra.Parallellism blir en resursfråga istället för en schemaläggningsfråga.
Fargate och Batch, inte EC2-flottaTestlast är stötvis: hundratals miljöer i minuter, sedan noll.Kapacitet betalas per körning; ingen maskinpark att underhålla mellan sessioner.
Terraform för plattformenMiljöerna måste kunna återskapas och granskas, inte konfigureras manuellt.Förändringar går via kod och review — även för byggmiljön.
InfluxDB + Grafana för testdataEtt rött test säger inget; hundra körningar över tid säger allt.Flaky tester identifieras på trend istället för på anekdot.
GitLab CI/CD som en vägTvå parallella pipelinevärldar dubblar underhållet och splittrar teamen.Jenkins OnPrem kunde avvecklas; en gemensam väg från commit till testresultat.
04 / Utfall

Mätbart, varje månad.

Isolerade tester parallellt1 000En container per testfall i Fargate och Batch istället för kö mot lokala maskiner.
Feedback till utvecklareMinuterNer från timmar — tillräckligt snabbt för att stanna i samma uppgift.
vCPU-timmar per månad30 000Motsvarar nästan 3,5 år i realtid, konsumerat på en månad.
Byggen per månad80 000GitLab Runners med Docker Autoscaler executor i daglig drift.

Utöver volymen förändrades hur teamet resonerar: testresultat konverteras från pipelines till InfluxDB och visualiseras i Grafana, så att trender och flaky tester syns i data istället för att bedömas på känsla. JFrog Artifactory migrerades från OnPrem till AWS, driftades dagligen i tre år och avvecklades sedan smidigt vid övergången till JFrog SaaS — en livscykel som gick hela vägen, inte bara en migrering.

05 / Teknik

Elva tekniker, grupperade.

Moln & körningAWS EC2AWS ECSAWS FargateAWS Batch
Infrastruktur & kodTerraformPython
LeveransGitLab CI/CDJenkinsJFrog Artifactory
ObservabilityInfluxDBGrafana
Säg hej

Har du ett problem värt att lösa?

Chatta med oss på WhatsApp. Vi svarar inom 48 timmar.