Modernizzazione di un software di monitoraggio consumi, allarmi e guasti

CLIENTE:

Società multinazionale italiana leder nella produzione di sistemi di controllo e componentistica per la refrigerazione

BENEFICI:

Maggiore scalabilità del software esistente, consentendo maggiore efficienza nell’uso delle risorse cloud e una piena aderenza alle esigenze di crescita del business.

Riduzione dei fuori sevizio (con obiettivo zero downtime), grazie all’introduzione del Continuous Deployment e di tecniche per il deploy blue/green per l’aggiornamento su cloud del software.

Diffusione conoscenza e pratica alla programmazione dei microservizi nel team sviluppo.

Introduzione del concetto di immutable infrastructure, tramite il rilascio di un artifact da unico codebase, pronto al deploy in vari ambienti.

CASE STUDY

LA SFIDA

Modernizzare un’applicazione legacy per supportare l’espansione dei nuovi clienti mantenendo la qualità del servizio sull’installato esistente.

LA SOLUZIONE

Per rispondere alle esigenze di ammodernamento dell’applicazione del cliente è stato necessario intraprendere prima un percorso di aggiornamento delle competenze (nozioni sulle infrastrutture cloud, elementi specifici dei cloud provider, nuovi tool e tecnologie cloud native, nuovi pattern di sviluppo software) e di acquisizione di nuove nozioni nel processo di sviluppo (metodologie collaborative, assimilazione di best practices, sviluppo di disciplina all’interno del team), il tutto elaborato attraverso una strategia di medio periodo con una roadmap che prevedeva diverse fasi e una gestione graduale dell’ammodernamento tramite processi iterativi.
Le principali tecnologie utilizzate, tutte integrate su infrastruttura cloud di Aws, sono: Cloud AWS, Java, Apache Tomcat, Spring e Spring-mvc, Struts, ActiveMQ, JPA e Hibernate, Maven, Jaspersoft, ETL (Pentaho Data Integrator più script in Python), Database PostgreSQL e scheduler pgAgent, Terraform.

IL NOSTRO LAVORO

Sorint.lab è stata incaricata del progetto di application modernization del software custom utilizzato per il monitoraggio di consumi, allarmi e guasti, affiancando alla soluzione monolitica on-premise, in uso per la gestione del vasto installato presente, una soluzione cloud-ready basata su container da utilizzarsi per tutti i nuovi clienti.
L’attività ha comportato la progettazione e lo sviluppo applicativo, in ambito IoT, in Cloud; la progettazione e la configurazione dell’infrastruttura cloud sottostante l’applicazione e la realizzazione della pipeline di CI/CD in cloud per lo sviluppo.
L’attività è stata suddivisa in fasi:
Code analysis: è stato analizzato il codice sorgente dell’applicazione esistente per capire lo stato di partenza per la transizione ai microservizi.

Microservices reengineering: fase a sua volta suddivisa tra
– Analisi Business requirements: analisi dei requisiti del prodotto ed evoluzione futura (differenziazione servizi tra i vari clienti), individuazione dei microservizi e dei loro boundaries.
– Transizione a microservizi: analisi tecnica dell’evoluzione, che comprende API definition, Redesign authentication/authorization, Multi-tenancy design, Logging, Refactoring UI and UX, esposizione per ogni microservizio di metriche e stato, introduzione dei test nel codice di ogni microservizio.
– Single Tenant & Automation: ha previsto l’installazione e configurazione di Terraform per poter replicare l’attuale configurazione AWS dei singoli account clienti su ogni nuovo cliente aggiunto.

Continuous deployment:
– Introduzione alle tecniche di automazione per il CD
– Integrazione con AWS: deploy in ambiente di test della soluzione

Menu