Al giorno d’oggi, uno dei passi obbligati verso l’innovazione digitale di un’azienda è sicuramente l’adozione di una infrastruttura IT basata sul cloud.

I cloud provider moderni, infatti, sono arrivati ad offrire servizi completi, maturi e molto competitivi rispetto alle tecnologie precedenti. Inoltre, abbandonare l’approccio on‑premise, spegnendo i data‑center proprietari sui quali è installato il software, in favore del cloud può portare a un notevole risparmio economico.

Molte aziende si trovano, quindi, ad affrontare la migrazione dei propri sistemi software da on‑premise al cloud. Migrazioni di questo tipo possono essere molto complicate e dispendiose, sia in termini di tempo che economici, se non vengono affrontate nel giusto modo e con i giusti strumenti. In questo articolo, invece, vi raccontiamo come una compagnia assicurativa è riuscita ad effettuare facilmente questa migrazione cloud grazie anche all’adozione di Mia‑Platform; oltre a facilitare tutte le operazioni, Mia‑Platform ha permesso di rendere trasparenti tutti i cambiamenti infrastrutturali e di poter continuare a garantire il servizio senza interruzioni.

 

Prima della migrazione cloud: le necessità

La compagnia assicurativa possiede un proprio data‑center composto da diversi server, sui quali gira tutto il software della compagnia; una grossa fetta di questo software è implementata su un’installazione on‑premise di Mia‑Platform. In particolare, la piattaforma on‑premise conta un ecosistema composto da circa 300 microservizi containerizzati in immagini Docker eseguite su un cluster OpenShift.
Questi microservizi si interfacciano principalmente con:

  • un cluster MongoDB;
  • un cluster Kafka;
  • un’istanza di Redis.

Oltre al software implementato con Mia‑Platform, il data‑center contiene anche altri gestionali della compagnia e alcuni strumenti di DevOps quali Jenkins, GitLab e Nexus. Questi, però, non sono oggetto della migrazione.

Come mostra l’immagine seguente, il tutto è replicato per gli ambienti di produzione e pre‑produzione.

mia-platform-migrazione-cloud-architettura-partenza

I costi e i problemi di manutenzione di tutto questo hardware sono notevoli: oltre al cospicuo consumo di energia del data‑center, una voce di costo considerevole è proprio la licenza on‑premise di OpenShift.

Inoltre, ci sono i costi di manutenzione del data‑center che consistono in: aggiornamento dei sistemi operativi, aggiornamenti software, interventi di manutenzione sulla rete ecc. Tutte queste sono attività che richiedono un grosso dispendio di risorse.

A ciò si aggiunge anche il tema della sicurezza dell’intero data‑center, che, con l’aumentare del software in esso contenuto, diventa sempre più difficile da gestire.

 

La soluzione

Per far fronte a queste difficoltà, il nostro cliente ha deciso di fare il primo passo verso il cloud, migrando tutto l’ecosistema di microservizi costruito con Mia‑Platform.

Si è deciso quindi di passare:

  • da OpenShift on‑premise a Google Kubernetes Engine (GKE) su Google Cloud;
  • da MongoDB on‑premise a MongoDB Atlas;
  • da Kafka on‑premise a Kafka Confluent;
  • da Redis on‑premise ad un’istanza di Redis installata su Google Cloud.

Schematizzando, l’infrastruttura che si voleva ottenere è la seguente:

mia-platform-migrazione-cloud-architettura-target

Come Mia‑Platform facilita la migrazione cloud

L’impronta cloud‑native del prodotto di Mia‑Platform ha decisamente facilitato il lavoro di migrazione. Di seguito riportiamo i principali vantaggi di cui la compagnia ha beneficiato grazie alla nostra soluzione.

 

La containerizzazione

Come già ricordato sopra, ogni microservizio sviluppato su Mia‑Platform è containerizzato in un’immagine Docker, in modo da poter essere eseguito su qualunque hardware e sistema operativo. Questa caratteristica di Docker, tecnologia integrata all’interno della piattaforma, ci ha permesso di effettuare la migrazione degli applicativi senza il bisogno di modificare neanche una riga di codice sorgente e senza il minimo problema di compatibilità con i nuovi hardware e sistemi operativi cloud.

Utilizzando le pipeline automatiche di Mia‑Platform, le stesse immagini Docker eseguite on‑premise su OpenShift sono state rilasciate su GKE, senza necessità di alcun intervento ulteriore da parte degli sviluppatori.

 

L’automazione

Come i lettori più esperti sapranno, i file di configurazione di OpenShift sono leggermente diversi da quelli accettati da Kubernetes. Un esempio è il file deployment.yml che permette di definire la risorsa DepolymentConfig, compatibile soltanto con OpenShift.

La gestione manuale di un nuovo file di configurazione è un processo lungo, complesso e rischioso; grazie a Mia‑Platform, però, questa operazione è stata semplicissima. La Console di Mia‑Platform, infatti, permette di generare in automatico dei file di configurazione sia per OpenShift che per Kubernetes: per ottenere questi file è sufficiente cambiare solo un parametro di configurazione sull’interfaccia della Console.

In questo modo, lo sviluppatore definisce da Console le caratteristiche del proprio servizio (nome, immagine Docker, limiti di memoria e CPU, variabili d’ambiente ecc.) senza doversi preoccupare dei tecnicismi legati ad OpenShift o Kubernetes. Sarà la Console che, a partire da ciò che ha definito l’utente da front‑end, genererà in automatico i file di configurazione necessari a rilasciare i microservizi su una piattaforma o sull’altra.

mia-platform-migrazione-cloud-automazione

Ai fini della migrazione, quindi, ci è bastato modificare questo parametro di configurazione della Console di Mia‑Platform per rendere automaticamente compatibili con Kubernetes tutti i file di OpenShift.

 

Pipeline di deploy centralizzate

Una delle principali funzionalità offerte da Mia‑Platform è l’automatizzazione delle pipeline di build e deploy, sia Jenkins che GitLab‑CI. Nel caso in esame, la compagnia assicurativa utilizzava Jenkins, quindi ci concentreremo su questo strumento.

Tutti i 300 microservizi del nostro cliente vengono rilasciati dalla medesima pipeline: ovvero, il Jenkinsfile è unico e parametrico. I parametri della pipeline sono principalmente:

  • il namespace Kubernetes in cui rilasciare;
  • il branch Git da rilasciare;
  • l’ambiente su cui rilasciare.

Nel momento in cui si crea un microservizio da Console, viene creato in automatico un job Jenkins dedicato a quel microservizio, che, però, è collegato al Jenkinsfile unico. L’adozione di un Jenkinsfile unico garantisce che il codice delle pipeline non sia duplicato e che un qualsiasi cambiamento debba essere applicato soltanto su un file.

Nel caso della migrazione, quindi, il cambio cluster è costato soltanto la sostituzione della stringa di connessione al cluster: grazie al Jenkinsfile unico, la stringa è stata sostituita una sola volta su un solo file, invece che per ciascun microservizio.

 

L’area runtime di Mia‑Platform Console

La migrazione è stata fatta per gradi, iniziando a migrare sul cloud solo uno dei due ambienti; l’altro ambiente è stato migrato in un secondo momento, una volta certi che tutto funzionasse correttamente. Quindi è stato migrato sul cloud per primo l’ambiente di pre‑produzione, mentre quello di produzione è stato inizialmente mantenuto sull’infrastruttura on‑premise.

Questa situazione ibrida avrebbe potuto disorientare i team di sviluppo: infatti, senza l’appoggio di Mia‑Platform, avrebbero dovuto eseguire l’accesso su due piattaforme - OpenShift e GKE - completamente diverse, con account diversi, per monitorare i log e lo stato dei propri microservizi.

L’area runtime di Mia‑Platform Console evita questo tipo di problemi, semplificando il lavoro e migliorando l’esperienza dello sviluppatore. Da questa sezione, infatti, lo sviluppatore può controllare stato e log dei propri microservizi da una comoda interfaccia grafica, indipendentemente dal cluster sul quale i servizi sono stati rilasciati.

Anche in questo caso, per far sì che questa sezione di Mia‑Platform Console mostri allo sviluppatore i dati presi dal cluster GKE invece che quelli presi da OpenShift, è stato sufficiente modificare un solo parametro di configurazione della Console stessa. Grazie a Mia‑Platform, il nostro cliente ha potuto affrontare questa fase, che forse è la più delicata e problematica quando si affronta una migrazione di questo tipo, in modo rapido e senza complicazioni.

 

Variabili d’ambiente della piattaforma

Strumenti quali MongoDB, Kafka e Redis sono considerati parte integrante della piattaforma e, in quanto tali, le stringhe di connessione a questi strumenti sono definite a livello di piattaforma. Ciò significa che se uno sviluppatore ha la necessità di connettersi ad uno di questi strumenti, dovrà definire una variabile d’ambiente nella configurazione del suo microservizio; non dovrà, però, valorizzarla con la stringa di connessione vera e propria, bensì con un semplice placeholder che sarà sostituito a deploy‑time dalla pipeline di rilascio.
Ad esempio, per connettersi a MongoDB, bisognerà valorizzare una variabile d’ambiente con la stringa . Sarà poi la pipeline di deploy ad occuparsi di interpolare opportunamente questa stringa con l’URL per la connessione a MongoDB.

Ai fini della migrazione, questa funzionalità ci ha permesso di migrare MongoDB, Kafka e Redis sul cloud senza dover richiedere agli sviluppatori alcun cambio di configurazione. La modifica è stata infatti apportata una sola volta al Jenkinsfile che effettua l’interpolazione del placeholder, ed ha avuto automaticamente effetto su tutti i microservizi.

 

Conclusione

La migrazione sul cloud è certamente una sfida tecnologica che molte aziende si trovano ad affrontare. Il livello di difficoltà di questa sfida dipende molto dal punto di partenza: migrare del software on‑premise, implementato però su uno stack tecnologico cloud‑native come quello di Mia‑Platform, semplifica la maggior parte delle operazioni.

L’adozione di strumenti come container, orchestratori e pipeline automatizzate è indispensabile per diminuire il time‑to‑market di nuovi prodotti software e migliorarne la governance.
Per una migrazione più graduale il primo passo è l’adozione di questi strumenti cloud, anche se installati on-premise sul proprio data‑center. Il secondo passo è sicuramente l’adozione di una piattaforma come Mia‑Platform, che permette di semplificare tutti i processi e affrontare più serenamente e velocemente la migrazione. Da lì in poi, la strada verso il cloud sarà tutta in discesa.


L’articolo è stato scritto da Luca Scannapieco, Senior Technical Leader.

Torna all'inizio

Mia-Platform Legacy Modernization White Paper

© MIA s.r.l. Tutti i diritti riservati