Návod

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í.

Have a nice dayHave a nice day13 min čítania
Modernizácia zastaraného softvéru bez kompletného prepisu

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.
to, čo hovorím každému, kto siaha po tlačidle resetu

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.

Starý drevený most s niekoľkými opotrebovanými doskami, ktoré sa jednotlivo nahrádzajú čerstvými novými doskami, zatiaľ čo ľudia po ňom naďalej kráčajú, ilustrované v teplom plochom redakčnom štýle
Dobrá modernizácia vyzerá ako výmena jednej dosky za druhou — most zostáva otvorený po celý čas.

Č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.

Diagram zobrazujúci veľkú sivú škatuľu zdedeného softvéru, ktorú postupne nahrádzajú menšie jasné moderné moduly prepojené smerovacou vrstvou, jedna časť po druhej, v čistom redakčnom infografickom štýle
Každý nový modul preberá jednu úlohu; starý systém sa zmenšuje, kým v ňom nezostane nič dôležité.

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á

  1. 1
    Vyberte najbolestivejší, najsamostatnejší kus
    Chcete vysokú bolesť a čisté hrany — modul, ktorý poriadne bolí a nemá prsty vo všetkom ostatnom. To je váš prvý cieľ.
  2. 2
    Pred starý systém vložte tenkú vrstvu
    Malá 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.
  3. 3
    Postavte a spustite len ten jeden kus
    Vymeň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.
  4. 4
    Stabilizujte, potom prejdite na ďalší kus
    Keď 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.
  5. 5
    Starý systém vyraďte, keď je prázdny
    Napokon 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ístupRizikoČas k hodnoteKedy sa hodí
Integrácia / prepojenieNízkeDni–týždneSystém funguje, ale žije v silo
Nové rozhranie na starom motoreNízkeTýždneLogika je v poriadku, bolesťou je používateľský zážitok
Výmena kus po kuseStrednéTýždne na kusKonkrétne moduly vás brzdia
Kompletná prestavbaVysokéMesiace+Základ vás skutočne nedokáže niesť vpred
Štyri spôsoby modernizácie, od najľahšieho dotyku po najťažší. Začnite navrchu a zostupujte len vtedy, keď musíte.

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.

Uvoľnený majiteľ malej firmy a vývojár si spolu pri stole prezerajú jednoduchý plán, pokojná a sebavedomá nálada, ilustrované v teplom plochom redakčnom štýle
Najlepšie plány modernizácie pôsobia zámerne nudne — malé kroky, vždy cesta späť, podnik nikdy v ohrození.

Č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ť?
Postupná modernizácia je v praxi takmer vždy lacnejšia, lebo kompletný prepis býva výrazne prekročí — musí znova postaviť roky nezdokumentovanej podnikovej logiky skôr, než prinesie akúkoľvek hodnotu. Výmena systému kus po kuse, alebo jednoducho jeho prepojenie a obnova, vám dá výsledky v týždňoch a umožní prestať míňať vo chvíli, keď bolesť pominie. Prepis vyhráva na nákladoch len vtedy, keď je základ taký rozbitý, že by jeho záplatovanie stálo viac než začať odznova.
Čo je strangler prístup jednoducho povedané?
Je to spôsob, ako starý systém vymeniť postupne namiesto naraz. Postavíte modernú verziu jedného bolestivého kusa, nasmerujete naň len tú prácu a všetko ostatné necháte bežať na starom systéme. Keď je ten kus pevný, prejdete na ďalší. Postupom času starý systém robí čoraz menej, až je prázdny a môžete ho vypnúť — bez jediného desivého dňa spustenia po ceste.
Môžeme počas modernizácie ďalej prevádzkovať podnik?
Áno — práve o to ide pri postupnom prístupe. Keďže vymieňate jeden malý kus po druhom a starý systém držíte živý pod tým, bežná prevádzka po celý čas pokračuje. Každá zmena je dosť malá na to, aby sa otestovala v skutočnom používaní a v prípade potreby vrátila späť. Nikdy nedospejete k okamihu, keď podnik závisí od neotestovaného prepnutia v štýle všetko alebo nič.
Ako zistíme, ktoré časti modernizovať ako prvé?
Porozprávajte sa s ľuďmi, ktorí systém používajú každý deň, a hľadajte ich obchádzky — súkromné tabuľky, ručné kopírovanie a vkladanie, „túto časť robím proste ručne.“ Každá obchádzka označuje skutočnú, nákladnú medzeru. Zoraďte ich podľa toho, ako často štípu, a vrch toho zoznamu je miesto, kde začínate. Zvyčajne ide o hŕstku konkrétnych miest, nie o celý systém.
Kedy je kompletný prepis vlastne tou správnou voľbou?
Keď je podkladová technológia mŕtva alebo bez podpory, keď sa podnik zmenil natoľko, že starý model už vôbec nesedí, alebo keď je systém taký zamotaný, že aj malé zmeny rozbíjajú nesúvisiace veci — čo zároveň znamená, že tam niet čistých švov na výmenu kus po kuse. Keď sú dve alebo tri z týchto vecí pravdivé spolu, opatrná, postupná prestavba sa stáva bezpečnejšou voľbou. Aj vtedy starý systém držíte v chode a používateľov presúvate v malých skupinách, nikdy jedným veľkým skokom.
Have a nice day
Have a nice day
Redakcia

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.

Súvisiace služby