Část IV Po spuštění: provoz, rozvoj, nezávislost
Kapitola 23: Technický dluh a stárnutí systému
Technický dluh vzniká zkratkami a odkládanými úpravami kódu. Dnes ušetří čas, ale každá další změna pak stojí více práce. Poznáte ho i bez čtení kódu: například podle toho, že srovnatelné změny stojí čím dál víc a po nasazení přestávají fungovat dosud bezproblémové části. Splácejte ho průběžně, a když systém zestárne, modernizujte ho po částech.
Dluh funguje jako úvěr
Technický dluh je jako nákup na kreditní kartu. Věc máte hned, ale dokud dluh nesplatíte, platíte úrok. V softwaru je zkratkou třeba chybějící test, kopírovaný kód nebo odložená aktualizace. Úrokem je dodatečný čas potřebný na každou další změnu.
Dluh sám o sobě není chyba. Vědomá zkratka kvůli termínu je legitimní rozhodnutí. Problém je dluh, o kterém nikdo neví a nikdo ho nesplácí. McKinsey úrok popisuje jako daň ze složitosti, kterou platí každý projekt. Šéfové IT velkých firem v průzkumu odhadli, že 10–20 % rozpočtu na nové produkty se místo toho spotřebuje na řešení dluhu, a 60 % z nich vnímá, že dluh za poslední 3 roky vzrostl McKinsey, 2020. Jde o odhady respondentů, nikoli přímé měření, přesto upozorňují na rozsah problému.
Jak ho poznat bez čtení kódu
Nejlepší měřítko máte ve fakturách: kolik stojí srovnatelná změna dnes a kolik před rokem. Další příznaky jsou chyby po nasazení v nesouvisejících částech, moduly, do kterých se nikdo nechce pustit, a nasazování „na víkend“. Od dodavatele chtějte v pravidelném reportu metriky DORA DORA, metriky (kapitola 17), výsledky statické analýzy kódu, pokrytí testy a stáří komponent. Nesledujte jen absolutní hodnoty, zaměřte se i na jejich vývoj v čase.
Jak dluh splácet
- Evidence: dodavatel eviduje dluh jako seznam úkolů s odhadem, kolik práce navíc jednotlivé nedostatky způsobují.
- Stálá kapacita: část každého sprintu věnujte splácení, místo jednorázové úklidové akce za několik let. Kapacitu soustřeďte tam, kde se systém nejvíce mění.
- Pravidlo skauta: kdo sahá do modulu, nechá ho o kus lepší, než ho našel.
- Smlouva: „hotovo“ znamená i testy a dokumentaci, převzetí zahrnuje kontrolu kvality kódu (kapitola 20).
- Rozpočet: splácení dluhu je položka ročního rozpočtu na údržbu (kapitola 22).
Refaktoring, přepis, nebo náhrada?
Systém se stává přežitkem, když jeho provoz a změny stojí neúměrně mnoho, technologie ztratila podporu nebo pro ni nenajdete odborníky a systém nezvládá nové požadavky, třeba nonstop provoz nebo napojení přes API. Věk sám nerozhoduje. Konec podpory platformy ale znamená povinnou a drahou migraci: Státní zemědělský intervenční fond má podporu své platformy zajištěnou jen do roku 2027 a NKÚ upozornil na riziko dalších vysokých výdajů NKÚ, KZ 20/07. U každé klíčové komponenty proto sledujte datum konce podpory a mějte plán dalšího postupu.
| Refaktoring | Náhrada po částech | Velký přepis | Hotový produkt | |
|---|---|---|---|---|
| Kdy | architektura nebrání změnám, platforma má podporu | platforma dosluhuje nebo moduly nejde měnit | malý systém s malým počtem napojení | systém nedělá nic, čím se lišíte |
| Riziko | nízké | střední, rozložené do malých kroků | vysoké u velkých systémů | nový druh závislosti |
| Co stojí navíc | stálá kapacita | souběh dvou systémů a synchronizace dat | souběžný rozvoj starého systému | migrace dat, úprava procesů |
| Past | jednorázové akce | chybí datum vypnutí starého systému | ztráta znalostí ze starého kódu | vlastní úpravy hotového produktu |
Výchozí volba je refaktoring. Přepis plánujte po částech, i když je nevyhnutelný.
Náhrada po částech se odborně jmenuje strangler fig podle fíkovníku, který postupně obroste starý strom, až ho nahradí Fowler, 2004. Nový systém přebírá funkci po funkci, dokud nelze starý systém vypnout. Kroky jsou malé a vratné, přínosy vidíte průběžně a dodavatele můžete měnit po částech. Dočasně ale platíte dva systémy. Předpokladem je přístup ke starému systému, jeho rozhraní a datům (kapitola 24).
Velký přepis najednou láká, protože slibuje čistý stůl. U velkých systémů se ale ztrácí znalost uložená ve starém kódu, požadavky se mezitím mění a starý systém se musí rozvíjet souběžně. Rozsáhlá modernizace trvá roky: z 10 kritických federálních systémů, které americký kontrolní úřad označil v roce 2019, byla do února 2025 dokončena modernizace tří GAO, 2025. Plán vypnutí a rozpočet na souběh proto patří do projektu od začátku. Co se stane bez nich, ukazuje kauza MZV v kapitole 4.
Základní registry: kritický systém v parametrech roku 2012 (NKÚ 2024)
Základní registry stály v pořízení téměř 1,8 mld. Kč a v letech 2015–2022 dalších 2,46 mld. Kč, z toho 1,76 mld. Kč provoz a 697 mil. Kč rozvoj a obnova. Transformace podle Konceptu ZR 2.0 s termíny 2019–2023 se nenaplnila a ani výdaje ve výši 67,9 mil. Kč nevedly ke kompletní obnově infrastruktury. Nonstop dostupnost nebyla zajištěna ani víc než 4 roky po termínu a provoz v roce 2023 odpovídal parametrům z roku 2012. Podle NKÚ jsou 4 z 5 registrů v závislosti na dodavateli NKÚ, KZ 23/05. Ministerstvo vnitra se závěry nesouhlasí a uvádí, že registry běží bez odstávek MV, 10. 6. 2024.
Poučení: bez plánované a soutěžené obnovy systém stárne i při stovkách milionů ročně na provoz.
Zdroj: NKÚ, kontrolní závěr 23/05, MV, stanovisko 10. 6. 2024
| Jak to dopadá špatně | Jak to dělat dobře |
|---|---|
| Jak to dopadá špatněDluh se řeší, „až bude čas“. | Jak to dělat dobřeDluh je v evidenci s odhadem úroku a má stálou kapacitu. |
| Jak to dopadá špatněJednorázová úklidová akce jednou za pár let. | Jak to dělat dobřePrůběžné splácení a pravidlo skauta při každé změně. |
| Jak to dopadá špatněO zdraví systému víte jen to, co řekne dodavatel. | Jak to dělat dobřeMetriky DORA a statická analýza v reportu, sledujete trend. |
| Jak to dopadá špatně„Hotovo“ znamená, že funkce běží. | Jak to dělat dobře„Hotovo“ zahrnuje testy a dokumentaci, převzetí i kontrolu kvality kódu. |
| Jak to dopadá špatněStarý systém se přepíše najednou a přepne se přes víkend. | Jak to dělat dobřeNáhrada po částech s datem vypnutí a rozpočtem na souběh. |
| Jak to dopadá špatněPlatforma dosáhne konce podpory a teprve pak se řeší krize. | Jak to dělat dobřeData konce podpory všech komponent a plán přechodu s předstihem. |
- Nekvalitní a nezdokumentovaný kód má u úřadu i právní rozměr: znemožní soutěžit dalšího dodavatele a závislost se prohlubuje (kapitola 24).
- Modernizace určeného informačního systému je architektonická změna a potřebuje souhlasné stanovisko OHA (kapitola 12).
- Obnovu soutěžte s předstihem. Prodlužování smluv s původními dodavateli bez soutěže NKÚ u základních registrů hodnotil jako riziko pro hospodárnost NKÚ, KZ 23/05.
- Plán obnovy a modernizace patří do informační koncepce orgánu Vyhláška č. 360/2023 Sb..