← Artiklar

Din plattform tävlar mot genvägen

Klockan är fem i fem på en fredag och en rad i en config är fel i produktion. Den rätta vägen är känd: ändra filen i plattformsrepot, öppna en PR, vänta på CI, få en review, mergea, låt plattformen rulla ut den. Tjugo minuter om allt går smidigt, och någon måste vara kvar för att godkänna. Utvecklaren vet också att hon kan köra kubectl edit direkt och ha det fixat på tio sekunder. Gissa vilken väg som väljs tio minuter före helg.

Hon gör inget dumt. Hon tar den väg som kostar minst just nu. Det är hela problemet.

Varje kringgående är en genväg med mindre friktion

Titta på var en plattform läcker. Secreten som klistrades in i en env-variabel i stället för att gå via vaulten. Resursen som klickades ihop i konsolen och som Terraform inte känner till. Tjänsten som kopierades från en gammal i stället för från mallen. kubectl-ändringen som aldrig hamnade i git. Varje sådan genväg är en plats där den osäkra vägen var enklare än den säkra.

Det är inte slarv. Det är minsta motståndets lag, och den vinner varje gång en deadline trycker på. En plattform används inte bara för att den finns, särskilt inte om den är obekväm. Den kringgås, tyst, en genväg i taget, tills den säkra vägen bara finns kvar i dokumentationen.

Det är inte utvecklaren, det är asymmetrin

Det lätta är att skylla på utvecklaren. Hon borde följa processen, inte gena. Men hon optimerar för det hon mäts på: att få ut sin ändring. Plattformsteamet mäts på något annat: att plattformen är säker och korrekt. Därför lägger teamet till ännu en grind: ett obligatoriskt fält, ett godkännande, ett verktyg att logga in i, en policy att läsa. Varje grind gör den säkra vägen lite trögare.

Och där sitter felet: den som lägger till friktionen känner den inte. Det gör den som ska gå på vägen. Den säkra vägen förlorar långsamt, en fredag i taget. Det vanliga svaret är att förbjuda genvägen, att göra plattformen obligatorisk.

Men ett mandat är vad man tar till när plattformen inte kan vinna på egna meriter.

Friktionsasymmetrin

Jag kallar det friktionsasymmetrin: den säkra vägen och genvägen har nästan aldrig samma friktion. Det är skillnaden mellan dem som avgör vilken som används, inte hur säker den rätta vägen är. En plattform tävlar alltid mot genvägen, och den förlorar i samma sekund som den säkra vägen kostar mer möda än den osäkra.

Tänk på gräsmattan mellan två hus. Den anlagda gången går längs tomtgränsen, men folk genar rakt över, och med tiden trampas en genväg upp i gräset. Du kan sätta upp ett staket, eller så lägger du gångvägen där folk redan går. En plattform är samma sak. Genvägen i gräset är att eskalera sina egna rättigheter och göra ändringen för hand. Staketet är mandatet. Det som faktiskt fungerar är att lägga den säkra vägen där människor redan vill gå.

fyra steg, två personer, tjugo minuter PR review CI deploy kubectl edit, tio sekunder ändringen produktion
Vägen med minst friktion vinner, oavsett vad policyn säger.

Mät friktionen, inte bara säkerheten

Lösningen är inte att jaga genvägar. Det är ett spel du inte vinner, och varje genväg du stänger utan att sänka friktionen flyttar bara läckan någon annanstans. Lösningen är att göra den säkra vägen till den friktionsfriaste, och att faktiskt mäta det. Räkna stegen.

Före: en säker config-ändring är en PR, en review, ett CI-bygge och en utrullning. Fyra steg, två personer, tjugo minuter. Genvägen är kubectl edit. Ett steg, noll personer, tio sekunder. Så länge den skillnaden består vinner genvägen, oavsett vad policyn säger. Efter: det säkra flödet är automatiserat, valideras på sekunder och rullas ut en minut senare, utan att någon väcks. När den säkra vägen tar en minut och inte kräver att du väntar på en människa sträcker sig ingen efter kubectl edit, inte för att det är förbjudet utan för att det är mer jobb.

Och friktion är mer än klick. Om den säkra vägen kräver att teamet förstår Kubernetes-nätverk, TLS och IAM för att komma i mål är den kognitiva lasten också friktion, och den betalas i varje ny uppgift. Plattformens jobb är att göra den säkra vägen inte bara snabbast, utan också till den som kräver minst att hålla i huvudet.

Visst, allt kan inte vara friktionsfritt. Att radera en produktionsdatabas eller ge sig själv admin ska ta emot, en stunds eftertanke är själva poängen. Men spara friktionen till det som är farligt. Varje onödig grind på de ofarliga 90 procenten är inte säkerhet, det är en subvention till genvägen.

Utvecklare röstar med fötterna

Du kan inte beordra fram adoption. Utvecklare röstar med fötterna varje dag, i varje litet val mellan den säkra vägen och genvägen. De följer minsta motståndets lag. En plattform är inte bra för att den finns, och inte för att den är säker. Den är bra först när den är det enklaste alternativet i rummet.

Så innan du skriver en policy som säger att teamen ska använda plattformen, mät hur många steg din väg tar jämfört med genvägen de redan känner till. Bygg så att din väg vinner den omröstningen klockan fem i fem på en fredag.

Bygger ni en plattform som teamen väljer frivilligt, eller en de rundar när det bränner till? Så jobbar jag.