Modernizácia zastaraného softvéru bez kompletného prepisu
Starý systém, na ktorý sa všetci sťažujú, sa nemusí zbúrať a postaviť odznova. Existuje pokojnejšia a bezpečnejšia cesta — a udrží podnik v chode, kým opravíte to, čo skutočne bolí.

Takmer každá zavedená firma ho má: kus softvéru, ktorý všetci potichu neznášajú. Je pomalý, je škaredý, polovica tímu pozná obchádzku pre chybu, ktorú nikto nikdy neopravil, a jediný človek, ktorý mu rozumel, odišiel v roku 2019. Inštinkt je vždy rovnaký — spáľte ho a postavte nový. A práve týmto inštinktom, častejšie než nie, dobré firmy stratia rok a malé bohatstvo úplne zbytočne.
Videl som veľký prepis pokaziť sa dosť často na to, aby som naň mal reflex. Zakladateľ mi ukáže svoj vŕzgajúci objednávkový systém alebo svoj prastarý plánovací nástroj, vzdychne si a povie nejakú verziu vety „jednoducho potrebujeme vymeniť celú tú vec.“ A možno raz aj vymeníte. Lenže kompletný prepis — vytrhnúť starý systém, postaviť ligotavý nový popri ňom, prepnúť vypínač — je jedným z najrizikovejších krokov v celom softvéri. Je drahý, trvá oveľa dlhšie, než bolo sľúbené, a celý ten čas pracujete naslepo a dúfate, že to nové pokryje každý zvláštny okrajový prípad, ktorý to staré pätnásť rokov potichu zvládalo.
Dobrou správou je, že kompletný prepis takmer nikdy nie je jedinou možnosťou a zriedka tou najlepšou. Existuje pokojnejší spôsob modernizácie — postupný, vratný a šetrný k podniku, ktorý musí stále zarábať, kým pracujete. Toto je návod na ten spôsob: ako rozpoznať, čo naozaj treba opraviť, ako vymeniť bolestivé časti bez zhodenia celého systému a ako vedieť, kedy je kompletný prepis skutočne tým správnym riešením.
Prečo je kompletný prepis taký lákavý — a taký nebezpečný
Kompletný prepis je zvodný, lebo sľubuje čistý štít. Žiaden zdedený neporiadok, žiadne kompromisy, čerstvá kódová základňa postavená správne s modernými nástrojmi. Na tabuli to vyzerá samozrejme. V skutočnosti sa zaväzujete znova postaviť roky nahromadenej podnikovej logiky — z veľkej časti nezdokumentovanej, časť žije len v hlavách ľudí, ktorí odišli — kým hodiny bežia a účty prichádzajú.
Hlbšou pascou je problém paralelného vesmíru. Počas mesiacov či rokov, ktoré trvá vybudovanie náhrady, máte dva systémy: starý, ktorý musí stále riadiť podnik, a nový, ktorý ešte nie je hotový. Každú zmenu, ktorú podnik potrebuje, treba urobiť dvakrát, inak nový systém zaostane za realitou ešte predtým, než sa vôbec spustí. Tímy sa vyčerpajú udržiavaním oboch pri živote. A keďže nikto nesmie prejsť, kým nový systém nerobí všetko, niet skorého víťazstva, niet spätnej väzby, niet dôkazu, že to funguje — len dlhé, úzkostné čakanie na jeden obrovský deň spustenia v štýle všetko alebo nič.
“Prepis vás žiada vsadiť podnik na jediný deň spustenia, roky vzdialený, pre systém, ktorý ešte nikto nepoužil. To nie je plán — to je stávka.”
Je tu dobre známa odvetvová ľudová múdrosť a je zaslúžená: druhý systém, veľký prepis, máva vo zvyku trvať trikrát dlhšie, než sa odhadovalo, a doraziť s menším počtom funkcií než to, čo nahrádza. Odhad nie je zlý preto, že sú ľudia nedbalí. Je zlý preto, že na začiatku nikto nedokáže vidieť všetky drobnosti, ktoré starý systém potichu robí správne.

Čo vlastne znamená „zdedený“ (nie je to o veku)
Slovom zdedený hádžeme, akoby znamenalo iba starý. Neznamená. Mnoho softvéru, ktorý beží desaťročie, je úplne v poriadku — nudný, stabilný, zaplatený, robí svoju prácu. Vek sám osebe nie je dôvodom čohokoľvek sa dotýkať. Najdrahšou chybou v celej tejto oblasti je modernizovať niečo, čo potichu fungovalo, len preto, že to vyzeralo zastarané.
Softvér si vyslúži označenie zdedený, keď vám aktívne stojí v ceste. Keď ho nemôžete bezpečne meniť, lebo mu nikto úplne nerozumie. Keď sa nedokáže pripojiť k nástrojom, na ktorých teraz závisíte. Keď je jediný človek tým jediným, kto ho dokáže udržať pri živote. Keď je taký pomalý alebo krehký, že okolo neho váš tím vybudoval celé folklórne obchádzky. To je tá skutočná definícia — nie rok, v ktorom bol napísaný, ale náklad, ktorý vám ukladá dnes, a riziko, ktoré nesie do zajtrajška.
Diagnostikujte skôr, než sa čohokoľvek dotknete
Skôr než sa prepíše jediný riadok, potrebujete úprimnú mapu toho, kde bolesť naozaj žije. Najčastejšie je systém, ktorý všetci neznášajú, na 80 % v poriadku. Problém je sústredený na pár konkrétnych miest — jedna pomalá obrazovka, jedna pokazená integrácia, jeden pracovný postup, ktorý núti k dvojitému zadávaniu údajov — a tých pár miest vyvoláva takmer všetky sťažnosti. Nájdite ich a našli ste celý svoj projekt.
Spôsob, ako ich nájsť, nie je najprv technický audit — je to rozhovor. Sadnite si s ľuďmi, ktorí tú vec používajú každý deň, a opýtajte sa, kde to bolí. Kde čakajú? Čo prepisujú nanovo? Čomu sa vyhýbajú, lebo je to bolestivé? Kde si vedú súkromnú tabuľku, aby obišli oficiálny systém? Tieto obchádzky sú zlato: každá je presnou röntgenovou snímkou problému, ktorý sa oplatí opraviť.
- Obrazovky a kroky, na ktoré sa ľudia sťažujú najviac — nie teoreticky, v ich skutočnej každodennej práci.
- Každé miesto, kde sa údaje zadávajú dvakrát, lebo dva systémy spolu nekomunikujú.
- Integrácie, ktoré sa pokazili alebo nikdy neexistovali, čo núti k ručnému kopírovaniu a vkladaniu medzi nástrojmi.
- Čokoľvek, čo vie ovládať alebo opraviť iba jeden človek — vaše jediné body zlyhania.
- Časti, ktoré sú naozaj v poriadku, aby ste ich mohli ochrániť a nechať tak.
- To, čo bude podnik budúci rok potrebovať a do čoho súčasný systém jednoducho nedokáže dorásť.
Keď to urobíte úprimne, projekt sa zvyčajne zmenší. Majiteľ, ktorý prišiel s vetou „vymeňte všetko“, odchádza s poznaním, že potrebuje opraviť tri veci. To nie je sklamanie — je to úľava. Tri opraviteľné veci sú projekt, ktorý dokážete dokončiť tento štvrťrok. Kompletná výmena je rok, ktorý možno neprežijete.
Strangler prístup: vymieňajte ho kus po kuse
Existuje vzor, ako to urobiť bezpečne, a má trochu pochmúrny, no zapamätateľný názov: strangler prístup, podľa figovníka škrtiča — popínavej rastliny, ktorá rastie okolo stromu a postupne preberá jeho štruktúru, až napokon nový porast stojí sám a starý kmeň je preč. Aplikované na softvér je to krásne praktické: starý systém nevymeníte jednou hrdinskou výmenou. Nový necháte rásť okolo neho, kus po kuse, kým zo starého nezostane nič, čo by ktokoľvek potreboval.
V praxi to funguje takto. Vyberiete jeden bolestivý kus — povedzme fakturačný modul, ktorý všetci neznášajú. Postavíte modernú náhradu len pre tento kus. Nasmerujete fakturáciu na nový modul, zatiaľ čo všetko ostatné beží naďalej na starom systéme, nedotknuté. Chvíľu to sledujete. Keď je to pevné, tá časť starého systému stíchne a vy prejdete na ďalší kus. Starý systém sa postupne zmenšuje ako svieca, namiesto toho, aby bol zhodený naraz.

To, čo robí tento postup oveľa bezpečnejším než prepis, je, že každý krok je malý, živý a vratný. Nikdy nepracujete naslepo. Každý nový kus sa rýchlo dostane do skutočného používania, takže rýchlo zistíte, či naozaj funguje. Ak sa niečo pokazí, riskli ste len jeden modul, nie celý podnik — a zvyčajne sa môžete vrátiť na starú cestu, kým to opravíte. Víťazstvá získavate priebežne namiesto jedného desivého spustenia na konci. A podnik beží, normálne, po celý ten čas.
Ako ten rytmus vlastne vyzerá
- 1Vyberte najbolestivejší, najsamostatnejší kusChcete vysokú bolesť a čisté hrany — modul, ktorý poriadne bolí a nemá prsty vo všetkom ostatnom. To je váš prvý cieľ.
- 2Pred starý systém vložte tenkú vrstvuMalá smerovacia vrstva rozhoduje, ktoré požiadavky idú do starého systému a ktoré do nového kusa. To je šev, ktorý všetko ostatné umožňuje.
- 3Postavte a spustite len ten jeden kusVymeňte jeden modul, dajte ho do skutočných rúk a nasmerujte naň len ten výsek práce. Týždne, nie roky — a zvyšok systému sa nikdy nepohol.
- 4Stabilizujte, potom prejdite na ďalší kusKeď nový modul získa dôveru, zodpovedajúca časť starého systému prejde do spánku. Zopakujte s ďalším bolestivým kusom a popri tom sa učte.
- 5Starý systém vyraďte, keď je prázdnyNapokon zdedený systém nerobí nič, na čom by niekto závisel. Až vtedy ho vypnete — potichu, bez drámy, lebo všetko dôležité sa už presunulo.
Všimnite si, čím sa to líši od prepisu: niet jediného dňa spustenia, ktorého by ste sa mali báť. Niet paralelného vesmíru, ktorý by ste museli udržiavať. Nový systém je v produkcii už od tretieho týždňa, zarába si na seba a učí vás veci, namiesto toho, aby čakal v laboratóriu na spustenie, ktoré sa stále odkladá.
Niekedy ho ani nemusíte vymieňať
Skôr než čokoľvek vôbec vymeníte, oplatí sa opýtať, či starý systém potrebuje výmenu, alebo len potrebuje prestať byť ostrovom. Prekvapivo veľa problémov „potrebujeme nový systém“ sú v skutočnosti problémy „naše systémy spolu nekomunikujú“. Starý softvér si svoju prácu robí dobre — len sedí v silo a núti ľudí prenášať údaje dnu a von ručne.
V takých prípadoch nie je najlacnejšou a najrýchlejšou opravou nový systém. Je to most. Starý softvér obalíte spojením — integráciou, ktorá mu umožní automaticky vymieňať údaje s vašimi ostatnými nástrojmi — a modernou vrstvou navrchu pre časti, ktorých sa ľudia skutočne dotýkajú. Zastaraný motor bzučí ďalej pod tým; tím dostane čistý povrch a koniec kopírovania a vkladania. Nie je to honosné, ale často je to najvyššia návratnosť na euro v celom úsilí.
| Prístup | Riziko | Čas k hodnote | Kedy sa hodí |
|---|---|---|---|
| Integrácia / prepojenie | Nízke | Dni–týždne | Systém funguje, ale žije v silo |
| Nové rozhranie na starom motore | Nízke | Týždne | Logika je v poriadku, bolesťou je používateľský zážitok |
| Výmena kus po kuse | Stredné | Týždne na kus | Konkrétne moduly vás brzdia |
| Kompletná prestavba | Vysoké | Mesiace+ | Základ vás skutočne nedokáže niesť vpred |
Kedy je kompletný prepis skutočne tým správnym riešením
Celý tento návod som strávil odhováraním vás od veľkého prepisu, takže buďme féroví: niekedy ním naozaj je. Existujú základy také prehnité, že ich nezachráni žiadne množstvo záplat, premosťovania ani výmeny kus po kuse, a predstierať opak len odkladá nevyhnutné, kým míňate peniaze na podopieranie mŕtvoly.
Úprimné znaky sú konkrétne. Technológia, na ktorej je systém postavený, je mŕtva alebo umiera — žiadna podpora, žiadne bezpečnostné aktualizácie, nikto nezostal, kto by na nej vedel pracovať. Podnik sa zmenil tak zásadne, že starý model už realite vôbec nezodpovedá. Alebo je systém taký zamotaný, že aj malé zmeny pravidelne rozbíjajú veci na nesúvisiacich miestach, čo zvyčajne znamená, že tam vôbec niet čistých švov pre strangler prístup. Keď sú dve alebo tri z týchto vecí pravdivé naraz, postupná práca prestáva byť bezpečnejšou voľbou.
A tu je tichá odmena za to, že ste najprv urobili postupnú prácu, aj keď napokon prestavbu spravíte: kým sa tam dostanete, budete systému rozumieť oveľa lepšie než na začiatku. Každý modul, ktorý ste vymenili, vás naučil niečo, čo si pôvodní autori nikdy nezapísali. Prepis poháňaný týmto poznaním je úplne iné, oveľa bezpečnejšie zviera než ten spustený s optimizmom prvého dňa.

Časť, ktorú nikto nespomína: väčšinou ide o ľudí
Tu je niečo, čo technické návody preskakujú. Najťažšou časťou modernizácie starého softvéru zvyčajne nie je kód — sú to ľudia, ktorí sa mu roky prispôsobovali. Poznajú jeho zvláštnosti. Majú svalovú pamäť na jeho čudné skratky. Nový modul, ktorý je objektívne lepší, môže prvé dva týždne pôsobiť horšie, jednoducho preto, že je neznámy. Ak to ignorujete, môže zlyhať aj dokonalá technická migrácia.
Postupný prístup pomáha aj tu, takmer náhodou. Keďže zmena prichádza po jednom malom kuse, ľudia ju vstrebávajú postupne namiesto toho, aby ste od nich žiadali naučiť sa všetko nanovo jedného pondelka ráno. Zapojte každodenných používateľov skoro. Nechajte ich formovať náhradu skôr, než je hotová. Tím, ktorý pomohol navrhnúť novú fakturačnú obrazovku, ju bude obhajovať; tím, ktorému ju zhodili na hlavu, ňou bude opovrhovať, aj keby bola totožná. Modernizácia je projekt riadenia zmien v softvérovom kostýme.
Máte systém, ktorý všetci neustále hrozia vymeniť?
Skôr než sa zaviažete k prepisu, oplatí sa jeden úprimný rozhovor o tom, čo naozaj treba opraviť. Pomôžeme vám zmapovať, kde bolesť skutočne žije, a nájsť najľahšiu cestu, ktorá ju vyrieši — často oveľa menšiu, než by ste čakali.
Pozrite sa, ako pristupujeme k softvéru na mieruČasté otázky
Je lacnejšie starý softvér prepísať, alebo ho modernizovať?
Čo je strangler prístup jednoducho povedané?
Môžeme počas modernizácie ďalej prevádzkovať podnik?
Ako zistíme, ktoré časti modernizovať ako prvé?
Kedy je kompletný prepis vlastne tou správnou voľbou?

Have a nice day je softvérové štúdio, ktoré pomáha malým a stredným firmám s digitalizáciou — automatizácia, umelá inteligencia a softvér na mieru, ktorý funguje v každodennej prevádzke, nielen na slajdoch.