La guida

Architettura cloud a microservizi: cos’è, come funziona e come implementarla

L’architettura a microservizi è l’evoluzione delle applicazioni monolitiche e delle architetture orientate ai servizi. Nata oltre 20 anni fa, è oggi una best practice grazie all’avvento del cloud. Ecco tutti i vantaggi e come effettuare la migrazione in azienda

Pubblicato il 13 Set 2022

Giuseppe Arcidiacono

Responsabile Sistema Informativo at ARCEA

cloud - Strategia Cloud Italia - Gaia-X

L’evoluzione che ha portato all’architettura dei microservizi cloud non è recente ma affonda le proprie radici ad oltre 20 anni fa, un’era geologica dal punto di vista informatico.

Il concetto di struttura di servizi, però, pur essendo più antico dei cosiddetti “container” ed antecedente anche all’era delle moderne applicazioni, è diventata una vera e propria best practice con l’avvento delle modernissime infrastrutture cloud.

Strategia Cloud Italia, avanti tutta col Polo Strategico nazionale: l’avvio lavori e i prossimi step

Infatti, nel frenetico processo di digitalizzazione e modernizzazione delle organizzazioni pubbliche e private, costellato da repentini cambi di direzione, irruzioni improvvise di nuove tecnologie o di emergenti architetture informatiche, un elemento sembra essere connotato da certezze ormai inossidabili: l’era dei datacenter completamente “privati” e dei servizi erogati esclusivamente “in locale” sta volgendo rapidamente al termine per lasciare spazio alla vera e propria rivoluzione apportata dal Cloud e da tutto ciò che orbita intorno alla grande nuvola multimediale.

La nuova frontiera delle architetture informatiche è rappresentata dalla realizzazione di infrastrutture ibride, in grado di fornire servizi di altissima qualità in maniera del tutto indipendente dalle dislocazioni geografiche, dalle caratteristiche fisiche o virtuali delle reti di comunicazione, dei dispositivi di elaborazione e dei singoli elementi che compongono un sistema informativo.

Grazie soprattutto all’elevatissima velocità di trasmissione garantita dalla banda ultra larga o dal 5G, all’implementazione di tecnologie in grado di far colloquiare tra loro, senza praticamente alcun ritardo percettibile, “oggetti” distanti migliaia di chilometri e ad una offerta di mercato sempre più ricca e variegata di servizi iperspecialistici, le applicazioni informatiche moderne si basano su un insieme di componenti e di soluzioni tecniche che fino a poco tempo fa erano considerati incompatibili o difficilmente conciliabili.

Sempre più spesso, ad esempio, si assiste alla realizzazione di sistemi che, pur presentandosi all’utente finale come omogenei o unitari, sono composti da elementi completamente differenti per collocazione geografica, linguaggi di programmazione utilizzati, infrastrutture hardware di supporto etc.

Si tratta, in estrema sintesi, di una trasformazione ormai irreversibile che è partita dal Cloud e che sta investendo tutto l’esteso mondo dell’Information Technology.

Anche l’articolata e complessa macchina burocratica italiana, grazie alla visione strategica fornita dal Piano Triennale ICT ma soprattutto agli ingenti finanziamenti derivanti dall’attuazione del PNRR, ha avviato un colossale piano di migrazione verso il Polo Strategico Nazionale, che rappresenterà un vero e proprio quartier generale informatico “distribuito” in grado di ospitare, a regime, i servizi di tutti gli enti centrali e periferici.

Il passaggio verso i nuovi meccanismi di funzionamento, però, non si limita ad un semplice “trasloco” fisico dei dispositivi in grado di fornire capacità computazionale, connettività o strumenti di memorizzazione: il Cloud, non a caso definito fin dalle sue origini come una tecnologia “disruptive” (ossia in grado di stravolgere completamente lo stato dell’arte e di proiettare l’informatica verso scenari fino a poco tempo fa inimmaginabili), richiede:

  • un ripensamento della propria organizzazione IT,
  • una reingegnerizzazione della catena di produzione dei servizi
  • una rivisitazione di tutti gli ingranaggi che compongono la propria architettura digitale.

In tale ambito, si stanno sempre più affermando quale approccio architetturale di fondamentale importanza i cosiddetti “microservizi” che, in estrema sintesi, permettono di costruire un’applicazione come un insieme di piccoli tasselli indipendenti ma connessi tra loro grazie a specifiche logiche di orchestrazione, coordinamento, armonizzazione ed integrazione.

Prospettiva “verticale” di un’infrastruttura a microservizi. Fonte: Oracle.

Da dove nascono i microservizi

Per comprendere al meglio i meccanismi di funzionamento ma anche i vantaggi intrinsecamente connessi alle architetture di microservizi attualmente implementate e rese disponibili da tutti i principali player, è fondamentale ripercorrere, seppur sinteticamente, il percorso che ne ha determinato la nascita.

Fase 1: le applicazioni monolitiche

Fino a non troppi anni fa, ogni applicazione, residente su un unico server, si articolava fondamentalmente in tre macro-livelli:

  • La “Presentazione”, ossia lo strato che determina il modo con il quale un programma si mostra agli utenti;
  • La “Logica applicativa”, che definisce le regole di funzionamento in grado di far funzionare l’intera architettura;
  • La “Banca dati”, nella quale sono rese persistenti le informazioni trattate nel corso del normale utilizzo della piattaforma software.

Esempio di un’applicazione monolitica. Fonte: Microsoft

Tale modello presentava una serie di problematiche e controindicazioni che hanno di fatto condotto ad un graduale quanto inesorabile declino.

Innanzitutto, i differenti strati dovevano necessariamente interloquire tra loro in maniera rigida e non personalizzabile (l’utente, ad esempio, aveva accesso al solo layer di presentazione che, a sua volta, per ottenere una informazione contenuta nel database doveva necessariamente passare attraverso la mediazione dei servizi offerti dalla logica applicativa).

In tal modo, le applicazioni risultavano ingessate, sovradimensionate, difficilmente manutenibili ed anche estremamente costose.

Un ulteriore effetto collaterale di tale impostazione era, inoltre, quello di creare veri e propri “silos” o compartimenti stagni, nei quali ogni programma doveva replicare componenti, librerie e meccanismi di funzionamento che al contrario avrebbero potuto essere condivisi e riutilizzabili, con evidenti risparmi ed ottimizzazioni.

Fase 2: l’architettura orientata ai servizi (SOA)

Verso la metà degli anni 2000, le architetture iniziarono a modificarsi e ad essere articolate in componenti denominati servizi, che implementavano funzionalità “verticali” ed erano tra loro interconnessi attraverso “bus” virtuali in grado di svolgere funzioni analoghe a quelle degli omonimi componenti hardware presenti all’interno dei personal computer.

Tale approccio, comunemente conosciuto tra gli addetti ai lavori come SOA (Service Oriented Architecture o, in italiano, Architettura orientata ai servizi) consente agli amministratori di implementare cicli di sviluppo più brevi in quanto crea un vero e proprio “disaccoppiamento”.

Architettura SOA. Fonte: Openpr

Le SOA, in particolare, hanno beneficiato in maniera forte dell’ascesa delle cosiddette macchine virtuali (VM), che hanno permesso di superare, grazie ad articolati framework di gestione, i limiti connessi all’utilizzo dei tradizionali dispositivi hardware: i servizi, infatti, possono essere distribuiti molto più rapidamente su VM più piccole rispetto alle precedenti applicazioni monolitiche allocate su server fisici.

Tali tecnologie, in particolare, si trovano alla base delle moderne applicazioni ad alta affidabilità e consentono di implementare efficaci strategie di “business continuity” e “disaster recovery”.

Come funzionano i microservizi cloud

In tale contesto, i microservizi cloud possono essere considerati come una evoluzione e, per qualche verso, una “esasperazione” dei principi fondanti della SOA: gli elementi atomici che costituivano i tasselli fondamentali delle prototipali architetture incentrate sui BUS sono divenuti sempre più specializzati, iper-focalizzati, completamente dedicati a funzionalità elementari poste a disposizione di chiunque ne abbia bisogno o necessità.

Ma una sostanziale differenza tra SOA e Microservizi risiede nella libertà di allocare i nuovi tasselli atomici in posizioni fisiche, geografiche o logiche anche estremamente differenti o distanti.

I microservizi, in estrema sintesi, si basano su principi di funzionamento e logiche implementative perfettamente sovrapponibili a quelle delle architetture cloud, nelle quali la capacità elaborativa, i dispositivi deputati a garantire l’archiviazione delle informazioni, i connettori finali verso gli utenti ed in generale tutti i componenti di un’applicazione possono colloquiare ed interagire tra loro in maniera del tutto indipendente dalla propria posizione o dalle caratteristiche interne.

Architettura a microservizi. Fonte: Microsoft

Un microservizio, in particolare, si pone l’obiettivo di affrontare un problema specifico, quale ad esempio una ricerca di dati, una funzione di registrazione o un aspetto particolare di un servizio Web. È immediatamente comprensibile come, in tal modo, risultino fortemente incrementate qualità fondamentali quali la flessibilità, la semplicità, l’adattabilità dei programmi, che possono essere aggiornati semplicemente rivisitando un piccolo tassello quale può essere considerato un micro-servizio.

Una delle principali caratteristiche di tale tecnologia è quella di consentire l’implementazione di una piattaforma software in grado di “autoripararsi”, ossia di avviare attività di diagnosi, individuazione dei guasti ed azioni di ripristino senza l’intervento dell’uomo, grazie a particolari sistemi di orchestrazione e bilanciamento del carico computazionale.

Le architetture di microservizi sono entrate in uso insieme a container di nuova generazione quale Docker, ossia a costrutti di “assemblaggio” (o, utilizzando un termine tecnico “packaging”) e distribuzione che hanno, di fatto, soppiantato le tradizionali macchine virtuali soprattutto perché consentono di distribuire il codice (e le librerie richieste) su qualsiasi sistema compatibile, senza limiti fisici o geografici, ossia in un cloud pubblico, in locale, in un hypervisor virtuale o addirittura sui classici server fisici.

I container costituiscono, di fatto, il vettore di distribuzione perfetto per i microservizi in quanto possono essere avviati in maniera praticamente istantanea (nell’ordine di pochi secondi), possono essere ridistribuiti rapidamente dopo un errore o una migrazione e possono essere ridimensionati rapidamente per soddisfare richieste emergenti o differenti rispetto al contesto iniziale.

I vantaggi dall’utilizzo dei microservizi cloud

I microservizi sono decentralizzati ed eseguiti su server diversi, ma funzionano comunque insieme, grazie ad opportune logiche di coordinamento ed orchestrazione, facendo convergere tutti gli sforzi verso l’unico obiettivo finale dell’applicazione intesa in senso unitario.

I vantaggi derivanti dall’implementazione di una architettura a micro-servizi sono davvero tanti e difficilmente sintetizzabili in poche frasi ma, tra gli altri, meritano una menzione particolare i seguenti:

  • È possibile aggiornare il codice in qualsiasi momento, utilizzando l’”integrazione continua/continuous delivery” (CI/CD), che permette di rilasciare piccole quantità di software invece di pacchetti di dimensioni estremamente elevate;
  • Poiché le modifiche si verificano sul back-end (ossia dietro le quinte), l’utente potrà continuare ad utilizzare l’applicazione senza subire alcun ritardo e senza accorgersi delle attività di manutenzione;
  • I team di sviluppo possono lavorare in parallelo focalizzando le proprie attenzioni su specifici microservizi, garantendo attività di manutenzione graduali, semplificate e maggiormente efficienti;
  • L’architettura a micro-servizi garantisce elevati livelli di fault-tolerance: poiché i singoli tasselli lavorano in maniera indipendente, il fallimento di un micro-servizio non preclude necessariamente il funzionamento dell’intero sistema, permettendo agli amministratori di gestire in maniera adeguata e rapida gli eventi anomali;
  • Poiché i micro-servizi sono specializzati nello svolgimento di una specifica funzione riescono sempre, se ben congegnati, a gestire gli errori ed a fornire risposte congruenti a fronte di eccezioni o malfunzionamenti della logica di funzionamento;
  • Il sistema, pertanto, è congegnato per essere quanto più possibile autonomo anche rispetto agli interventi degli operatori umani. Idealmente, l’unico momento in cui può essere richiesto un intervento “manuale” è rappresentato alla presenza di un “bug” di sistema che non può essere riparato in maniera automatica;
  • Il processo di sviluppo indipendente dei microservizi consente agli sviluppatori di scrivere ogni componente in un linguaggio di programmazione diverso, creando un’applicazione chiamata in gergo tecnico come “polyglot”. È possibile, in estrema sintesi, utilizzare lo strumento più efficace per ciascuna situazione, sviluppando in tal modo le applicazioni in maniera più snella, riducendo la complessità del codice e migliorando le prestazioni generali in termini di funzionalità offerta ed efficienza;
  • È possibile anche utilizzare hardware differenti in base alle diverse necessità di ogni microservizio, arrivando ad una situazione nella quale anche le componenti fisiche sono modellate, personalizzate ed adattate alle reali esigenze dell’architettura software. Ad esempio, un particolare componente potrebbe aver bisogno di una particolare tipologia di RAM mentre un altro potrebbe dover lavorare con uno specifico processore;
  • Considerando che i componenti di tali architetture sono estremamente granulari, risulta molto più facile migliorare e mantenere il codice;
  • Sviluppatori e gruppi di lavoro possono collaborare per garantire l’implementazione e la messa a disposizione di API in grado di garantire una piena interoperabilità tra i servizi;
  • Dopo aver disaccoppiato le capacità da un “monolite”, i team indipendenti possono rilasciare il proprio microservizio in modo indipendente, migliorando la performance dei gruppi di lavoro e riducendo drasticamente il “time to market”.

Migrazione e implementazione di microservizi: una strategia

Il processo di trasformazione di un’applicazione monolitica in microservizi rappresenta certamente una forma di modernizzazione che richiede un’attenta analisi preliminare, una pianificazione di dettaglio ma soprattutto una vera e propria strategia in grado di fissare obiettivi e monitorare costantemente la rotta e lo stato dell’arte.

Nel corso degli anni sono stati ideati e attuati con alterne fortune differenti modelli di migrazione, tra i quali particolare successo ha riscosso (e sta ancora riscuotendo) quello conosciuto come “Strangler Fig” o, in Italiano, “Fico Strangolatore”, che prende il nome dell’omonima pianta esotica in grado di aggredire una pianta ospite partendo dall’alto e facendo scendere le radici fino a terra in modo da costruire una vera e propria gabbia.

Esempio di “Strangler Fig” o “Fico Strangolatore”. Fonte: Wikipedia

L’idea di fondo è quella di far crescere e proliferare la nuova applicazione riducendo al contempo le funzionalità e lo “spazio vitale” dell’architettura “legacy”, che gradualmente tenderà a contrarsi senza causare disagi all’utente finale.

Diagram of the Strangler Fig pattern

Migrazione con modello Strangler Fig. Fonte: Microsoft

Il modello contribuisce, in particolare, a ridurre i rischi implicati dalla migrazione e a diluire l’attività di sviluppo nel tempo, sfruttando le caratteristiche di un’interfaccia che indirizza gli utenti in modo sicuro alle differenti funzionalità dell’applicazione in corso di evoluzione.

Una volta completato il processo, l’architettura si baserà esclusivamente sulle nuove logiche di funzionamento a microservizi con la garanzia di un’esecuzione sempre fluida, efficace ed efficiente.

Il supporto alla migrazione dai player internazionali

Ad ulteriore dimostrazione dell’importanza e dell’attualità dell’argomento, è opportuno sottolineare come tutti i principali player mondiali abbiano predisposto e pubblicato nei propri portali dedicati al cloud procedure estremamente dettagliate che suggeriscono alcuni passaggi operativi sottesi al refactoring di un “monolite” ed alla sua trasposizione verso un’architettura a mico-servizi.

Su Google Cloud , ad esempio, è specificato come “per disaccoppiare le funzionalità di un’applicazione monolitica, è necessario estrarre con attenzione i dati, la logica e i componenti rivolti all’utente e reindirizzarli gradualmente verso il nuovo servizio. Prima di passare allo spazio delle soluzioni, è importante avere un’idea chiara dello spazio dei problemi, che permette di definire i confini naturali del dominio che forniscono il livello di isolamento giusto”.

Sulla piattaforma “Docs” di Microsoft, invece, sono proposte diverse guide operativa finalizzate, tra l’altro, a progettare architettura di microservizi e eseguire la migrazione.

Anche Amazon, naturalmente, sulla propria piattaforma AWS dedica ampio spazio alle architetture a microservizi, descrivendo le caratteristiche di tale tecnologia, illustrandone i vantaggi e mettendo a disposizione una serie di strumenti per iniziare ad utilizzarle nel migliore dei modi.

Dopo aver lanciato negli anni scorsi la propria sfida al mercato del Cloud, anche Oracle propone soluzioni e metodologie finalizzate a incentivare e favorire la migrazione verso i microservizi, mettendo a disposizione i propri strumenti digitali ed il Know-How dei team di lavoro che quotidianamente lavorano su tale tematica.

Conclusioni

I microservizi rappresentano, per certi versi, un’anomalia nel panorama dell’informatica: pur essendo stati implementati per la prima volta oltre 20 anni fa (ossia in un’era digitale effettivamente primitiva) rappresentano un elemento di assoluto rilievo all’interno di una tecnologia rivoluzionaria come il Cloud.

Il principio di fondo è quello della iperspecializzazione di componenti atomici, che diventano sempre più piccoli e focalizzati su funzionalità estremamente circoscritte e pienamente definite.

Attraverso meccanismi di aggregazione, orchestrazione e armonizzazione è possibile far lavorare in maniera unitaria microservizi in maniera totalmente indipendente dalla dislocazione geografica, dai sistemi operativi, dalle macchine virtuali o dai server fisici utilizzati.

In tal modo è possibile focalizzare gli sforzi verso l’output da fornire all’utente ed incanalare tutti gli sforzi verso obiettivi concreti ed effettivi, tralasciando tutto ciò che è corollario o ortogonale rispetto al “core business”.

Nella fase di transizione verso il cloud, è necessario anche implementare strategie in grado di favorire la migrazione nella maniera più fluida ed efficiente possibile, garantendo sempre la continuità dei servizi insieme ad un graduale miglioramento delle prestazioni e delle funzionalità offerte.

In questa sfida, per fortuna, sono impegnati tutti i più grandi player planetari che sulle proprie piattaforme offrono non solo soluzioni tecnologiche ma anche guide, tutorial e svariate forme di supporto a chi vuole avviare il processo di modernizzazione dei propri sistemi informativi.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

EU Stories - La coesione innova l'Italia

Tutti
Iniziative
Analisi
Iniziative
Parte la campagna di comunicazione COINS
Analisi
La politica di coesione europea: motore della transizione digitale in Italia
Politiche UE
Il dibattito sul futuro della Politica di Coesione
Mobilità Sostenibile
L’impatto dei fondi di coesione sul territorio: un’esperienza di monitoraggio civico
Iniziative
Digital transformation, l’Emilia-Romagna rilancia sulle comunità tematiche
Politche ue
Fondi Coesione 2021-27: la “capacitazione amministrativa” aiuta a spenderli bene
Finanziamenti
Da BEI e Banca Sella 200 milioni di euro per sostenere l’innovazione di PMI e Mid-cap italiane
Analisi
Politiche di coesione Ue, il bilancio: cosa ci dice la relazione 2024
Politiche UE
Innovazione locale con i fondi di coesione: progetti di successo in Italia
Iniziative
Parte la campagna di comunicazione COINS
Analisi
La politica di coesione europea: motore della transizione digitale in Italia
Politiche UE
Il dibattito sul futuro della Politica di Coesione
Mobilità Sostenibile
L’impatto dei fondi di coesione sul territorio: un’esperienza di monitoraggio civico
Iniziative
Digital transformation, l’Emilia-Romagna rilancia sulle comunità tematiche
Politche ue
Fondi Coesione 2021-27: la “capacitazione amministrativa” aiuta a spenderli bene
Finanziamenti
Da BEI e Banca Sella 200 milioni di euro per sostenere l’innovazione di PMI e Mid-cap italiane
Analisi
Politiche di coesione Ue, il bilancio: cosa ci dice la relazione 2024
Politiche UE
Innovazione locale con i fondi di coesione: progetti di successo in Italia

Articoli correlati

Articolo 1 di 4