Migrazione da ESB Java Custom a Mule 4: una transizione efficace
Con il passare del tempo, un sistema nevralgico come l’ESB rischia di diventare complesso e poco manutenibile, specialmente quando nuovi sviluppi e modifiche si accumulano rapidamente. Sensei è intervenuta proprio in questo contesto, offrendo una soluzione di modernizzazione e stabilizzazione.
location
Milano
industry
Editoria
technology
Il contesto: la sfida per la modernizzazione digitale
Il cliente, un’importante azienda nel settore della gestione dei diritti d’autore e della raccolta dei compensi per artisti e autori, aveva intrapreso un progetto di modernizzazione della propria infrastruttura digitale. Obiettivo principale: costruire una base tecnologica solida per sostenere il futuro della digitalizzazione e ottimizzare i processi aziendali.
Tuttavia, l’infrastruttura ESB, sviluppata su una base Java legacy, presentava notevoli sfide di stabilità e governabilità, essendo stata soggetta a continue e rapide modifiche che avevano portato a un "spaghetti code" con documentazione incompleta.
Le problematiche riscontrate
L'esigenza critica era duplice: da una parte stabilizzare un sistema diventato difficilmente manutenibile, dall’altra migliorare la documentazione e introdurre metriche di monitoraggio delle performance per poter individuare tempestivamente eventuali rallentamenti. Il cliente gestiva più di 700 API distribuite su 25 processi che elaboravano oltre 10 milioni di transazioni mensili, una scala che rendeva particolarmente complessa la gestione di una migrazione.
In questo scenario, la mancanza di una documentazione precisa e aggiornata rappresentava un ulteriore ostacolo, rendendo arduo intervenire in caso di malfunzionamenti o guasti di sistema.
Il nostro intervento: un processo in più step per la massima efficienza
Abbiamo adottato un approccio strategico per garantire il successo dell’intervento:
- Mappatura e documentazione: Il primo passo è stato censire completamente gli endpoint, raccogliendo dati da più fonti, inclusi i log applicativi e di sistema. Questo censimento ha permesso di individuare funzionalità obsolete, da deprecare o rimuovere, consentendo di stabilire una base stabile per la nuova documentazione.
- Approccio Document-Driven Design (DDD): Utilizzando Anypoint Platform di MuleSoft, abbiamo definito input e output di ciascun endpoint, formalizzandoli in RAML (RESTful API Modeling Language) per renderli accessibili anche a sviluppatori terzi. Questo approccio ha facilitato la comunicazione tra team e l’integrazione con sistemi esterni, rendendo l'intero sistema più trasparente e governabile.
- Implementazione della nuova logica di processo: Importando le specifiche documentate in Anypoint Studio, abbiamo riscritto la logica di processo per ogni endpoint, stabilendo un design API più robusto e resistente a futuri cambiamenti. Ogni nuova specifica e la documentazione sono state aggiornate in modo sincrono per garantire un allineamento costante.
- Migrazione graduale con reverse proxy: A causa della complessità e della dimensione del progetto, abbiamo implementato un rollout incrementale con l’utilizzo di un reverse proxy. Questo ha permesso la coesistenza del vecchio e del nuovo sistema, reindirizzando il traffico verso le nuove API una volta attivate, con possibilità di rollback sugli endpoint singoli in caso di problemi, minimizzando i rischi operativi.
Le soluzioni tecniche adottate
Abbiamo impiegato le seguenti tecnologie per raggiungere gli obiettivi prefissati:
- Anypoint Platform di MuleSoft: utilizzata per il design delle API, la gestione degli endpoint e la documentazione, ha consentito di organizzare e monitorare l’intero processo di migrazione.
- Reverse Proxy: ha garantito un rollout incrementale, permettendo di reindirizzare le richieste verso endpoint specifici e mantenere la continuità operativa.
- Formalizzazione in RAML: utilizzando un formato leggibile sia dagli sviluppatori che dai sistemi di integrazione, abbiamo migliorato la leggibilità e la tracciabilità delle API.
Risultati ottenuti
Grazie al nostro intervento, il cliente ha ottenuto i seguenti risultati:
- Miglioramento della stabilità: il nuovo sistema, con un’architettura snella e una documentazione esaustiva, è diventato più stabile e facile da monitorare.
- Maggiore governabilità: l’intero sistema è ora tracciato, documentato e organizzato in modo da consentire sviluppi successivi senza compromettere la struttura originale.
- Monitoraggio delle performance: sono stati introdotti checkpoint per monitorare il sistema in tempo reale, permettendo di identificare e risolvere velocemente eventuali colli di bottiglia.
Conclusioni: una maturità in divenire
Il progetto, ora in fase evolutiva, ha raggiunto un livello di maturità tale da richiedere solo una squadra ridotta per la manutenzione. Il cliente ha manifestato soddisfazione per la stabilità e la governabilità raggiunte, elementi che hanno reso gli sviluppi futuri più agili e sicuri.
Grazie all'implementazione di regole di rewrite precise per ogni endpoint e alla struttura stateless delle API REST, Sensei è riuscito a gestire efficacemente qualsiasi problema, effettuando rollback rapidi verso il sistema preesistente quando necessario. Questo ha permesso di mantenere i tempi di disservizio praticamente nulli. Siamo soddisfatti della loro capacità di garantire una transizione fluida e senza interruzioni significative.