Cosa sono i microservizi e quali vantaggi offrono

pittogramma Zerouno

Guida

Cosa sono i microservizi e quali vantaggi offrono

Ormai sono moltissime le aziende che hanno deciso di migrare alle architetture basate su microservice o iniziare da zero con questo modello. Flessibilità, scalabilità, disponibilità di metodologie, framework di sviluppo e competenze per implementarla, rendono questa tecnologia un’opzione da considerare

03 Nov 2022

di Riccardo Cervelli

Per decenni le aziende hanno supportato i propri modelli di business utilizzando software enterprise di tipo monolitico. L’esigenza di affrontare scenari competitivi sempre più innovativi, complessi, globali, ha condotto molte organizzazioni a scontrarsi contro la difficoltà di queste soluzioni a rinnovarsi e a scalare. Di qui l’interesse per l’emergente paradigma dei microservizi, che ovviamente non è una risposta per tutte le esigenze.

Cosa sono i microservizi

Possiamo vedere un’architettura a microservizi come la scomposizione di un’applicazione monolitica nelle singole componenti applicative dedicate a specifici processi necessari nell’ambito di un determinato dominio di attività business.

WHITEPAPER
Valorizza i dati del tuo cloud e scopri i benefici per la tua azienda!
Big Data
Cloud

A differenza delle funzioni delle applicazioni monolitiche, i microservizi non sono rigidamente interconnessi ma connessi in modo lasco (loosely-coupled). Ciascun microservizio deve essere dotato di un’API (Application Programming Interface) in grado di ricevere o inviare messaggi attraverso protocolli leggeri come HTTP e HTTPS o altri sistemi di lightweight messaging. Il tipo di API più diffusa è la RESTful API, uno stile architetturale standard ideato per la comunicazione fra servizi web.

Come funziona un microservizio

Ogni microservizio funziona come una piccola applicazione autonoma, in grado di svolgere operazioni specifiche su determinati dati di cui è responsabile. Ogni microservizio dispone di una codebase gestibile da un team dedicato di sviluppatori e responsabili delle operazioni, che può adottare metodologie di lavoro Agile e DevOps. La caratteristica di loosely coupling fa sì che momentanei guasti o spegnimenti per manutenzione di uno o più servizi non impattino sulla funzionalità generale dell’applicazione di cui fanno parte. Anche questa caratteristica, oltre all’esistenza di un team focalizzato, consente di operare in ottica di Continuous Delivery (CD), rispondendo in modo veloce ai cambiamenti delle esigenze di business.

Le conseguenze di una migrazione a un’architettura a microservizi

La migrazione da un’architettura monolitica ai microservizi non comporta una semplificazione dell’attività IT. Diventa, infatti, più complessa la gestione dei team, che aumentano di numero, con la moltiplicazione degli sviluppatori e degli esperti di operation.

Inoltre, dal punto di vista hardware, se si elimina il problema di dover ridimensionare per intero un server o un sistema storage per soddisfare le nuove esigenze di una funzionalità, come avviene con le soluzioni monolitiche, le architetture a microservizi si basano quasi sempre su server, storage e sistemi di rete separati. Anche per questa ragione molte aziende decidono di migrare contemporaneamente alle architetture a microservizi e al cloud computing.

Come si avviano i microservizi? 2 approcci

Esistono fondamentalmente due approcci all’adozione dei microservizi: brownfield e greenfield. Nel primo si parte dalla soluzione monolitica business critical già esistente, si censiscono le singole funzionalità, i loro confini nel dominio e loro dati, e quindi si pianifica uno scorporo graduale dei servizi. Ognuno di questi servizi viene rifattorizzato (code refactoring) per diventare un microservizio. Ogni microservizio deve avere una REST API per la collaborazione con l’applicazione monolitica e con gli altri microservizi.

Da notare che, quando l’architettura a microservizi cresce, occorre prevedere una API gateway che funga da strato intermedio fra i client esterni (web browser, device mobili, altre applicazioni) e i microservizi. L’API gateway riceve le chiamate dal mondo esterno, le analizza, a volte si occupa anche della user authentication, le filtra e le ridirige verso le API dei microservizi interessati. Poi si occupa anche di raccogliere le risposte e inviarle ai client in attesa. In pratica, l’API gateway funziona come un proxy. Nel caso di una graduale migrazione da un’applicazione monolitica ai microservizi, è possibile utilizzare la prima come API gateway.

Nel caso dell’approccio greenfield, la soluzione basata su architettura a microservizi viene costruita completamente da zero. Lo svantaggio è che non si ha un modello di piattaforma collaudata a cui ispirarsi, ma il vantaggio principale è potersi concentrare completamente sulla creazione di un’organizzazione su misura di una IT basata su metodologie (per lo sviluppo, il testing, il rilascio, il monitoraggio, il continuous delivery) e tecnologie innovative, sempre di più cloud-native, come i microservizi e i container.

I tre tipi di microservizi

I microservizi, da progettare in modo differente, sono di tre tipi: Stateless, Persistence (o Stateful) e Aggregator. I primi sono la stragrande maggioranza. Non mantengono l’informazione di stato fra una sessione e l’altra. Si limitano a eseguire una transazione per volta e non devono memorizzare niente delle transazioni precedenti. Per questa ragione, anche se si guastano, non influiscono sul servizio all’utente, perché possono essere sostituiti da altri microservizi senza impatto sul servizio.

I secondi, invece, devono trattenere l’informazione di stato perché, per soddisfare ogni nuova richiesta, possono dover utilizzare informazioni trasmesse durante le richieste precedenti. Nel caso che una sessione venisse interrotta, questi microservizi devono essere in grado di riprendere dal punto in cui si erano fermati. Esempi di microservizi di questo tipo sono quelli che gestiscono database o protocolli Internet. Nella maggior parte dei casi, questi microservizi interagiscono con una risorsa di storage.

Gli aggregator sono invece microservizi con funzioni “coreografiche”. Di solito ricevono richieste che prevedono la raccolta di dati da più servizi. Man mano che riceve i dati dai servizi richiesti, l’aggregator li correla, li memorizza finché non ha completato il raggruppamento, e alla fine invia un messaggio aggregato come output.

Quali sono i 12 fattori dei microservizi

Come costruire un’organizzazione e processi in grado di realizzare architetture a microservizi di successo? Per rispondere a questa richiesta è oggi disponibile una metodologia – la Twelve-Factor – a cui un numero sempre maggiore di organizzazioni stanno aderendo. La metodologia consta di 12 best practice che vengono utilizzate per lo sviluppo di Web service, di SaaS (Software-as-a-Service) e anche di microservizi.

Alcune best practice si focalizzano su come rendere i microservizi meglio interoperabili fra loro e con i servizi disponibili negli operativi e sul cloud. Altre ancora sulla collaborazione nei team composto da sviluppatori e responsabili del deployment e dell’esecuzione, in modo da rendere tutti soddisfatti e in grado di velocizzare la continuous delivery. Altri fattori toccano i temi del monitoraggio e dell’amministrazione.

Quale linguaggio viene utilizzato per i microservizi?

Una parte di queste buone prassi si concentra sullo sviluppo di codice, aspetto assolutamente protagonista nel mondo dei microservizi e in grado di offrire opportunità a chiunque si sia dedicato a studiare seriamente linguaggi adatti a diversi tipi di servizi. Fra i nomi, Java, Go, Python, Node.js, .Net, C++, C#, Ballerina. Le tecnologie necessarie per creare architetture e singoli microservizi, comunque, sono oggi disponibili in framework intorno ai quali sono sorte comunità e blog molto utili per aiutare i principianti.

I migliori esempi di microservizio

Da quando hanno iniziato a diffondersi, alla fine del primo decennio del secondo, i microservizi hanno già raccolto una ricca serie di casi di successo.

Netflix

Quello che viene in mente a tutti per primo è quello di Netflix. Nel 2008, a causa del danneggiamento del database su cui era appoggiata la piattaforma monolitica, l’azienda ha deciso di cambiare codebase.

Tra il 2009 e il 2011, in collaborazione con gli ingegneri di Amazon Web Services, ha sviluppato un’architettura che combina microservizi e algoritmi in grado di scalare orizzontalmente, trasformandosi da noleggiatrice di DVD in leader nello streaming e nella produzione di film, serie TV e documentari.

Uber

Altro caso interessante è quello di Uber, nata nel 2009 come applicazione per la chiamata di taxi nella città di San Francisco. Allora l’azienda si basava su un’applicazione monolitica in grado di abbinare i conducenti e i passeggeri, eseguire controlli in background, e curare la fatturazione e il pagamento.

In seguito, ha deciso di migrare a un’architettura a microservizi, creandone anche di nuovi per la gestione dei passeggeri e dei viaggi. Grazie anche a queste innovazioni l’azienda è riuscita espandere il suo business originario in tutto il mondo e ad aggiungere nuove attività redditizie.

Riccardo Cervelli

Giornalista

Classe 1960, giornalista freelance divulgatore tecnico-scientifico, nell’ambito dell’Ict tratta soprattutto di temi legati alle infrastrutture (server, storage, networking), ai sistemi operativi commerciali e open source, alla cybersecurity e alla Unified Communications and Collaboration e all’Internet of Things.

Argomenti trattati

Approfondimenti

M
Microservizi

Articolo 1 di 5