↑ ↓ výběrEnter otevřeEsc zavře

    Celý návod k tisku: vyvoj.solutia.cz/navod/tisk

    Část IV Po spuštění: provoz, rozvoj, nezávislost

    Kapitola 23: Technický dluh a stárnutí systému

    ~8 min čteníAktualizováno Lukáš Mikula (otevře se v novém okně)

    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.

    Test

    Máte technický dluh?

    Zaškrtněte, co platí pro váš systém. Odpovědi zjistíte bez čtení kódu, stačí se zeptat dodavatele a podívat se do faktur.

    • Rostoucí pracnost srovnatelných změn je nejlepší příznak dluhu, který vidíte i bez čtení kódu. Chtějte ji sledovat v reportu.

    • Systém je provázaný a chybí automatické testy, takže každá změna je riziko.

    • Moduly, na které nikdo nechce sáhnout, jsou místa s nejvyšším úrokem.

    • Odchod jednoho člověka může systém zablokovat. Je to i znalostní závislost na dodavateli (kapitola 24).

    • Bez automatizace je každé nasazení drahé a riskantní. Frekvence nasazení patří k metrikám zdraví vývoje.

    • Po konci podpory nechodí bezpečnostní záplaty. Tohle je vážné vždy, bez ohledu na ostatní odpovědi.

    • Dlouhé zaučení znamená drahé posily i drahou výměnu dodavatele.

    • Kdo nezná své komponenty, nemůže hlídat zranitelnosti ani konce podpory.

    • Čím víc kapacity jde na opravy, tím méně zbývá na nové funkce. Úrok začíná převyšovat splátky.

    • Dokumentace předaná jednou a pak neaktualizovaná ztěžuje každou změnu i předání jinému dodavateli.

    Zaškrtnuto 0 z 10

    Vyhodnocení: sečtěte body zaškrtnutých výroků

    0–2 body

    Dluh pod kontrolou

    Udržujte pravidelnou kapacitu na splácení a sledujte, jestli srovnatelné změny nezdražují.

    3–5 bodů

    Dluh roste

    Zaveďte seznam dluhu s odhadem úroku, vyhraďte na splácení stálou kapacitu a chtějte metriky a SBOM v reportu. Pokud jste zaškrtli konec podpory, naplánujte přechod hned.

    6 a více bodů

    Dluh je vážný

    Nechte udělat nezávislý audit kódu a architektury. Pak rozhodněte mezi refaktoringem, postupnou náhradou a hotovým produktem (tabulka níže).

    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.

    Kdy co zvolit
    RefaktoringNáhrada po částechVelký přepisHotový produkt
    Kdyarchitektura nebrání změnám, platforma má podporuplatforma dosluhuje nebo moduly nejde měnitmalý systém s malým počtem napojenísystém nedělá nic, čím se lišíte
    Rizikonízkéstřední, rozložené do malých krokůvysoké u velkých systémůnový druh závislosti
    Co stojí navícstálá kapacitasouběh dvou systémů a synchronizace datsouběžný rozvoj starého systémumigrace dat, úprava procesů
    Pastjednorázové akcechybí datum vypnutí starého systémuztráta znalostí ze starého kóduvlastní ú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.

    Otázky

    Otázky pro dodavatele

    1. Jak se za poslední rok vyvíjela pracnost srovnatelných změn?
    2. Jaké jsou metriky DORA našeho systému a jak se mění?
    3. Kde je v systému největší technický dluh a kolik nás ročně stojí?
    4. Které komponenty jsou po konci podpory nebo ho dosáhnou do 24 měsíců?
    5. Které části systému zná jen jeden člověk?
    6. Pokud doporučujete přepis: proč ne náhradu po částech, kolik bude stát souběh a kdy vypneme starý systém?

    Spot Solutia