Prípadová štúdia: Modernizácia zastaraného IT riešenia

16.03.2025
codeart
Prípadová štúdia: Modernizácia zastaraného IT riešenia

Náš zákazník využíval IT riešenie postavené na zastaraných technológiách Web2py a Python 2.7. Takýto stav predstavoval veľkú výzvu pre rozširovanie vlastností, udržiavanie, riešenie bezpečnostných rizík a škálovanie. Stáli sme pred výzvou – zabezpečiť spätnú kompatibilitu existujúceho kódu pri prechode na novšie verzie Web2py a Python 3. Aby sme boli schopní využiť moderné nástroje, ktoré používame na vývoj, testovanie, nasadzovanie a údržbu, museli sme systém modernizovať. Rozhodli sme sa presunúť infraštruktúru do cloudu, aby boli procesy flexibilnejšie a riešenie menej nákladné na údržbu.

Hlavné ciele projektu

  • Prejsť na podporované technológie – migrovať kód na Python 3 a aktualizovať Web2py bez narušenia existujúcej funkcionality.
  • Automatizovať vývoj a testovanie – zjednodušiť procesy nasadzovania a zvýšiť kvalitu softvéru.
  • Presunúť infraštruktúru do cloudu – zabezpečiť škálovateľnosť a optimalizovať prevádzkové náklady.
  • Zvýšiť stabilitu a výkon systému – odstrániť úzke miesta v kóde a optimalizovať prevádzku.

Ako sme postupovali

1. Výzva: Zastarané technológie a potreba migrácie

Existujúce riešenie bolo pôvodne napísané v Python 2.7 a bežalo na staršej verzii Web2py. Keďže Python 2.7 už nemal oficiálnu podporu, bolo nevyhnutné prejsť na Python 3. Tento krok však nebol jednoduchý, pretože:

  • Množstvo kódu využívalo nekompatibilné knižnice, ktoré nefungovali s Python 3.
  • Niektoré vlastné moduly a funkcie v Web2py boli závislé od zastaraných syntaktických prvkov.
  • Prepisovanie celého systému nebolo časovo ani finančne efektívne, preto sme museli nájsť spôsob, ako udržať spätnú kompatibilitu a zároveň modernizovať aplikáciu.

Viac o tejto téme nájdete aj v našom blogu: Modernizácia softvéru: Kedy sa oplatí nahradiť starý systém?

2. Analýza infraštruktúry a procesov

Po identifikovaní problémov v kóde sme preskúmali aj celkovú infraštruktúru a vývojové procesy. Objavili sme ďalšie výzvy:

  • Chýbala automatizácia testovania a nasadzovania, čo znamenalo časté manuálne zásahy.
  • Monolitické riešenie, ktoré malo zle definované zodpovednosti, nesledovalo SOLID princípy čo viedlo k náchilnosti k chybám a sťažovalo škálovanie a vývoj nových funkcionalít.
  • Servery boli spravované manuálne, čo zvyšovalo prevádzkové náklady a riziko výpadkov.

3. Úprava kódu pre potreby Python 3 a prechod na novší Web2py

Migráciu sme rozdelili do štyroch fáz:

  1. analýza kódu – pomocou automatických nástrojov sme identifikovali nekompatibilné časti a potenciálne problémy.
  2. testovanie – zaviedli sme automatizované testy, aby sme sa uistili, že zmeny nespôsobia neočakávané chyby v aplikácii.
  3. postupný refaktor kódu – prepísali sme nekompatibilné časti tak, aby fungovali v Python 3, pričom sme zachovali pôvodnú logiku aplikácie. Tu nám výrazne pomoholi automatizované testy, ktoré sme si pripravili v predošlom kroku.
  4. aktualizácia Web2py – aby sme zabezpečili stabilitu, Web2py sme aktualizovali v krokoch, testovali funkcionalitu a opravovali problémy priebežne.

4. Kontajnerizácia a presun do cloudu

Keďže sme potrebovali systém testovať aj si pripraviť vývojárské prostredia, rozhodli sme sa presunúť ho z fyzických serverov do cloudu (Azure). Pred migráciou sme však:

  • Nasadili Docker a Kubernetes, aby sme aplikáciu mohli jednoducho škálovať.
  • Pretransformovali monolitickú architektúru, rozdelili sme existujúce riešenie podľa služieb a vytvorili kontajnery pre nasadenie do cloudu
  • Optimalizovali databázové operácie, čím sme zrýchlili odpovede systému.

5. Zavedenie CI/CD a automatizovaných testov

Aby bol vývoj efektívnejší, implementovali sme automatizované CI/CD pipelines:

  • Automatické testovanie pomocou Selenium.
  • Automatizované nasadzovanie do produkcie cez GitLab CI.
  • Bezpečnostné a výkonnostné testy na preverenie stability aplikácie.

6. Monitoring a podpora

Po migrácii do cloudu sme implementovali monitorovací systém (Zabbix), aby sme mali:

  • Nepretržitý dohľad nad výkonom aplikácie.
  • Automatizované upozornenia na incidenty.
  • Dáta na optimalizáciu prevádzky.

Výsledky, ktoré sme dosiahli

  • Systém je plne kompatibilný s Python 3 a novým Web2py.
  • Modernizovaný kód umožňuje jednoduchšiu údržbu a rozšírenie aplikácie.
  • Vývoj sa zrýchlil o približne 40 % vďaka automatizovaným testom a CI/CD.
  • Presun do cloudu priniesol úsporu nákladov na infraštruktúru.
  • Monitoring výrazne znížil výpadky a umožnil rýchlejšiu reakciu na incidenty.

Čo ďalej?

Tento projekt bol veľkým krokom vpred a pripravil spoločnosť na ďalšie výzvy. Do budúcnosti odporúčame:

  • Pokračovať v optimalizácii aplikácie a rozširovaní funkcionalít.
  • Investovať do ďalšej automatizácie, najmä v oblasti testovania a bezpečnosti.
  • Využívať cloudové služby naplno a preskúmať ďalšie možnosti optimalizácie nákladov.

Projekt ukázal, že modernizácia zastaraného riešenia je možná aj bez nutnosti úplného prepisu. Vďaka premyslenému prístupu a postupným krokom sa nám podarilo zachovať stabilitu, udržať spätnú kompatibilitu a zároveň pripraviť systém na budúcnosť.