WeBringCode

Legacy-system

Ett gammalt system bär den affärslogik verksamheten kör på i dag. Vi byter ut det en avgränsad funktion i taget, medan det är i drift, i stället för att skriva om allt på en gång.

Ett system i produktion innehåller mer än sin källkod. Det innehåller undantag, specialfall och överenskommelser som gjorts under åren, och en del av dem finns bara i koden. Somliga ska bort, andra bär verksamheten. Byter du ut en funktion i taget kan du avgöra det per funktion, med det gamla systemet i drift bredvid som facit, i stället för att behöva ha hela bilden klar innan något nytt får användas.

Hur går en modernisering till utan big bang?

Du sätter en fasad framför det gamla systemet och låter de anrop som går att styra gå genom den. Sedan flyttas funktion för funktion bakom fasaden till ny kod, och systemen som anropar det fortsätter mot samma adress. Det som inte går via fasaden, som schemalagda jobb och delade databaser, behöver en egen plan. Det gamla systemet krymper tills det inte längre gör något, och kan stängas av.

Fasadens fyra jobb

  • Routa. Avgöra vilken implementation som tar ett anrop, per rutt och gärna per andel av trafiken.
  • Översätta. Hålla det gamla systemets format borta från de nya tjänsterna.
  • Falla tillbaka. Kunna skicka trafiken till den gamla implementationen igen genom att ändra routningen, utan en ny driftsättning. Det förutsätter att det gamla systemet fortfarande kan läsa det den nya koden hunnit skriva, så det ska testas, inte antas.
  • Observera. Logga jämförbart från båda sidor, så att en skillnad i svar eller svarstid går att se och jämföra i stället för att gissas.

Återgången provar vi innan trafiken flyttas, inte efter. Kan den gamla koden läsa det den nya hunnit skriva? Finns det betalningar, utskick eller andra sidoeffekter som inte går att ta tillbaka och därför måste hanteras för sig? När det är svarat flyttar vi en liten andel av trafiken, tittar på loggarna och flyttar mer.

Var börjar man?

Rita upp beroendena först. Välj sedan en funktion med tydliga in- och utdata, få beroenden till resten och något verksamheten vill ha förbättrat, så att flytten ger mer än ny kod. Mät svarstider och felfrekvens innan du rör något, och bestäm i samma leverans när den gamla koden ska bort. Ska historiken följa med till det nya står det under datamigrering.

Flytta en funktion i taget, och bestäm innan du flyttar den hur du flyttar tillbaka.

Behöver du hjälp med legacy-system?

KONTAKTA OSS >

Behöver du hjälp med integrationer, kod eller ett trasigt system?

Fyll i formuläret eller mejla oss på hello@webringcode.com så återkommer vi med hur vi kan hjälpa dig.

Eller ring oss direkt på 010-660 04 20.

Vi sparar det du skickar för att kunna svara dig. Läs mer i integritetspolicyn.