Preskoči na sadržaj
Konis Software
Arhitektura·10 min čitanja

Modernizacija legacy sistema bez zaustavljanja posla

Potpuno prepisivanje pada jer stari sistem ne stoji dok pišete novi. Modernizacija koja uspeva ide u malim, reverzibilnim koracima — jedan deo, iza fasade, dok posao ne staje.

Ukratko

  • Potpuno prepisivanje pada jer stari sistem nastavlja da se menja dok gradite novi, pa je meta uvek u pokretu.
  • Uzorak davljeničke smokve seli jednu po jednu sposobnost iza fasade i briše stari put tek kada kroz njega prolazi nula saobraćaja.
  • Prvi deo za selidbu bira se po visokoj stopi promene, niskoj spregnutosti i jasnoj granici.
  • Antikorupcioni sloj čuva novi model od grehova stare šeme, a podaci se sele dvostrukim upisom, punjenjem unazad i usaglašavanjem.
  • Napredak se meri udelom prebačenog saobraćaja, ne brojem napisanih linija, a migracija koju niko ne vidi prva se otkaže.

Skoro svaka firma koja je duže od deset godina u poslu vozi bar jedan sistem koji svi zovu „stari“. Radi, ali ga se svi plaše da diraju. Dokumentacija je u glavama dvoje ljudi, od kojih je jedan otišao. Svaka izmena traje nedeljama jer niko ne zna šta će još da se sruši. U jednom trenutku neko predloži da se to prosto napiše iznova, od nule, kako treba. Tu obično počinje najskuplja greška.

Modernizacija legacy sistema je izvodljiva, ali gotovo nikad kao jednokratna zamena. Izvodljiva je kao niz malih, reverzibilnih koraka koji posao ne zaustavljaju ni na jedan dan. Ovaj tekst je o tome kako izgleda takav put i zašto onaj drugi, primamljiviji, gotovo uvek završi loše.

Zašto „veliki prasak“ i dalje pada

Potpuno prepisivanje — veliki prasak, gde se dve godine gradi novi sistem pa se jednog vikenda prebaci sve odjednom — pada iz razloga koji je matematički, ne organizacioni. Dok pišete novi sistem, stari ne stoji. On i dalje dobija hitne izmene: nov porez, nov način plaćanja, zahtev velikog kupca. Svaka od tih izmena je nova meta koju novi sistem mora da pogodi, a on je gađa dok se ona pomera.

Rezultat je da se novi sistem nikad ne „sustigne“ sa starim. Dan pre planiranog prelaska, stari sistem ume nešto što novi ne ume, jer je to dodato prošlog meseca. Prelazak se odloži, pa se odloži opet. Posle dve godine imate dva sistema koja treba održavati, tim koji je iscrpljen, i upravu koja više ne veruje ni reči „migracija“.

Uz to, veliki prasak koncentriše sav rizik na jedan datum. Ako nešto krene naopako u toku tog vikenda, nema delimičnog povlačenja — ili radi sve, ili ne radi ništa. Ozbiljni prelasci izbegavaju taj datum tako što ga uopšte nemaju.

Davljenička smokva umesto velikog praska

Uzorak davljeničke smokve dobio je ime po biljci koja obraste drvo domaćina, postepeno preuzme njegovu ulogu, i tek kad sama može da stoji — domaćin istrune. U softveru to znači tri poteza koji se ponavljaju sve dok od starog sistema ne ostane ništa.

Prvo, ispred starog sistema se postavi fasada — tanak sloj kroz koji prolazi sav saobraćaj. U početku fasada samo prosleđuje sve starom sistemu i ništa ne menja; korisnici ne primete ništa. Ona je tačka na kojoj kasnije možete da preusmerite pojedinačne tokove.

Drugo, jedna po jedna sposobnost se seli na novi kod. Fasada za tu jednu operaciju počne da poziva novi sistem umesto starog, dok sve ostalo i dalje ide na stari. Ne selite modul zbog lepote, nego zato što za njega postoji jasna granica na fasadi.

Treće, stari put se briše tek kada kroz njega prolazi nula saobraćaja. Ne kada je novi „gotov“, nego kada je merenjem potvrđeno da niko više ne koristi stari. Sve dok jedan noćni izveštaj zove staru proceduru, ona ostaje — i to je u redu, jer je izolovana iza fasade i nikog ne ugrožava.

Ovo trajno menja pitanje sa „kada prelazimo“ na „koliko smo već prešli“. Nema datuma D, ima procenat saobraćaja koji ide na novo, i taj procenat raste iz nedelje u nedelju umesto da se dve godine drži na nuli.

Kako izabrati prvi deo

Izbor prvog dela odlučuje da li će ceo poduhvat imati kredibilitet. Pogrešan prvi deo je ili prevelik da se završi u razumnom roku, ili tako uvezan sa ostatkom da se ne može izdvojiti. Dobar prvi kandidat ima tri osobine:

  • Visoka stopa promene. Deo koji se ionako menja svakog meseca. Tu novi kod odmah plaća sebe, jer se sledeća izmena radi na čistom umesto na strašnom.
  • Niska spregnutost. Deo koji ne zavisi od pola sistema. Što manje niti vodi ka njemu, to je granica jasnija, a selidba bezbednija.
  • Jasna granica. Operacija koja se na fasadi vidi kao nekoliko poziva, a ne kao stotinu isprepletanih. Ako granicu ne možete da nacrtate, još je nemate — i to je posao pre selidbe, ne tokom nje.

Katalog proizvoda, na primer, često je dobar prvi kandidat: menja se stalno, a relativno je odvojen od naplate i knjigovodstva. Zato prelazak na modernu prodajnu platformu poput NG Commerce obično kreće upravo od kataloga i prikaza, dok naplata još neko vreme ostaje na starom sistemu.

Antikorupcioni sloj i migracija podataka

Najveća opasnost pri selidbi nije kod, nego to da novi sistem nasledi grehove stare šeme. Ako novi model podataka preslika svaku čudnu kolonu i svako „privremeno“ polje iz starog, dobili ste isti sistem sa novim datumom. Zato se između starog i novog stavlja antikorupcioni sloj — prevodilac koji stare pojmove pretvara u čiste pojmove novog modela, i obrnuto. Stari sistem govori svojim jezikom, novi svojim, a sloj između njih ne dozvoljava da se pojmovi pomešaju.

Podaci se sele u tri poteza koja idu zajedno:

KorakŠta radiZašto
Dvostruki upisSvaka nova izmena piše se i u stari i u novi sistemNovi model ostaje aktuelan od trenutka uključenja
Punjenje unazadIstorijski podaci se prebacuju u pozadini, u serijamaNovi sistem dobija prošlost bez zastoja u radu
UsaglašavanjeRedovno se poredi da li se stari i novi slažuNeslaganje se otkrije odmah, a ne na dan prelaska

Dvostruki upis drži oba sistema u koraku dok traje selidba. Punjenje unazad prebacuje istoriju bez prekida u radu. Usaglašavanje je kontrola koja se najčešće preskoči, a najviše vredi: ako broj zapisa ili suma iznosa nije ista u oba sistema, to morate da saznate istog dana, dok je uzrok mali, a ne kroz tri meseca kada je razlika narasla i više se ne zna odakle potiče.

Zastavice, povratni release i vidljiv napredak

Svaka selidba jedne sposobnosti pušta se iza zastavice funkcionalnosti — prekidača koji preusmerava saobraćaj sa starog puta na novi bez novog izdanja koda. To čini release reverzibilnim: ako novi put pokaže problem, vraćate zastavicu i saobraćaj se istog trenutka vrati na stari, bez panike i noćnog povlačenja verzije.

Da bi selidba preživela, mora da bude vidljiva i isprepletana sa poslovnom vrednošću. Nekoliko pravila to obezbeđuju:

  1. Merite prebačen saobraćaj, ne napisan kod. Izveštaj upravi nije „prešli smo 40.000 linija“, nego „35% porudžbina ide kroz novi sistem“. Linije koda ne znače ništa nekome ko plaća.
  2. Svaki korak nosi vidljivu korist. Uz selidbu kataloga dođe i brža pretraga; uz selidbu naloga dođe i bolja prijava. Korist koju korisnik oseti je ono što drži projekat živim.
  3. Puštajte malo i često. Deset malih, reverzibilnih koraka nose daleko manji rizik od jednog velikog, i svaki od njih daje priliku da se stane ako nešto ne valja.
  4. Neka tim i dalje isporučuje. Ako se ceo tim povuče u „veliku migraciju“ na godinu dana, posao stane, a ono što stane — otkaže se. Selidba mora da teče paralelno sa isporukom onoga zbog čega firma postoji.

Migracija koju niko ne vidi je ona koja se otkaže. Ako posle tri meseca jedini dokaz napretka postoji u glavama inženjera, prvi pad prihoda ili promena prioriteta pomeće ceo poduhvat. Vezujte svaki korak za broj koji uprava razume — udeo prebačenog saobraćaja — i za korist koju korisnik oseti.

Isti obrazac koristimo i kada firma seli evidenciju kupaca u KickOff CRM ili prelazi na upravljanje dokumentima kroz DocDot: stari sistem ostaje izvor istine dok se saobraćaj postepeno ne prebaci, a antikorupcioni sloj čuva novi model od starih navika.

Kada NE modernizovati

Ne zaslužuje svaki stari sistem selidbu. Ako sistem radi, jeftin je za održavanje i niko od njega ne traži promenu, modernizacija je trošak bez povrata. Star nije isto što i loš. Sistem koji godinama tiho radi svoj posao i menja se jednom u dve godine ne treba dirati samo zato što je napisan u nemodernoj tehnologiji.

Odluku o modernizaciji pokreće bol, ne estetika: izmene traju predugo, rizik svake promene je previsok, sistem ne može da se poveže sa novim kanalima, ili ga održava samo jedna osoba čiji odlazak ruši posao. Ako ništa od toga nije istina, novac je bolje uložiti tamo gde stvarno boli. A ako jeste — počnite od jednog dela, iza fasade, sa zastavicom koja može da vas vrati. Ako niste sigurni gde je granica prvog dela, to je prvi razgovor koji vredi obaviti sa timom koji je već selio ovakve sisteme, pre nego što se napiše ijedna linija.

Razgovarajmo o vašem slučaju

Opišite nam proces koji vas najviše košta. Na kratkom razgovoru kažemo da li se isplati automatizovati i šta bi to konkretno značilo.

Česta pitanja

Zašto potpuno prepisivanje starog sistema tako često propadne?

Zato što stari sistem nastavlja da se menja dok gradite novi, pa novi neprestano gađa metu koja se pomera i nikad je ne sustigne. Uz to, veliki prasak koncentriše sav rizik na jedan datum prelaska, bez mogućnosti delimičnog povlačenja. Posle dve godine obično imate dva sistema za održavanje i iscrpljen tim.

Šta je uzorak davljeničke smokve?

To je pristup u kojem se ispred starog sistema postavi fasada, pa se jedna po jedna sposobnost seli na novi kod, dok stari put ostaje netaknut. Stari deo se briše tek kada kroz njega prolazi nula saobraćaja. Tako se pitanje pomera sa „kada prelazimo“ na „koliko smo već prešli“.

Kako da izaberemo koji deo sistema prvo modernizovati?

Birajte deo sa visokom stopom promene, niskom spregnutošću i jasnom granicom. Deo koji se ionako menja svakog meseca odmah opravda ulaganje, a jasna granica na fasadi omogućava bezbednu selidbu. Ako granicu ne možete da nacrtate, prvo je definišite — to je posao pre selidbe, ne tokom nje.

Čemu služi antikorupcioni sloj?

On sprečava da novi sistem nasledi grehove stare šeme. To je prevodilac koji stare pojmove pretvara u čiste pojmove novog modela i obrnuto, tako da stari i novi mogu da rade istovremeno bez mešanja koncepata. Bez njega dobijate isti stari sistem sa novim datumom.

Kada nije vredno modernizovati stari sistem?

Kada sistem stabilno radi, jeftin je za održavanje i niko od njega ne traži promenu. Star nije isto što i loš. Modernizaciju pokreće bol — spore izmene, visok rizik, nemogućnost povezivanja s novim kanalima — a ne to što je tehnologija nemoderna.

Nastavite dalje