Rearchitektúra aplikácií mení štruktúru, ktorá určuje, ako je systém rozdelený a ako jeho časti spolupracujú. Presahuje vyčistenie kódu v rámci existujúcej hranice. Práca môže zahŕňať oddelenie zodpovedností, presun vlastníctva dát, zavedenie nových rozhraní alebo nahradenie synchrónnych závislostí iným modelom interakcie.
Keď je obmedzením architektúra
Starší systém môže bežať na podporovanej infraštruktúre, a napriek tomu môže byť náročné ho meniť. Funkcie môžu zdieľať dáta bez jasného vlastníctva, vydania verzií môžu vyžadovať spoločné nasadenie nesúvisiacich modulov alebo sa jedno zlyhanie môže šíriť cez úzko prepojené volania. Ide o štrukturálne vlastnosti. Presun rovnakého dizajnu na nového hostiteľa ich neodstráni.
Audit staršieho codebase sleduje tieto obmedzenia až ku konkrétnemu správaniu a závislostiam. Cieľom je identifikovať, ktoré architektonické rozhodnutie bráni požadovanému výsledku, namiesto toho, aby sa vyberal módny cieľový stav.
| Obmedzenie | Prejav v súčasnom systéme | Možná štrukturálna zmena |
|---|---|---|
| Spoločná hranica vydávania | Nesúvisiace zmeny sa musia nasadzovať spoločne | Oddelenie modulov alebo jednotiek nasadenia |
| Zdieľané vlastníctvo dát | Viacero komponentov zapisuje do rovnakých záznamov | Priradenie jedného vlastníka a explicitných rozhraní |
| Kaskádové zlyhanie | Zlyhanie závislosti blokuje viacero workflowov | Pridanie izolácie alebo asynchrónnych hraníc |
| Skrytá hranica domény | Biznis pravidlá sú duplikované naprieč modulmi | Zoskupenie pravidiel v rámci ohraničeného kontextu (bounded context) |
Čo musí zmena architektúry definovať
Prehodnotenie hraníc vytvára migračnú prácu na oboch stranách každej z nich. Súčasný systém má volajúcich, dáta, prevádzkové úlohy a chybové stavy, ktoré musia naďalej fungovať, kým sa presúvajú zodpovednosti.
Plán by mal definovať:
- Obmedzenie: Pomenujte súčasnú štruktúru, ktorá blokuje požadovanú zmenu.
- Novú zodpovednosť: Uveďte, ktorý komponent bude následne vlastniť správanie a dáta.
- Prechodnú hranicu: Vysvetlite, ako staré a nové časti komunikujú počas migrácie.
- Metódu overenia: Porovnajte biznisové výsledky, vplyv na dáta a prevádzkové správanie.
- Podmienku vyradenia: Uveďte zoznam závislostí, ktoré musia zaniknúť pred odstránením starého kódu.
Pomôcť identifikovať ucelené zodpovednosti môže ohraničený kontext (bounded context), ale implementovaná hranica musí stále odrážať reálne workflowy a dáta.
Ako sa rearchitektúra líši od presunu platformy
Rehosting aplikácií mení miesto, kde aplikácia beží. Replatforming aplikácií vykonáva ohraničené úpravy s cieľom použiť inú platformu. Rearchitektúra mení hlavné interné alebo distribuované vzťahy v systéme.
Program ich môže kombinovať, ale oddelenie týchto rozhodnutí zlepšuje plánovanie. Infraštruktúrne úlohy, úpravy kompatibility a štrukturálna migrácia majú odlišné riziká a dôkazy. Ich spojenie pod jedno označenie sťažuje identifikáciu toho, ktorá zmena spôsobila zlyhanie alebo zdržanie.
Zachovanie prevádzkyschopnosti počas prechodu
K zmene architektúry zvyčajne dochádza za plného behu, kým je existujúci systém zodpovedný za reálnu prevádzku. Prechodné stavy preto potrebujú jasné pravidlá smerovania, autority dát, monitorovania a vrátenia zmien. Diagram cieľového stavu je neúplný bez postupnosti krokov, ktoré k nemu vedú.
Inkrementálne techniky, ako napríklad vyčlenenie služby (service extraction) alebo izolačná vrstva medzi systémami (Anti-Corruption Layer), môžu podporiť túto postupnosť, ak súčasný systém umožňuje stabilnú hranicu. Praktickým testom je, či každá fáza dokáže bežať, byť monitorovaná a v prípade potreby vrátená späť. To mení rearchitektúru na sériu riadených presunov zodpovednosti v rámci širšej práce spojenej s migráciou staršieho kódu.