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:
- analýza kódu – pomocou automatických nástrojov sme identifikovali nekompatibilné časti a potenciálne problémy.
- testovanie – zaviedli sme automatizované testy, aby sme sa uistili, že zmeny nespôsobia neočakávané chyby v aplikácii.
- 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.
- 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ť.