Spindox ridisegna la logica e la tecnologia del customer portal di un’azienda leader nel settore logistico. Architettura a microservizi e veste grafica inedita. L’applicazione è fruibile anche da mobile.
Uno dei principali player della logistica e dei trasporti attivi in Italia ha affidato a Spindox il compito di ripensare il proprio customer portal, definendone ex novo la user experience e l’architettura tecnologica. L’opportunità è nata dall’esigenza di rinnovare il vecchio portale, sviluppato nel 2010 con tecnologia Adobe Flash. A fine 2020, infatti, il plug in di Flash è stato dimesso da tutti i browser e lo ha reso di fatto inutilizzabile. Da qui l’urgenza di realizzare un nuovo portale, migliore di quello passato a livello di performance e di interfaccia utente. La nuova soluzione prevede un’architettura a microservizi, che rappresenta un autentico salto di paradigma rispetto all’impostazione monolitica del passato. Il customer portal consente agli utenti di effettuare il tracking delle spedizioni in tempo reale, gestire il processo di reverse-logistics e svolgere le ricerche dello storico su ordini e spedizioni. Queste funzionalità sono disponibili sia via web sia da mobile ed esporre API per poter comunicare con applicazioni esterne sviluppate da clienti e fornitori.
Soluzione
Con la soluzione implementata da Spindox il customer portal passa da un’architettura monolitica ad una a microservizi. Ogni microservizio si occupa di gestire una singola funzionalità. Per lo sviluppo dei singoli componenti sono state sperimentate tecnologie ad hoc che hanno migliorato in misura significativa la performance dell’applicazione nel suo complesso. Per avere un ambiente integrato con tutte le funzionalità necessarie si è usato il framework Jhipster:
- Servizio di autenticazione e autorizzazione UUA con protocollo OAuth2 standard;
- Gateway per accesso alle risorse;
- Registry per il routing, il load balancing e la scalabilità delle richieste;
La comunicazione tra i microservizi avviene tramite interfaccia REST. Questo garantisce l’indipendenza fra i servizi ed evita ogni forma di accoppiamento.
Per il front-end del nuovo customer portal si è scelto di lavorare con il framework Angular 8, che è responsive e user-friendly.
Per il layer dei dati è stata usata una tecnologia NoSQL. In particolare la scelta è caduta su Couchbase che permette una lettura più veloce dei dati e offre all’utente un’esperienza più responsive. Inoltre, per migliorare la performance, dove possibile si è deciso di rendere alcune richieste asincrone e sicure grazie al broker di messaggi RabbitMQ.
Vantaggi
Il nuovo customer portal dà la possibilità agli utenti di effettuare in tempo reale il tracking delle spedizioni e visualizzare la posizione della merce sulla mappa grazie all’integrazione con OpenStreetMap. Il portale ora è utilizzabile non solo da desktop ma anche da smartphone e tablet e si presenta con una interfaccia molto intuitiva. È possibile estrarre informazioni senza passare dalla GUI attraverso l’esposizione di interfacce REST.
L’architettura del customer portal a microservizi ha generato molti vantaggi:
- Velocità, resilienza e facilità di deployment: i tempi di rilascio del software sono molto brevi. Inoltre, l’architettura a microservizi permette di essere flessibili ai cambiamenti e rispondere velocemente alle esigenze del cliente. Com’è noto, infatti, in una architettura monolitica per una singola modifica occorre rivedere tutta l’applicazione, mentre lavorando con microservizi si può intervenire “chirurgicamente” sul singolo servizio. Addirittura, se opportunamente codificati, i servizi possono essere rilasciati “a caldo”, senza fermare l’intero portale.
- Sperimentazione e sostituibilità: grazie alla facilità con cui di può rilasciare un microservizio, è possibile sperimentare nuove tecnologie. Quando queste risultano adeguate, il risultato sarà una performance superiore. Se viceversa si incontrano problemi, è comunque facile sostituire un servizio con uno nuovo, a condizione che implementi le stesse interfacce.
- Scalabilità: se un servizio diventa un “collo di bottiglia” è possibile aumentare il numero di istanze del servizio stesso senza cambiare nulla nel codice. Rendere un servizio sempre più piccolo e specifico aumenta i benefici relativi all’indipendenza tra le parti, anche se aumenta la complessità di gestire un numero elevato di parti.