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
Responsabile Sistema Informativo at ARCEA
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:
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.
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.
Fino a non troppi anni fa, ogni applicazione, residente su un unico server, si articolava fondamentalmente in tre macro-livelli:
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.
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”.
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”.
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.
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 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:
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.
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.
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.
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.
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.
di Andrea Lisi e Francesca Cafiero
I tuoi contenuti, la tua privacy!
Su questo sito utilizziamo cookie tecnici necessari alla navigazione e funzionali all’erogazione del servizio. Utilizziamo i cookie anche per fornirti un’esperienza di navigazione sempre migliore, per facilitare le interazioni con le nostre funzionalità social e per consentirti di ricevere comunicazioni di marketing aderenti alle tue abitudini di navigazione e ai tuoi interessi.
Puoi esprimere il tuo consenso cliccando su ACCETTA TUTTI I COOKIE. Chiudendo questa informativa, continui senza accettare.
Potrai sempre gestire le tue preferenze accedendo al nostro COOKIE CENTER e ottenere maggiori informazioni sui cookie utilizzati, visitando la nostra COOKIE POLICY.
Tramite il nostro Cookie Center, l'utente ha la possibilità di selezionare/deselezionare le singole categorie di cookie che sono utilizzate sui siti web.
Per ottenere maggiori informazioni sui cookie utilizzati, è comunque possibile visitare la nostra COOKIE POLICY.
I cookie tecnici sono necessari al funzionamento del sito web perché abilitano funzioni per facilitare la navigazione dell’utente, che per esempio potrà accedere al proprio profilo senza dover eseguire ogni volta il login oppure potrà selezionare la lingua con cui desidera navigare il sito senza doverla impostare ogni volta.
I cookie analitici, che possono essere di prima o di terza parte, sono installati per collezionare informazioni sull’uso del sito web. In particolare, sono utili per analizzare statisticamente gli accessi o le visite al sito stesso e per consentire al titolare di migliorarne la struttura, le logiche di navigazione e i contenuti.
COOKIE DI PROFILAZIONE E SOCIAL PLUGIN
I cookie di profilazione e i social plugin, che possono essere di prima o di terza parte, servono a tracciare la navigazione dell’utente, analizzare il suo comportamento ai fini marketing e creare profili in merito ai suoi gusti, abitudini, scelte, etc. In questo modo è possibile ad esempio trasmettere messaggi pubblicitari mirati in relazione agli interessi dell’utente ed in linea con le preferenze da questi manifestate nella navigazione online.
ICT&Strategy S.r.l. – Gruppo DIGITAL360 - Codice fiscale 05710080960 - P.IVA 05710080960 - © 2022 ICT&Strategy. ALL RIGHTS RESERVED
Clicca sul pulsante per copiare il link RSS negli appunti.
Clicca sul pulsante per copiare il link RSS negli appunti.