Refaktorering under pågående utveckling: så gör du
**Snabbguide: parallella spår**...

Snabbguide: parallella spår
Stora refaktoreringar misslyckas när de blockerar annan utveckling. Lösningen är parallella spår: expand-and-contract-mönstret låter gammal och ny kod samexistera tills migrationen är klar.
Inför mätpunkter som visar framsteg – andel trafik på nya vägen, antal kvarvarande anrop till gamla API:et. Synliga framsteg håller både teamet och ledningen ombord.
Mekaniken i expand-and-contract är enkel men kräver tålamod: bygg det nya gränssnittet parallellt med det gamla (expandera), migrera anroparna en i taget i egen takt, och riv det gamla först när mätningarna visar noll användning (kontrahera). Varje steg är litet, testbart och – viktigast av allt – reversibelt. Ingen big bang, ingen fryst utveckling, ingen helg-migration med andan i halsen.
För datamigrationer tillämpar du samma mönster på skrivningarna: dubbelskriv till gammal och ny modell, läs från den gamla medan den nya backfylls, växla läsningen bakom en flagga när jämförelserna visar identiska svar, och sluta skriva till den gamla först när ingen längre läser den. Ordningen är allt – den som river för tidigt får återuppleva migrationen baklänges under en incident.
Verktygsstödet gör större skillnad än många anar: automatiserade kodmodningar som skriver om hundratals anropsplatser mekaniskt, deprekeringsvarningar som syns i CI, och instrumentpaneler över återstående migrationsskuld förvandlar ett årsprojekt till en serie veckouppgifter.
Den svåraste konsten är att avsluta. Halvfärdiga migrationer – två sätt att göra samma sak, för evigt – är dyrare än att aldrig ha börjat, eftersom varje ny utvecklare nu måste lära sig båda. Budgetera kontraktionsfasen från start och fira den som den verkliga målgången.
