Upgrade Spring Boot 2 → 4
pomocou AI

Nástroj spring-boot-migrator: automatizovaná migrácia po overiteľných krokoch – OpenRewrite zvládne mechanickú prácu, AI vyrieši zvyšok a o výsledku rozhodujú testy, nie dojem. Všetko nižšie sú namerané výsledky z reálnych behov, nie sľuby.

I.S.D.D. plus

Namerané, nie sľúbené

Štyri čísla z reálnych behov

2.1 → 4.0
rozsah migrácie overený na pilotných repozitároch PSS
16/16
curl testov zhodných so správaním pôvodnej verzie (pilot PSS)
~99 %
mechanickej práce zvládnu recepty OpenRewrite
1 riadok
manuálnych zásahov na referenčnej aplikácii naprieč 4 hlavnými verziami

1 · Motivácia

Prečo upgrade s AI – a prečo práve takto

Problém: flotila približne 100 vzájomne previazaných aplikácií na Spring Boot 2. Tá je dávno po konci podpory (bez bezpečnostných záplat) a každý ďalší rok technologický dlh prehlbuje – manuálna migrácia jednej aplikácie cez štyri hlavné verzie (2.x → 2.7 → 3.0 → 3.5 → 4.0 vrátane premenovania javax → jakarta) pritom typicky viaže skúseného vývojára na dni až týždne. Pri stovke aplikácií sa to násobí.

1 · Motivácia

Prečo AI nestačí sama

Jazykový model vie kód prepísať, ale nezaručí, že sa aplikácia bude správať rovnako. Preto je nástroj postavený opačne – AI nikdy nerozhoduje o úspechu. Rozhodujú tri nezávislé brány: build a unit testy, charakterizačná sada curl testov (zaznamenané správanie pôvodnej verzie ako záväzný kontrakt) a code/security review.

AI je motor, brány sú volant a brzdy.

Kľúčový princíp

Pred migráciou sa z kódu vygenerujú curl testy a na bežiacej starej verzii sa nahrá „golden master“ – presné odpovede API. Po každom kroku migrácie musí nová verzia odpovedať identicky. Zmena správania sa tak zachytí pri kroku, ktorý ju spôsobil, nie až v produkcii.

2 · Z čoho sa skladá

Claude Code plugin s tromi vrstvami

Príkazy
/spring-migrate – migrácia jednej aplikácie (na interné závislosti sa interaktívne pýta). /spring-fleet – plán vĺn z grafu závislostí a prehľadová tabuľka stavu flotily.
Znalostná báza (skills)
Postupy a pasce z reálnych behov: recepty pre každý krok, zákernosti jednotlivých verzií (springfox → springdoc, Security 5 → 7, Jackson 3…), pravidlá tvorby curl testov. Po každej migrácii sa rozširuje – flotila sa učí.
Mechanické brány
Skripty a hook: charakterizačná sada s manifestom proti manipulácii, kontrola pokrytia testov (každá cesta API a každý autentifikačný mechanizmus), vstupná kontrola dokončenia – zápis stavu „complete“ bez dôkazov je zablokovaný.

Pod kapotou: OpenRewrite (deterministické prepisy kódu, open-source od Moderne), Claude Code (Anthropic) ako AI agent a štandardné nástroje Maven/Gradle. Git je jediný zdroj pravdy – jeden krok = jeden commit.

3 · Ako sa spúšťa a čo potrebuje

Tri príkazy, bežný vývojársky stroj

# inštalácia (raz)
/plugin marketplace add mjancik404/test-workflows
/plugin install spring-boot-migrator@test-workflows

# migrácia – nástroj sa sám pýta na interné závislosti a poradie
/spring-migrate <git-repo> [--fleet <adresár-flotily>]

# flotila: plán vĺn podľa závislostí a stav
/spring-fleet plan <adresár>   ·   /spring-fleet status <adresár>

3 · Ako sa spúšťa a čo potrebuje

Čo potrebuje – a čoho sa nedotkne

Potrebuje
JDK 17+ (odporúčané 21), Maven alebo Gradle, prístup na Maven Central, Claude Code s review skillmi. Beží na bežnom notebooku.
Nepotrebuje
Docker je predvolene vypnutý (zapína sa len explicitne). Žiadne zmeny v CI/CD, žiadny prístup do produkcie – všetko beží lokálne na kópii repozitára, na migračnej vetve.
Bezpečné predvolené správanie
Nikdy nepracuje na hlavnej vetve, pull request otvára len na vyžiadanie, baseline testov je nemenný kontrakt a každé použitie Dockera či zmena správania vyžaduje výslovný súhlas.

4 · Princíp behu

Ako beh prebieha – od pôvodnej verzie po overený výsledok

Nástroj pracuje v slučke s tvrdo vynútenými bránami. Na pôvodnej verzii si najprv vytvorí merateľný kontrakt správania (sadu curl testov so zaznamenanými odpoveďami a kontrolou pokrytia), potom aplikáciu posúva po jednej hlavnej verzii. Po každom kroku musí prejsť všetkými bránami: build a unit testy, zhoda správania s golden master a cielené review. Ak niektorá brána zlyhá, AI hľadá príčinu – najprv v znalostnej báze známych pascí – a opravuje aplikáciu, nikdy testy. Výsledkom každého kroku je commit s uloženým dôkazom, výsledkom celého behu report a retrospektíva, ktorá poznatky vráti do znalostnej bázy pre ďalšie aplikácie.

4 · Princíp behu

Migračná slučka so spätnou väzbou

/spring-migrate <repo>
Prieskumbuild nástroj, verzia, spustiteľnosť aplikácie, interné závislosti (nástroj sa pýta)
Fáza 0 na PÔVODNEJ verziisada curl testov z kódu + nahratie golden master + kontrola pokrytia (cesty aj autentifikácia)
Ostáva krok v pláne?2.7 → 3.0 → 3.5 → 4.0
Finálne brányunit testy + celá sada curl testov + code review + security review + vstupná kontrola dokončenia (bez dôkazov sa „hotovo“ nezapíše)
REPORT.md + push vetvy+ retrospektíva do znalostnej bázy
Recept OpenRewritedeterministický prepis kódu
Brány krokubuild + unit testy · verzia
sada curl testov vs. golden master
cielené security/code review
AI diagnostika + oprava aplikácienajprv zoznam známych pascí; testy sa nikdy neupravujú
Commit kroku+ uložený dôkaz brány + poznatky do NOTES.md
áno nie červená zelená poznatky zrýchľujú ďalšiu aplikáciu

Migračná slučka vrátane spätnej väzby: poznatky z každého behu zrýchľujú ďalšie aplikácie. Červená brána = stop; opravuje sa aplikácia, nikdy testy.

4 · Princíp behu

Príklad zo skutočného behu

Pri kroku na Spring Boot 4 sada testov spadla 7/8: Boot 4 potichu zmenil predvolenú hodnotu a /actuator/health začal vracať iné telo odpovede. Build zelený, unit testy zelené – videla to len charakterizačná sada. Nástroj príčinu sám dohľadal v metadátach frameworku a opravil ju jedným riadkom. Presne tento typ tichých zmien správania je dôvod, prečo brány existujú.

5 · Výsledok + git + review

Auditovateľný výstup, nie čierna skrinka

KrokOpenRewrite receptManuálne zásahyBrány
2.6.15 → 2.7.18UpgradeSpringBoot_2_70curl 8/8
2.7.18 → 3.0.13UpgradeSpringBoot_3_0 (javax→jakarta)0curl 8/8
3.0.13 → 3.5.16UpgradeSpringBoot_3_50curl 8/8
3.5.16 → 4.0.7UpgradeSpringBoot_4_01 riadokcurl 8/8

6 · Náklady a úspory

Čo je zmerané a čo si overíme na pilote

Zmerané dnes
Recepty pokryjú ~99 % mechanickej práce · referenčná aplikácia: jeden manuálny riadok naprieč 4 hlavnými verziami · znalostná báza znížila pri opakovanej úlohe spotrebu o 22 % tokenov a 37 % času – a s každou aplikáciou rastie · náklady na AI: rádovo jednotky eur na malú službu (API tokeny).
Úspora tokenov pri opakovanej úlohe22 %
Úspora času pri opakovanej úlohe37 %
Rozdelenie mechanickej práce~99 %
recepty OpenRewrite ~99 % zvyšok: AI + človek
Ekonomika flotily
Manuálne: dni až týždne inžinierskeho času na aplikáciu, krát sto. S nástrojom: hodiny strojového času a review človekom. Prvých približne 10 behov „platí“ za objavovanie pascí, zvyšných ~90 ich dostane zadarmo zo znalostnej bázy.

7 · Výhody · Nevýhody · Riziká

Otvorené zhodnotenie

Výhody

  • Dokázaná parita správania – nie „veríme, že to funguje“
  • Auditovateľnosť: jeden commit na krok, dôkazy brán uložené v gite
  • Znalosti sa kumulujú – každá migrácia zrýchli ďalšie
  • Poradie flotily z grafu závislostí, vynútené nástrojom
  • Nezávislosť od jedného AI modelu (overené A/B testom)

Nevýhody

  • Aplikácia musí byť lokálne spustiteľná (inak je záruka slabšia – nástroj to otvorene oznámi)
  • Záruka parity siaha len po pokrytie sady testov – preto sa pokrytie kontroluje mechanicky
  • Ľudské review ostáva nutné (zámerne – je to brána, nie formalita)
  • Prvé behy na novom type aplikácie sú pomalšie, kým sa znalostná báza naplní

Riziká a ich ošetrenie

  • „AI to označí za hotové predčasne“ → mechanicky zablokované: stav „hotovo“ bez dôkazov sa nedá zapísať do gitu (hook a vstupná kontrola)
  • Manipulácia testov → baseline chránený manifestom (sha256), zmeny len s výslovným súhlasom
  • Bezpečnostné regresie (Security 5 → 7) → povinné cielené review každého kroku a záverečný bezpečnostný audit; výnimky evidované s vlastníkom
  • Citlivosť kódu voči AI službe → beží cez firemné konto Claude (dáta sa nepoužívajú na trénovanie modelov); rozsah prístupu = jeden repozitár na jednej vetve

6 · Náklady a úspory

Návrh pilotu pre PSS

3–5 aplikácií rôznej zložitosti. Merať: čas behu, ľudský čas (review a zásahy), náklady na AI, počet nálezov review, paritu sady testov. Po pilote reálna kalkulácia na celú flotilu – čísla budú vaše, nie naše odhady.

I.S.D.D. plus
1
← / → · N = poznámky