Il cliente utilizzava da anni un insieme articolato di 34 procedure sviluppate in VBA, nate e cresciute nel tempo senza una reale progettazione strutturata né documentazione tecnica. Queste procedure costituivano il cuore di processi altamente critici, legati alla gestione di dati sensibili e a movimentazioni economiche, dove la tolleranza all’errore era pari a zero.
L’ecosistema risultava fragile, difficile da manutenere e dipendente da una piattaforma ormai obsoleta come Microsoft Access, che fungeva sia da repository dati sia da punto di integrazione con sistemi esterni, inclusi servizi AS400 tramite ODBC.
La complessità dell’infrastruttura legacy poneva diversi rischi:
- difficoltà nella gestione dei rilasci a causa delle numerose dipendenze non documentate;
- impossibilità di scalare o modernizzare il sistema senza interventi profondi;
- esposizione a rischi di sicurezza dovuti all’assenza di meccanismi nativi per la cifratura e al trasferimento di file potenzialmente sensibili;
- forte dipendenza da componenti non più supportati o difficili da integrare con tecnologie moderne.
In questo contesto, il progetto aveva un obiettivo chiaro: modernizzare completamente il patrimonio applicativo, rendendolo sicuro, scalabile e governabile:
- Riscrivere il codice VBA in un linguaggio moderno e manutenibile, individuato in Python per la sua portabilità, flessibilità e diffusione.
- Superare i limiti del database Access, migrando l’intero modello dati verso MySQL, più robusto, scalabile e in linea con gli standard attuali.
- Garantire la continuità operativa, tramite un periodo di esecuzione parallela che permettesse di verificare la correttezza delle procedure senza impatti sull’ambiente produttivo.
- Aumentare la sicurezza, introducendo la cifratura obbligatoria dei file, sia in fase di trasferimento sia in fase di archiviazione.
- Ridurre il rischio operativo, eliminando la dipendenza da tecnologie obsolete e costruendo un sistema documentato, stabile e pronto per evoluzioni future.
Il progetto rappresentava non solo un lavoro di migrazione tecnologica, ma un’opportunità strategica per portare un intero ecosistema critico verso una piattaforma moderna, sicura e completamente governabile.
Le principali difficoltà incontrate riguardavano:
- Assenza totale di documentazione: è stato necessario eseguire reverse engineering del codice per comprenderne il comportamento.
- Dati altamente sensibili: venivano gestiti flussi legati a movimentazioni economiche reali.
- Dipendenze complesse tra le procedure, alcune delle quali richiedevano interazioni con altre in modo non esplicitato.
- Migrazione del database Access → MySQL con differenze strutturali profonde:
- porting delle stored procedure;
- conversione delle viste;
- gestione tabelle linkate via ODBC verso AS400;
- differenze nella gestione dei tipi e delle relazioni.
- Sicurezza dei file trasferiti: le procedure generavano, importavano ed esportavano file anche verso sistemi remoti, imponendo la cifratura obbligatoria dei contenuti in entrambi i sensi.