Návod

Modernizace zastaralého softwaru bez kompletního přepisu

Starý systém, na který si všichni stěžují, nemusíte strhnout a postavit od nuly. Existuje klidnější a bezpečnější cesta — a udrží firmu v chodu, zatímco opravíte to, co skutečně bolí.

Have a nice dayHave a nice day13 min čtení
Modernizace zastaralého softwaru bez kompletního přepisu

Téměř každá zavedená firma jeden má: software, kterým všichni tiše pohrdají. Je pomalý, je ošklivý, polovina týmu zná obezličku na chybu, kterou nikdy nikdo neopravil, a jediný člověk, který mu rozuměl, odešel v roce 2019. Instinkt je vždycky stejný — spálit to a postavit nové. A právě tento instinkt bývá nejčastěji přesně tím, jak dobré firmy přijdou o rok a malé jmění úplně zbytečně.

Viděl jsem velký přepis dopadnout špatně tolikrát, že na něj mám už reflex. Zakladatel mi ukáže svůj skřípající objednávkový systém nebo prastarý plánovací nástroj, povzdechne si a řekne nějakou variantu věty „prostě potřebujeme vyměnit celé to.“ A možná že jednou opravdu budete. Jenže kompletní přepis — vytrhnout starý systém, postavit vedle něj zbrusu nový a přepnout vypínač — je jeden z nejrizikovějších tahů v celém softwaru. Je drahý, trvá mnohem déle, než se slibuje, a po celou tu dobu letíte naslepo a doufáte, že nová věc pokryje každý podivný okrajový případ, který ta stará patnáct let tiše zvládala.

Dobrá zpráva je, že kompletní přepis téměř nikdy není jediná možnost a málokdy ta nejlepší. Existuje klidnější způsob modernizace — inkrementální, vratný a šetrný k firmě, která musí dál vydělávat, zatímco pracujete. Tohle je průvodce po té cestě: jak poznat, co opravdu potřebuje opravit, jak vyměnit bolavé části, aniž byste položili celý systém, a jak poznat, kdy je kompletní přepis skutečně tou správnou volbou.

Proč je velký přepis tak lákavý — a tak nebezpečný

Kompletní přepis je svůdný, protože slibuje čistý štít. Žádný legacy nepořádek, žádné kompromisy, čerstvá kódová základna postavená správně moderními nástroji. Na tabuli to vypadá samozřejmě. Ve skutečnosti se upisujete k tomu, že znovu postavíte roky nahromaděné obchodní logiky — z větší části nezdokumentované, část žijící jen v hlavách lidí, kteří odešli — zatímco hodiny běží a faktury přicházejí.

Hlubší past je problém paralelního vesmíru. Po měsíce nebo roky, co stavba náhrady trvá, máte dva systémy: starý, který musí dál řídit firmu, a nový, který ještě není hotový. Každou změnu, kterou firma potřebuje, musíte udělat dvakrát, jinak nový systém zaostane za realitou ještě dřív, než vůbec spustí. Týmy se vyčerpají udržováním obou naživu. A protože nikomu není dovoleno přepnout, dokud nový systém neumí všechno, není žádné rané vítězství, žádná zpětná vazba, žádný důkaz, že to funguje — jen dlouhé, úzkostné čekání na jediný obrovský den spuštění, všechno nebo nic.

Přepis po vás chce, abyste vsadili firmu na jediný den spuštění, roky vzdálený, na systém, který ještě nikdo nepoužil. To není plán — to je sázka.
co říkám každému, kdo sahá po tlačítku reset

Existuje tu jedna dobře známá oborová moudrost, a je zasloužená: druhý systém, velkolepý přepis, mívá ve zvyku trvat třikrát déle, než se odhadlo, a dorazit s méně funkcemi než to, co nahrazuje. Odhad není špatný proto, že by byli lidé nedbalí. Je špatný proto, že na začátku nikdo nevidí všechny ty drobnosti, které starý systém tiše dělá správně.

Starý dřevěný most s několika obnošenými prkny, jež se jedno po druhém nahrazují čerstvými novými, zatímco po něm lidé dál přecházejí, ilustrováno v teplém plochém redakčním stylu
Dobrá modernizace vypadá jako výměna jednoho prkna po druhém — most zůstává po celou dobu otevřený.

Co vlastně znamená „legacy“ (nejde o stáří)

Slovem legacy házíme, jako by znamenalo prostě staré. Neznamená. Spousta softwaru, který běží deset let, je naprosto v pořádku — nudný, stabilní, zaplacený, dělá svou práci. Samotné stáří není důvod se čehokoli dotýkat. Nejdražší chyba v celém tomhle oboru je modernizovat něco, co tiše fungovalo, jen proto, že to vypadalo staromódně.

Software si nálepku legacy vyslouží, když vám aktivně stojí v cestě. Když ho nemůžete bezpečně změnit, protože mu nikdo plně nerozumí. Když se nedokáže propojit s nástroji, na nichž teď závisíte. Když je jediný člověk tím jediným, kdo ho udrží naživu. Když je tak pomalý nebo křehký, že kolem něj tým vybudoval celý folklor obezliček. To je ta pravá definice — ne rok, kdy byl napsán, ale náklad, který vám ukládá dnes, a riziko, jež s sebou nese do zítřka.

Než se čehokoli dotknete, stanovte diagnózu

Než se přepíše jediný řádek, potřebujete poctivou mapu toho, kde bolest doopravdy sídlí. Většinou je systém, který všichni nesnášejí, z 80 % v pořádku. Potíž je soustředěná na pár konkrétních míst — jedna pomalá obrazovka, jedna rozbitá integrace, jeden pracovní postup, který nutí zadávat data dvakrát — a právě těch pár míst plodí téměř všechny stížnosti. Najděte je a máte celý svůj projekt.

Cesta, jak je najít, není nejprve technický audit — je to rozhovor. Sedněte si s lidmi, kteří tu věc používají každý den, a zeptejte se jich, kde to bolí. Kde čekají? Co přepisují? Čemu se vyhýbají, protože je to bolestivé? Kde si vedou soukromou tabulku, aby obešli oficiální systém? Tyhle obezličky jsou zlato: každá z nich je přesný rentgen problému, který stojí za opravu.

  • Obrazovky a kroky, na něž si lidé stěžují nejvíc — ne teoreticky, ale ve své skutečné každodenní práci.
  • Každé místo, kde se data zadávají dvakrát, protože spolu dva systémy nemluví.
  • Integrace, které se rozbily, nebo nikdy neexistovaly, a nutí k ručnímu kopírování mezi nástroji.
  • Cokoli, co umí ovládat nebo opravit jen jeden člověk — vaše jediná místa selhání.
  • Části, které jsou opravdu v pořádku, abyste je ochránili a nechali být.
  • Co bude firma potřebovat příští rok a do čeho současný systém prostě nedokáže dorůst.

Když to uděláte poctivě, projekt se obvykle smrskne. Majitel, který přišel se slovy „vyměňte všechno“, odchází s poznáním, že potřebuje opravit tři věci. To není zklamání — je to úleva. Tři opravitelné věci jsou projekt, který stihnete dokončit ještě toto čtvrtletí. Kompletní výměna je rok, který možná nepřežijete.

Strangler přístup: vyměňte to po jednom kousku

Pro bezpečné provedení existuje vzor a má trochu ponurý, ale zapamatovatelný název: strangler přístup, podle škrtícího fíkovníku — popínavé rostliny, která obrůstá strom a postupně přebírá jeho strukturu, až nakonec nová zeleň stojí sama o sobě a starý kmen je pryč. Aplikováno na software je ta myšlenka nádherně praktická: starý systém nevyměníte jediným hrdinským přehozem. Pěstujete kolem něj ten nový, po jednom kousku, dokud ze starého nezbude nic, co by kdokoli potřeboval.

V praxi to funguje takhle. Vyberete jeden bolavý kousek — řekněme fakturační modul, který všichni nesnášejí. Postavíte moderní náhradu jen pro ten jeden kousek. Fakturaci nasměrujete na nový modul, zatímco všechno ostatní běží dál na starém systému, nedotčeně. Chvíli to sledujete. Když je to spolehlivé, ta část starého systému utichne a vy se pustíte do dalšího kousku. Starý systém se zmenšuje postupně, jako svíčka, místo aby byl sražen naráz.

Diagram zobrazující velkou šedou krabici legacy softwaru, kterou postupně nahrazují menší jasné moderní moduly propojené směrovací vrstvou, po jedné sekci, v čistém redakčním infografickém stylu
Každý nový modul přebírá jednu úlohu; starý systém se zmenšuje, až v něm nezbude nic důležitého.

Co tohle dělá mnohem bezpečnějším než přepis, je to, že každý krok je malý, živý a vratný. Nikdy neletíte naslepo. Každý nový kousek se rychle dostane do reálného použití, takže rychle zjistíte, jestli vážně funguje. Když se něco pokazí, riskovali jste jen jeden modul, ne celou firmu — a obvykle se můžete vrátit na starou cestu, než to opravíte. Vítězství sklízíte cestou, místo jediného děsivého spuštění na konci. A firma celou tu dobu normálně běží dál.

Jak ten rytmus ve skutečnosti vypadá

  1. 1
    Vyberte nejbolavější, nejsamostatnější kousek
    Chcete velkou bolest a čisté okraje — modul, který hodně bolí a nemá prsty ve všem ostatním. To je váš první cíl.
  2. 2
    Postavte tenkou vrstvu před starý systém
    Malá směrovací vrstva rozhoduje, které požadavky jdou na starý systém a které na nový kousek. To je ten spoj, který umožní všechno ostatní.
  3. 3
    Postavte a spusťte jen ten jeden kousek
    Vyměňte jeden modul, dejte ho do reálných rukou a nasměrujte na něj jen tu výseč práce. Týdny, ne roky — a zbytek systému se ani nehnul.
  4. 4
    Stabilizujte, pak přejděte na další kousek
    Jakmile je novému modulu důvěřováno, odpovídající část starého systému usne. Opakujte s dalším bolavým kouskem a učte se za pochodu.
  5. 5
    Vyřaďte starý systém, až bude prázdný
    Nakonec legacy systém nedělá nic, na co by se kdokoli spoléhal. Teprve pak ho vypnete — tiše, bez dramatu, protože vše důležité se už dávno přesunulo.

Všimněte si, čím se to liší od přepisu: není tu jediný den spuštění, kterého by se bát. Není tu paralelní vesmír k údržbě. Nový systém je v provozu od třetího týdne, vydělává si na sebe a učí vás věci, místo aby čekal v laboratoři na spuštění, které se pořád odkládá.

Někdy ho ani nemusíte vyměňovat

Než cokoli vyměníte, stojí za to se zeptat, jestli starý systém potřebuje výměnu, nebo jen potřebuje přestat být ostrovem. Překvapivá řada problémů typu „potřebujeme nový systém“ jsou ve skutečnosti problémy typu „naše systémy spolu nemluví“. Starý software je ve své práci dobrý — jen sedí v silu a nutí lidi přenášet data dovnitř a ven ručně.

V takových případech není nejlevnější a nejrychlejší řešení nový systém. Je to most. Starý software obalíte propojením — integrací, která mu umožní automaticky vyměňovat data s vašimi ostatními nástroji — a navrch moderní vrstvou pro části, kterých se lidé skutečně dotýkají. Zastaralý motor dál bzučí pod tím; tým dostane čistý povrch a konec kopírování. Není to okázalé, ale často je to nejvyšší návratnost na euro z celé snahy.

PřístupRizikoDoba k hodnotěKdy se hodí
Integrovat / propojitNízkéDny–týdnySystém funguje, ale žije v silu
Nové rozhraní na starém motoruNízkéTýdnyLogika je v pořádku, bolí uživatelská zkušenost
Vyměnit kousek po kouskuStředníTýdny na kousekKonkrétní moduly vás brzdí
Kompletní přestavbaVysokéMěsíce+Základ vás opravdu nedokáže nést dál
Čtyři způsoby modernizace, od nejlehčího dotyku po nejtěžší. Začněte nahoře a sestupujte, jen když musíte.

Kdy je kompletní přepis skutečně tou správnou volbou

Celého toho průvodce vás odrazuji od velkého přepisu, tak buďme féroví: někdy je opravdu odpovědí. Existují základy tak prohnilé, že je nezachrání žádné záplatování, přemosťování ani výměna kousek po kousku, a předstírat opak jen odkládá nevyhnutelné, zatímco utrácíte peníze za podpírání mrtvoly.

Poctivé příznaky jsou konkrétní. Technologie, na níž systém stojí, je mrtvá nebo umírá — žádná podpora, žádné bezpečnostní aktualizace, nikdo nezbyl, kdo by na ní uměl pracovat. Firma se změnila tak zásadně, že starý model už realitě vůbec neodpovídá. Nebo je systém tak zamotaný, že i malé změny pravidelně rozbíjejí věci na nesouvisejících místech, což obvykle znamená, že tu nejsou žádné čisté spoje, kde by se strangler přístup vůbec dal udělat. Když jsou dvě nebo tři z těchto pravdy zároveň, inkrementální práce přestává být bezpečnější volbou.

A tady je tichá odměna za to, že nejdřív uděláte inkrementální práci, i kdybyste nakonec přece jen přestavovali: než se tam dostanete, budete systému rozumět mnohem lépe než na začátku. Každý modul, který jste vyměnili, vás naučil něco, co původní autoři nikdy nezapsali. Přepis poučený touto znalostí je úplně jiné, mnohem bezpečnější zvíře než ten spuštěný na optimismu prvního dne.

Uvolněný majitel malé firmy a vývojář spolu u stolu procházejí jednoduchý plán, klidná a sebejistá nálada, ilustrováno v teplém plochém redakčním stylu
Nejlepší plány modernizace působí nudně záměrně — malé kroky, vždy cesta zpět, firma nikdy v ohrožení.

Část, kterou nikdo nezmiňuje: je to hlavně o lidech

Tady je něco, co technické příručky přeskakují. Nejtěžší část modernizace starého softwaru obvykle není kód — jsou to lidé, kteří strávili roky tím, že se mu přizpůsobovali. Znají jeho zvláštnosti. Mají svalovou paměť na jeho podivné zkratky. Nový modul, objektivně lepší, může první dva týdny stejně působit hůř, prostě proto, že je neznámý. Když to budete ignorovat, může selhat i dokonalá technická migrace.

Inkrementální přístup pomáhá i tady, skoro mimochodem. Protože změna přichází po jednom malém kousku, lidé ji vstřebávají postupně, místo aby se měli znovu naučit všechno během jediného pondělního rána. Zapojte každodenní uživatele brzy. Nechte je utvářet náhradu dřív, než je hotová. Tým, který pomáhal navrhnout novou fakturační obrazovku, ji bude prosazovat; tým, kterému spadla na hlavu, ji bude nesnášet, i kdyby byla totožná. Modernizace je projekt řízení změn převlečený za software.

Máte systém, který se všichni pořád chystají vyměnit?

Než se upíšete přepisu, vyplatí se jeden poctivý rozhovor o tom, co opravdu potřebuje opravit. Pomůžeme vám zmapovat, kde bolest doopravdy sídlí, a najít nejlehčí cestu, která ji vyřeší — často o dost menší, než byste čekali.

Podívejte se, jak přistupujeme k softwaru na míru

Časté otázky

Je levnější starý software přepsat, nebo modernizovat?
Inkrementální modernizace je v praxi téměř vždy levnější, protože kompletní přepis mívá sklon výrazně překračovat rozpočet — musí znovu postavit roky nezdokumentované obchodní logiky, než přinese jakoukoli hodnotu. Výměna systému kousek po kousku, nebo jen jeho propojení a osvěžení, vám dá výsledky v týdnech a umožní přestat utrácet ve chvíli, kdy bolest pomine. Přepis vyhraje na nákladech jen tehdy, když je základ tak rozbitý, že by ho záplatovat stálo víc než začít znovu.
Co je strangler přístup jednoduše řečeno?
Je to způsob, jak vyměnit starý systém postupně místo naráz. Postavíte moderní verzi jednoho bolavého kousku, nasměrujete na ni jen tu práci a všechno ostatní necháte běžet na starém systému. Když je ten kousek spolehlivý, přejdete na další. Časem starý systém dělá čím dál méně, až je prázdný a vy ho můžete vypnout — bez jakéhokoli děsivého jediného dne spuštění po cestě.
Můžeme udržet firmu v chodu i během modernizace?
Ano — přesně o tom celé to inkrementální dělání je. Protože vyměňujete po jednom malém kousku a starý systém pod tím držíte živý, běžný provoz pokračuje po celou dobu. Každá změna je dost malá na to, aby se otestovala v reálném použití a v případě potřeby vrátila zpět. Nikdy se nedostanete do okamžiku, kdy firma závisí na netestovaném přepnutí všechno nebo nic.
Jak poznáme, které části modernizovat nejdřív?
Mluvte s lidmi, kteří systém používají každý den, a hledejte jejich obezličky — soukromé tabulky, ruční kopírování, „tu část dělám prostě ručně.“ Každá obezlička značí skutečnou, nákladnou mezeru. Seřaďte je podle toho, jak často koušou, a vrchol toho seznamu je místo, kde začnete. Obvykle je to hrstka konkrétních míst, ne celý systém.
Kdy je kompletní přepis skutečně tou správnou volbou?
Když je základní technologie mrtvá nebo bez podpory, když se firma změnila tak, že starý model už vůbec nesedí, nebo když je systém tak zamotaný, že i malé změny rozbíjejí nesouvisející věci — což také znamená, že tu nejsou žádné čisté spoje pro výměnu kousek po kousku. Když jsou dvě nebo tři z těchto pravdy zároveň, stává se opatrná, postupná přestavba bezpečnější volbou. I tak necháte starý systém běžet a uživatele přesouváte v malých skupinách, nikdy jediným velkým skokem.
Have a nice day
Have a nice day
Redakce

Have a nice day je softwarové studio, které pomáhá malým a středním firmám s digitalizací — automatizace, umělá inteligence a software na míru, který funguje v každodenním provozu, ne jen na slidech.

Související služby