Torna al Blog
Case Study: Fintech 8 min read

Fintech Core Revamp: Da VB6 a .NET 8 con Zero Downtime

DV
Davide Iacovici
Senior .NET Architect & Founder

The Snapshot

CLIENTE: Banca Cooperativa Italiana
SETTORE: Banking & Fintech
DURATA: 12 Mesi (2024)
TEAM: 4 Senior Developers + 1 Architect
TECNOLOGIE: .NET 8, Azure, React, SQL Server
METODOLOGIA: Strangler Pattern + CQRS
RISULTATI CHIAVE:
  • ✓ 500.000+ transazioni giornaliere migrate
  • 0 minuti di downtime in produzione
  • ✓ Performance migliorate del 340%
  • ✓ 2.000+ pagamenti/gestiti in simultanea (vs 150 prima)
  • ✓ Team interno autonomo nella manutenzione

Un gestionale bancario sviluppato in Visual Basic 6, con 25 anni di storia e zero documentazione. La sfida: migrare a .NET 8 e microservizi senza spegnere l'azienda nemmeno per un secondo.

La Sfida: "Non Possiamo Spremere"

Quando il cliente ci ha contattato, la situazione era critica. Il loro gestionale core scritto in VB6 funzionava, ma stava collassando sotto il carico. I dipendenti non riuscivano più a lavorare il lunedì mattina per il timeout dei server.

Il problema: 150 pagamenti contemporanei saturavano il sistema. Con l'aumento del lavoro da remoto post-pandemia, questo limite era diventato insostenibile.

Ma la vera sfida era questa: "Non possiamo spegnere il sistema nemmeno per un minuto". 500.000 transazioni al giorno significano 6 transazioni al secondo, 24/7. Anche 5 minuti di downtime = clienti bloccati alle casse = perdita di fiducia = problemi bancari veri.

Perché Abbiamo Accettato

Davide, nostro founder, ha passato 15 anni della sua carriera a migrare sistemi legacy nel banking. Conosceva esattamente la complessità: nessuno sa come funziona il codice VB6, l'originale è andato perso anni fa, e la documentazione inesistente.

Ma sapeva anche che con .NET 8 e un approccio basato sul Strangler Pattern, potevamo farlo. Era la sfida perfetta per dimostrare che la legacy migration non deve essere un incubo.

La Soluzione: Strangler Pattern in Pratica

Non abbiamo riscritto tutto da zero. Abbiamo "soffocato" il vecchio sistema pezzo per pezzo, sostituendo le funzionalità una alla volta.

Fase 1: La "Shadow" Database (Mesi 1-3)

Prima di toccare anche solo una riga di codice VB6, abbiamo creato un database parallelo. Ogni transazione veniva scritta sia su SQL Server 2000 (vecchio) che su SQL Server 2022 (nuovo) in tempo reale.

Questo ci ha permesso di:

  • Validare che il nuovo schema fosse corretto senza rischi
  • Avere un backup perfetto dei dati in tempo reale
  • Testare le performance del nuovo database sotto carico reale

Fase 2: API Gateway Proxy (Mesi 4-6)

Abbiamo costruito un API Gateway in .NET 8 che intercettava tutte le richieste. In base all'operazione richiesta:

  • Se la funzione era già migrata → girava la richiesta al nuovo servizio
  • Se non lo era → passava la richiesta al sistema VB6 come proxy

Risultato: Per gli utenti, nulla cambiava. L'URL rimaneva lo stesso, ma dietro le quinte il traffico veniva instradato in modo intelligente.

Fase 3: Microservizi CQRS (Mesi 7-10)

Per ogni modulo (Pagamenti, Conti, Report, ecc.), abbiamo creato un microservizio separato usando CQRS (Command Query Responsibility Segregation):

  • Read Side: Query ottimizzate per velocità, con cache Redis
  • Write Side: Comandi transazionali con outbox pattern per affidabilità

Questo ci ha permesso di scalare le letture e le scritture in modo indipendente, massimizzando le performance dove serviva di più.

Fase 4: Frontend React (Mesi 11-12)

L'interfaccia utente è stata completamente riscritta in React, comunicando con i nuovi microservizi via REST e SignalR per aggiornamenti real-time.

Il Momento della Verità: Cutover Day

Dopo 12 mesi di lavoro silenzioso, è arrivato il giorno dello switch-off del vecchio sistema VB6. Il piano:

  1. Notifica a tutti i clienti 30 giorni prima
  2. Switch programmato per domenica 3:00 AM (traffico minimo)
  3. Team di 5 persone in call pronta
  4. Rollback plan testato 10 volte

Il risultato: Alle 3:15 AM, il vecchio server VB6 è stato spento. Nessuno se n'è accorto. Le metriche di monitoring non hanno mostrato nemmeno un blip. Il sistema nuovo ha preso il carico senza problemi.

I Risultati: Oltre le Aspettative

Dodici mesi dopo, i numeri parlano chiaro:

340%
Performance Migliorate
0 min
Downtime in Produzione
12x
Capacità Transazionale

Ma forse il risultato più importante è questo: il team interno della banca è ora in grado di manutenere il sistema da solo. Abbiamo documentato tutto, formato il loro staff, e creato pipeline CI/CD per deployments automatici. Non dipendono più da noi per le modifiche giornaliere.

Lezioni Apprese

1. La documentazione vale più del codice
Il VB6 era andato perso, ma il valore maggiore non era nel codice stesso: era nella conoscenza dei processi bancari che quel codice incarnava. La prima cosa che abbiamo fatto è stata intervistare gli utenti e documentare ogni flusso.

2. Zero downtime è possibile se pianifichi
Strangler Pattern + Shadow Database + CQRS = formula magica per migrazioni senza stop. Non è veloce, ma funziona.

3. Coinvolgi il cliente nel processo
I developer della banca hanno lavorato con noi fianco a fianco. Quando siamo partiti, sapevano come funziona tutto. Questo è il vero successo: non li abbiamo resi dipendenti.

Conclusione: Possiamo Fare Lo Stesso per Te?

La tua azienda ha un sistema legacy che ti trattiene? Un ERP degli anni '90, un CRM customizzato che nessuno capisce più, un database Access che "per ora funziona"?

Non devi buttare via tutto e ricominciare. Non devi spegnere l'azienda per una settimana. C'è un modo migliore.

La migrazione che abbiamo fatto per questa banca è la stessa che possiamo fare per te. .NET 8 è veloce, affidabile, e con l'approccio giusto può coesistere col tuo vecchio sistema finché non sei pronto a staccare la spina.

Vuoi sapere quanto costerebbe migrare il tuo sistema?

Prenota una call di 30 minuti con Davide. Analizzeremo la tua situazione e ti daremo un piano concreto, senza impegno.

Prenota Call Gratuita

Ti è stato utile questo articolo?