Pillar page
Modernizace legacy systémů
Inkrementální refaktoring monolitu na mikroslužby, migrace z přestárlých technologií do moderních stacků, přesun do cloudu — bez výpadku byznysu, s plánem rollback a kompletním audit trailem.
Každá firma má nějaký legacy systém. Některé jich mají několik. Účetní aplikace z roku 2008, která nějak funguje. CRM napsané konzultanty, na které si už nikdo nepamatuje. Sklad v Accessu. Každý z nich bude jednoho dne potřeba vyměnit — otázka nezní zda, ale kdy a jak.
Modernizace legacy systémů patří mezi nejnáročnější typy IT projektů. Vyžaduje vyvažování tří sil: udržení obchodní kontinuity (systém musí celou dobu fungovat), zavádění moderních technologií (mikroslužby, cloud, AI) a kontroly rizika (každý refaktoring může rozbít něco, co fungovalo léta).
Proč nestačí „přepsat od nuly"?
Z naší zkušenosti je 9 z 10 úspěšných modernizací inkrementální refaktoring, ne rewrite. Rewrite lákají konceptuální jednoduchostí („začneme s čistým štítem"), ale v praxi mají tři fundamentální problémy:
- Neviditelná byznys logika. Starý systém obsahuje roky obchodních pravidel — speciální podmínky pro největší klienty, daňové výjimky pro konkrétní obory, obejití regulací z roku 2015. Většina není zdokumentována. Rewrite musí všechna pravidla odtvořit z paměti lidí nebo z analýzy kódu.
- Duplikace práce. Během psaní nového systému byznys nadále požaduje změny ve starém (regulace, noví klienti, drobné chyby). Tým buď duplikuje práci (změna na dvou místech), nebo zmrazí starý systém (obchodní riziko).
- Big bang deployment. Po roce práce je nový systém „skoro hotový". Přepnutí všech uživatelů za jednu noc generuje monumentální riziko. Každý nečekaný problém znamená návrat ke starému systému, ztrátu morálky týmu, podlomení důvěry byznysu.
Inkrementální refaktoring (nejčastěji podle vzoru Strangler Fig) řeší všechny tři: byznys logika odkrývána postupně, jeden zdroj pravdy pro každou entitu, deployment ve fázích s feature flagy.
Šest vzorů modernizace
Každý z nich řeší konkrétní riziko. Ve většině projektů kombinujeme několik a volíme vzor podle konkrétního modulu.
Strangler Fig
Postupné „obrůstání" starého systému novými komponentami. Starý kód stále funguje, ale každá nová funkcionalita směřuje do nové mikroslužby a stávající moduly jsou vyměňovány jeden po druhém. Po 12-24 měsících je starý monolit vypnut.
Anti-corruption layer
Adaptér chránící nový kód před zvláštnostmi starého systému (nečitelné názvy polí, divné formáty dat, nekonzistentní typy). Veškerá „ošklivá" logika izolována na jednom místě — nový kód pracuje s čistým modelem domény.
Database refactoring
Vzory z knihy Refactoring Databases (Ambler/Sadalage): expand-and-contract pro migraci schématu, validace dat před smazáním starých sloupců, paralelní udržování obou schémat během migrace aplikace.
Branch by abstraction
Zavedení abstrakční vrstvy kolem staré komponenty, paralelní implementace nové komponenty, postupné přepínání z 0 % na 100 % provozu (feature flag). Bez „big bang" deploymentu.
Shadow mode
Nový kód běží paralelně se starým — oba zpracovávají stejné požadavky, ale pouze výsledky starého směřují k uživateli. Výsledky porovnávány offline. Po potvrzení shody (typicky 2-4 týdny) přepínáme provoz na nový kód.
Event sourcing pro migraci
Nahráváme stream obchodních událostí ze starého systému a přehráváme jej v novém. Umožňuje předběžnou validaci nové architektury bez produkčního rizika a návrat k libovolnému historickému stavu.
Typický harmonogram modernizace
Pro střední systém (monolit ~200 tis. řádků kódu, 5-10 obchodních modulů):
- Měsíc 1: Discovery a dokumentace. Reverse engineering architektury, mapování závislostí, identifikace datových toků, dokumentace obchodních procesů ve spolupráci s byznysem.
- Měsíc 2: Cílová architektura a pilot. Návrh nové architektury, výběr technologií, pilot na nejjednodušším modulu (proof of concept). První validace přístupu.
- Měsíce 3-4: Vyčlenění prvního produkčního modulu. Strangler Fig pattern, shadow mode po dobu 2-3 týdnů, přepnutí provozu, hypercare. První reálná obchodní hodnota.
- Měsíce 5-12: Iterativní vyčleňování dalších modulů. Každý v cyklu 4-6 týdnů: refaktoring → testy → shadow → produkce → hypercare. Kontinuální zlepšování procesu, redukce času na další moduly.
- Měsíce 12-18: Migrace dat a vyřazení monolitu. Když jsou všechny kritické moduly vyčleněny, finalizujeme migraci historických dat, vypínáme starý systém, archivujeme. Slavíme.
Starý systém vs. zmodernizovaný
| Aspekt | Legacy systém (typicky) | Po modernizaci |
|---|---|---|
| Čas nasazení nové funkce | 4-8 týdnů (vysoké riziko regrese) | 3-7 dní (automatické testy minimalizují riziko) |
| Pokrytí testy | 5-15 % (nebo žádné) | >80 %, v CI/CD pipelinu |
| Dostupnost vývojářů | Nízká (přestárlá technologie) | Vysoká (populární, moderní stacky) |
| Bezpečnost | Staré knihovny s CVE zranitelnostmi | Skenování OWASP, gitleaks, automatické aktualizace |
| Škálování | Vertikální (více prostředků pro monolit) | Horizontální (škálování konkrétních mikroslužeb) |
| Pozorovatelnost | Logy v souborech, žádné metriky | Prometheus + Grafana + Sentry + SIEM |
| Compliance (GDPR, EU AI Act, ISO 27001) | Náročná, nákladná k prokázání | Zabudovaná v architektuře, připravená k auditu |
Šest typických rizik — a jak je adresujeme
Riziko: Chybějící testy v legacy systému
Mitigace: Nejprve stavíme charakterizační testy (capture tests) — nahráváme současné chování systému na základě produkčních logů a záznamů provozu. Teprve poté začínáme refaktoring, s testy jako pojistkou.
Riziko: Znalosti soustředěné v jedné osobě („truck factor 1")
Mitigace: Transfer znalostí začíná v prvním týdnu projektu. Všechny schůzky s osobou znající systém jsou nahrávány a transkribovány, klíčové procesy dokumentovány, architektonická rozhodnutí odůvodněna. Po projektu celý tým systému rozumí.
Riziko: Dočasné zpomalení týmu
Mitigace: V prvních 2-3 měsících tým udržuje starý systém + staví nový. Přirozené zpomalení tempa změn. Mitigujeme to: prioritou pro změny směřující jen do nového systému, freeze pro nízkopriorit změn ve starém kódu.
Riziko: Migrace dat
Mitigace: Každá migrace dat má tři fáze: dry-run (na kopii produkce), staging (na testovacím prostředí s reálným objemem dat), produkce (v servisním okně nebo inkrementálně). Plán rollback připraven před startem.
Riziko: Organizační odpor
Mitigace: Komunikace s byznysem od prvního dne: proč modernizovat, co se pro uživatele změní, jaký harmonogram, jak měříme úspěch. První iterace zvolena tak, aby rychle ukázala hmatatelnou hodnotu (např. nové UI nebo rychlejší report).
Riziko: Podcenění nákladu
Mitigace: Discovery (1-2 týdny) před odhadem ceny projektu. 2-3 týdenní iterace s konkrétními dodávanými výstupy — kurz lze snadněji korigovat než v dlouhém projektu typu „všechno najednou". Rozpočet s rezervou 20-30 % na nepředvídatelnosti.
Často kladené otázky
Co je legacy systém?
Proč modernizovat, když systém funguje?
Není snazší napsat všechno od nuly?
Vyžaduje modernizace výpadek byznysu?
Jak dlouho trvá typická modernizace?
Z jakých technologií nejčastěji migrujeme?
Co se stávajícími integracemi s jinými systémy?
Jak omezujete obchodní riziko?
Co s dokumentací systému, která neexistuje?
Jaké jsou náklady modernizace ve srovnání s údržbou starého systému?
Začněme auditem
Týdenní technický audit: mapování současného stavu, identifikace nejnaléhavějších oblastí modernizace, etapový plán s konkrétními obchodními efekty v první iteraci.