Aplikace a systémy
Přepsat celý starý systém od nuly zní jako začátek s čistým štítem, jenže starý kód v sobě nese pravidla a opravy nasbírané za roky, které často nejsou nikde zapsané. Rozebíráme možnosti od stabilizace po postupnou náhradu, práci s daty během přechodu, pořadí kroků i rizika, která se dají měřit.
Řada firem, které fungují delší dobu, má systém, o kterém se na poradách mluví opatrně. Běží na něm fakturace, sklad nebo výroba, upravovalo ho mnoho lidí, do detailu mu rozumí málokdo a každá změna je pomalá a drahá.
Když se o něm konečně rozhoduje, na stole bývá návrh: přepíšeme to celé od nuly. Zní to lákavě, ale je to riskantní: starý kód je archivem obchodních pravidel, výjimek a oprav nasbíraných za roky, které často nejsou nikde zapsané, a kdo ho zahodí najednou, zahodí i tyto znalosti. Modernizace starého systému má přitom víc podob než „nechat to být“ nebo „přepsat“ a u velkého kritického systému bývá bezpečnější nahrazovat ho po částech za plného provozu.
Michael Feathers, autor knihy Working Effectively with Legacy Code, definuje legacy kód jednoduše jako kód bez testů. Legacy systém tedy nepoznáte podle stáří, ale podle toho, zda se dá bezpečně měnit. Typické příznaky:
To všechno jsou podoby technického dluhu, který jako princip celé firmy rozebírá článek Firma je jeden produkt.
Týká se to i státu. Americký kontrolní úřad GAO ve zprávě z července 2025 označil 11 nejkritičtějších federálních systémů, které potřebují modernizaci. Osm z nich používá zastaralé jazyky jako COBOL a assembler a sedm podle agentur běží se známými zranitelnostmi, které bez modernizace nelze odstranit.
Big bang rewrite znamená postavit nový systém od nuly a najednou na něj přepnout celou firmu. Slibuje nový začátek s čistým štítem a moderní technologii. Joel Spolsky v eseji z roku 2000 přidává méně lichotivý důvod: programátoři považují starý kód za nepořádek hlavně proto, že číst kód je těžší než ho psát. Přepsání kódu od nuly označil za nejhorší strategickou chybu, jakou může softwarová firma udělat. Jako příklad uvedl Netscape: první veřejná beta verze 6.0 vyšla téměř tři roky po verzi 4.0 a tržní podíl firmy mezitím prudce klesal.
Je to vyhraněný názor, konkrétní mechanismy selhání se ale dají pojmenovat:
Název strangler fig pattern vychází z metafory Martina Fowlera: v roce 2001 viděl v pralesích Queenslandu škrtící fíkovníky, které postupně obrostou hostitelský strom, až ho nahradí. Nový systém podobně nevzniká místo starého, ale vedle něj. Přebírá funkce jednu po druhé, dokud nebude možné starý systém vypnout.
Dokumentace Microsoftu popisuje mechanismus: mezi uživatele a oba systémy se vloží fasáda, tedy prostředník, který požadavky postupně přesměrovává ze starého systému do nového, například nejprve jen výpočet cenových nabídek. Uživatelé o migraci nevědí. Starý systém podle Featherse zůstává jako záloha pro případ problémů.
Fowler přiznává i cenu tohoto přístupu: přechodnou architekturu pro souběžný chod obou systémů, která po dokončení zanikne. Nižší riziko a dřívější přínos ji podle něj převáží, protože vyměňované části jsou malé. Varuje však, že bez změny kultury a vedení skončí i nový systém v podobném nepořádku.
Kód lze vyměňovat po kouscích, data ale během přechodu potřebují oba systémy současně. Migrace dat, tedy přesun údajů ze staré struktury do nové, není obyčejné kopírování. Výzkumníci z Trinity College Dublin upozorňují, že data ze starých systémů bývají nekvalitní, je třeba je namapovat na novou strukturu a často také vyčistit. V praxi jde například o duplicitní záznamy, pole používaná k jinému účelu a hodnoty, kterým rozumí jen starý kód.
Microsoft doporučuje oddělovat data postupně, po jednotlivých oblastech: novou databázi naplnit úvodním přenosem, další změny přenášet technikou change data capture, tedy zachytáváním změn ve staré databázi, před přepnutím ověřit shodu a staré objekty odstranit až po validaci nového systému. Do té doby je návrat možný, potom je výrazně náročnější a rizikovější.
Pro každý typ údajů musí být během přechodu jasné, který systém je jediným zdrojem pravdy. Pokud lze adresu zákazníka změnit v obou systémech, hrozí, že každý bude mít jinou. Náš praktický závěr: každý konkrétní údaj ať lidé mění vždy jen v jednom systému a ostatní systémy ho z něj pouze přebírají. Širší roli dat se věnuje článek Vaše data jsou náskok.
Feathers upozorňuje, že lidé nosí v hlavě představu o tom, co systém dělá, a zapomínají se podívat, co dělá ve skutečnosti. Pomáhají tři zdroje:
Autoři z Thoughtworks popisují tým, který v ostrém provozu testoval náhradu integračního middlewaru, tedy softwaru propojujícího ostatní systémy. Krátce nato přestaly sedět kritické manažerské reporty. Po dlouhém pátrání se ukázalo, že se databáze middlewaru replikovala do datového skladu, ze kterého reporty čerpaly. Pomohl až dočasný mechanismus, který do skladu doplňoval chybějící údaje.
Migrace by neměla být prvním krokem. I tady používáme pořadí Remove, Simplify, Automate, Augment: nejprve odstranit, pak zjednodušit a teprve potom automatizovat a rozšiřovat. Autoři z Thoughtworks upozorňují, že většina starých systémů časem nabobtná funkcemi, které nikdo nepoužívá, a odvolávají se na zprávu Standish Group z roku 2014, podle které jde o 50 % funkcí. Pro konkrétní systém je to jen orientační údaj, skutečnost ukážou logy. Zrušenou funkci není třeba analyzovat, migrovat ani testovat a obezličky, které obcházejí omezení starého systému, se při přenosu vyplatí zjednodušit, ne kopírovat.
První nahrazovaná část by měla firmu citelně bolet, například brzdit obchod, a zároveň být relativně oddělená od jádra. Feathers radí soustředit se na části, které porostou a zároveň dělají potíže, a pro odklonění požadavků najít švy, jak nazývá místa, kde lze jedno chování nahradit jiným.
Postupná náhrada riziko neodstraňuje, rozděluje ho na menší a měřitelné části. Opačný přístup ilustruje rozhodnutí britského regulátora FCA z 20. 12. 2022. Banka TSB o víkendu 20. až 22. dubna 2018 přesunula většinu provozu a zákaznických dat na novou, dosud neověřenou platformu. Následovaly vážné problémy s internetovým a mobilním bankovnictvím i s platbami kartou a do 7. dubna 2019 banka obdržela 225 492 stížností. FCA konstatovala selhání v plánování, testování, řízení rizik i v dohledu nad externím dodavatelem, upozornila, že po spuštění se banka prakticky nemohla vrátit na původní platformu, a uložila pokutu 29,75 mil. GBP.
Bezpečnější cestu popsal Vicent Martí z GitHubu v roce 2015. Tým nahrazoval jednu z nejkritičtějších částí kódu přímo v ostrém provozu: starý i nový kód běžely souběžně, výsledky se porovnávaly a uživatel vždy dostal výsledek starého kódu. Experiment začal na 1 % požadavků a postupně se rozšiřoval, až 24 hodin běžel na 100 % požadavků bez neshod. Porovnávání navíc odhalilo 2 vážné chyby v původním řešení, kterých si roky nikdo nevšiml.
Co tedy sledovat:
Úplné přepsání není vždy chyba. Feathers ho popisuje jako obchodní rozhodnutí, které se řídí návratností, sám ale nejprve zkouší refaktoring a připomíná, že celý systém většinou přepisovat není nutné a cílené přepisy jednotlivých částí bývají velmi účinné. Microsoft uvádí, kdy postupná náhrada vhodná není: systém je malý a dá se snadno nahradit celý, ke zdrojovému kódu není přístup nebo je třeba původní řešení rychle vyřadit. Autoři z Thoughtworks připouštějí věrnou kopii starých funkcí u systémů s dobře známou specifikací, kde daný vstup musí dát daný výstup, takové případy však považují za výjimečné.
Náš názor: přepis je obhajitelný i tehdy, když se byznys změnil natolik, že starý systém podporuje způsob práce, který firma opouští. Pak ale jde o nový produkt s novým zadáním, ne o kopii starých funkcí.
Modernizace starého systému proto nezačíná výběrem technologie, ale pochopením, jakou práci systém pro firmu dělá, které jeho části se skutečně používají a kde přesně vzniká bolest. Kdo tuto diagnózu přeskočí, vybírá mezi přepisem a refaktoringem naslepo.
Prototyp zdarma
Popište nám svůj projekt a do pár dnů držíte v rukou funkční prototyp postavený na vašich reálných datech. Stavíme ho na vlastní náklady: přesvědčit vás má práce, ne prezentace.
Bez platby a bez závazku. Platíte, až když se rozhodnete pokračovat.
Bezplatná konzultace
Vyberte si termín a řekněte nám, jak firma funguje dnes. Ukážeme vám tři místa, kde vám nejvíc utíká čas, a co z nich umíme převzít jako první. Bez prezentací a bez závazku.

Juro
jur0.com
Web, aplikace, AI systém nebo automatizace. Popište ve dvou větách, co řešíte, a do 24 hodin se vám ozvu s konkrétním návrhem. Postavíme cokoli, co firmě šetří čas.
Nebo přímo: WhatsApp · juro@jur0.com