Vzor postupného nahrádzania nahrádza legacy systém po častiach. Hranica zachytáva požiadavky, udalosti alebo pracovné postupy a smeruje ich buď do starej implementácie, alebo do nového komponentu. Starý systém naďalej obsluhuje funkcie, ktoré sa ešte nepresunuli. Jeho rozsah sa zmenšuje, keď ich preberá nový systém.
Ako vzor funguje
Vzor potrebuje miesto, na ktorom možno požiadavky rozdeliť. Vo webovej aplikácii to môže byť proxy server alebo brána. Pri internom spracovaní môže ísť o smerovač udalostí, rozhranie služby alebo hranicu pracovného postupu. Pravidlo smerovania musí určiť, ktorá implementácia počas prechodu obsluhuje jednotlivé funkcie.
| Etapa | Starší systém | Nový systém | Smerovacia hranica |
|---|---|---|---|
| Založiť | Zvláda všetko živé správanie | Existuje vedľa neho | Pozoruje alebo smeruje požiadavky |
| Migrovať | Zachováva nepresunuté funkcie | Obsluhuje vybrané funkcie | Rozdeľuje požiadavky podľa explicitného pravidla |
| Overiť | Zostáva k dispozícii tam, kde je to potrebné | Stáva sa vlastníkom presunutej funkcionality | Podporuje porovnanie alebo vrátenie späť |
| Vyradiť | Nemá žiadnu zostávajúcu zodpovednosť | Zvláda celý zvolený rozsah | je zjednodušené alebo odstránené |
Etapy sa môžu opakovať pre každú firemnú funkciu. K vyradeniu dôjde až vtedy, keď volajúci, dátové toky, prevádzkové úlohy ani núdzové postupy nebudú závisieť od starej implementácie.
Čo musí audit zistiť ako prvé
Audit legacy codebase identifikuje hranice, ktoré systém dokáže reálne podporovať. Obrazovka ani modul zdrojového kódu nie sú automaticky migračnou jednotkou. Funkcia môže zdieľať databázové tabuľky, plánované úlohy, stav autentifikácie alebo transakčné pravidlá s inými časťami aplikácie.
Audit teda sleduje:
- Vstupné body. Požiadavky, udalosti, súbory a úlohy, ktoré začínajú toto správanie.
- Vlastníctvo štátu. Systém, ktorý číta a zapisuje každý relevantný záznam.
- Efekty po prúde. Hovory, správy, hlásenia a upozornenia vytvorené tokom.
- Podmienky vyradenia. Závislosti, ktoré musia zmiznúť pred odstránením starého kódu.
Riadenie spolužitia
Počas postupnej migrácie fungujú staré a nové komponenty súčasne. Izolačná vrstva medzi systémami môže prekladať ich dátové modely a terminológiu, ak by priame prepojenie prenieslo staré predpoklady do nového návrhu. Refaktoring môže vytvoriť stabilný smerovací bod tam, kde predtým neexistoval.
Súbežná prevádzka prináša ďalšiu prácu. Monitoring musí ukázať, ktorá cesta spracovala požiadavku. Synchronizácia údajov potrebuje jednoznačný smer aj vlastníka. Pri zlyhaní musí byť jasné, či sa požiadavka vráti na starú cestu, zastaví alebo zopakuje. Tieto pravidlá patria do návrhu prechodnej architektúry, nie medzi detaily riešené až po nasadení.
Ako formuje migračný plán
Vzor mení jeden veľký projekt náhrady na sériu presunov funkcií. Každý presun má definovaný vstupný bod, rozsah údajov, metódu overenia a podmienku dokončenia. Pokrok je tak viditeľný podľa zodpovedností odstránených zo starého systému.
Vzor neodstraňuje potrebu porozumieť codebase. Od tohto poznania závisí výber hraníc, ktoré môžu fungovať súčasne a neskôr sa oddeliť. Hodnota takéhoto plánovania migrácie legacy systému spočíva v tom, že každá dokončená fáza môže bežať v produkcii ešte pred presunom ďalšej časti. Konečným cieľom zostáva odstránenie zastaraného kódu a závislostí.