Nel processo di sviluppo e di organizzazione dell’architettura software, l’avvento dei microservizi ha portato cambiamenti significativi, con molteplici vantaggi. Ecco cosa sono e come funzionano


I microservizi sono diventati sempre più popolari negli ultimi anni per svariati motivi. Un primo motivo è legato, come vedremo, ai vantaggi che offrono per gli sviluppatori. Un altro motivo si deve al fatto che le organizzazioni adottano DevOps e altri accorgimenti finalizzati a diventare più agili. Colossi come Amazon, eBay, Netflix, PayPal, Twitter e Uber hanno abbandonato le architetture monolitiche e sono passate ai microservizi, cogliendone sensibili vantaggi.

Oggi i microservizi e la loro architettura sono ormai lo standard per lo sviluppo di software moderno. In risposta all’aumento esponenziale della domanda di servizi digitali, le pratiche di sviluppo software devono essere veloci, flessibili e scalabili: i microservizi sono perfetti a tale proposito.

La diffusione di questo approccio è crescente e radicato da qualche anno. Basti pensare che già in un sondaggio del 2020 circa il 28% degli intervistati affermava che le proprie organizzazioni utilizzavano i microservizi da almeno tre anni. Con l’avvento del cloud la loro espansione è stata ancor più significativa. Le applicazioni cloud native sono orientate ai microservizi, containerizzate e orchestrate dinamicamente per ottimizzare l’uso delle risorse.

Cosa sono i microservizi?

I microservizi, spesso definiti architettura a microservizi, sono un approccio architettonico che prevede la divisione di applicazioni di grandi dimensioni in unità funzionali più piccole in grado di funzionare e comunicare in modo indipendente. Ciascun modulo supporta un’attività o un obiettivo aziendale specifico e utilizza un’interfaccia semplice e ben definita, come un’interfaccia di programmazione dell’applicazione (API), per comunicare con altri set di servizi.

L’architettura a microservizi è un metodo distintivo di sviluppo di sistemi software che cerca di concentrarsi sulla costruzione di moduli a funzione singola con interfacce e operazioni ben definite.

La tendenza è cresciuta negli ultimi anni poiché le aziende cercano di diventare più agili e di spostarsi verso DevOps e test continui.

Utilizzando un approccio basato sui microservizi, i team DevOps dividono i servizi in API (application programming interface) funzionali invece di spedire le applicazioni come un’unica grande unità collettiva. Le API collegano i servizi con le funzionalità principali, consentendo alle applicazioni di comunicare e condividere dati.

Il vantaggio principale è che i team DevOps responsabili dello sviluppo e della manutenzione possono operare in unità più piccole, rendendo più gestibile l’ambito di ciascun progetto.

Questo approccio è nato in risposta ai limiti dell’architettura monolitica. Poiché i monoliti sono grandi contenitori che contengono tutti i componenti software di un’applicazione, sono fortemente limitati: inflessibili, inaffidabili e spesso si sviluppano lentamente.

Con i microservizi ogni unità è distribuita in modo indipendente, ma può comunicare tra loro quando necessario. Gli sviluppatori possono ora ottenere la scalabilità, la semplicità e la flessibilità necessarie per creare applicazioni software altamente sofisticate.

Come funzionano

I microservizi strutturano un’applicazione in modo tale che sia costituita da varie parti o servizi più piccoli che possono essere distribuiti in modo indipendente.

Questa struttura è di fondamentale importanza per lo sviluppo del software moderno perché consente agilità e velocità. In un’architettura a microservizi, un’applicazione è divisa in servizi, ognuno dei quali esegue un processo unico e gestisce il proprio database. Un servizio può generare avvisi, registrare dati, supportare interfacce utente, gestire l’identificazione o l’autenticazione dell’utente ed eseguire varie altre attività.

Il paradigma dei microservizi offre ai team di sviluppo un approccio più decentralizzato alla creazione di software. Ogni servizio può essere isolato, ricostruito, ridistribuito e gestito in modo indipendente.

L’architettura dei microservizi si concentra sulla classificazione di applicazioni altrimenti grandi e ingombranti. Ogni microservizio affronta l’aspetto e la funzione particolari di un’applicazione, come la registrazione, la ricerca di dati e altro ancora. Insieme, formano un’unica applicazione. Il client può utilizzare l’interfaccia utente per generare richieste. Allo stesso tempo, uno o più microservizi vengono commissionati tramite il gateway API per eseguire l’attività richiesta. Di conseguenza, anche i problemi più grandi e complessi che richiedono una combinazione possono essere risolti in modo relativamente semplice.

Tale architettura rende lo sviluppo delle app più rapido ed efficiente. Le capacità di distribuzione agile combinate con l’applicazione flessibile di diverse tecnologie riducono drasticamente la durata del ciclo di sviluppo.

I vantaggi

L’architettura a microservizi offre a sviluppatori e ingegneri una serie di vantaggi, specie in confronto a quella monolitica (che approfondiremo di seguito). Innanzitutto, essa offre agli sviluppatori la libertà di sviluppare e distribuire servizi in modo indipendente.

I microservizi lanciano i singoli servizi in modo indipendente, con diversi linguaggi o tecnologie; tutti gli stack tecnologici sono compatibili, consentendo a DevOps di scegliere uno qualsiasi degli stack tecnologici più efficienti senza temere che funzioneranno bene insieme. Questi piccoli servizi funzionano su un’infrastruttura relativamente minore rispetto alle applicazioni monolitiche scegliendo la scalabilità precisa dei componenti selezionati in base alle loro esigenze.

Inoltre, c’è da considerare che team di sviluppo più snelli possono lavorare in parallelo su diversi componenti per aggiornare le funzionalità esistenti. Ciò semplifica notevolmente l’identificazione dei servizi più importanti, la scalabilità e il miglioramento dell’applicazione.

Ogni microservizio che costituisce un’applicazione deve essere uno stack completo. Ciò consente la distribuzione indipendente dei microservizi in qualsiasi momento. I team di sviluppo possono lavorare su un microservizio, correggere gli errori e quindi ridistribuirlo senza impattare sull’intera applicazione.

Altri vantaggi offerti dall’architettura a microservizi sono rappresentati dal fatto che il codice per servizi diversi può essere scritto in lingue diverse, ha un’integrazione semplice ed è facile da comprendere e modificare per gli sviluppatori.

Un vantaggio considerevole è rappresentato dal fatto che consente un migliore isolamento dei guasti: se un microservizio fallisce, l’altro continuerà a funzionare.

Si aggiunga anche il fatto che è facile da scalare e integrare con servizi di terze parti.

Microservizi vs architettura monolitica

Siamo giunti al confronto tra architettura a microservizi rispetto a quella monolitica. Quest’ultima presenta i suoi svantaggi, tra cui problemi di scalabilità e il fatto che singoli errori possono influire sulla disponibilità dell’intera applicazione. Da parte sua, invece, l’architettura a microservizi è una soluzione più agile, flessibile e scalabile.

Un’applicazione monolitica è realizzata come una singola unità autonoma. Pertanto, qualsiasi modifica all’applicazione è lenta, poiché influisce sull’intero sistema. Infatti, una modifica apportata a una piccola sezione di codice potrebbe richiedere la creazione e la distribuzione di una versione completamente nuova del software. Pertanto, ridimensionare una funzione specifica di un’applicazione significa anche ridimensionare l’intera applicazione.

I microservizi risolvono le sfide dei sistemi monolitici essendo quanto più modulari possibile. Nella forma più semplice, aiutano a creare un’applicazione come una suite di piccoli servizi, ciascuno eseguito nel proprio processo e distribuibile in modo indipendente. Questi servizi possono essere scritti in diversi linguaggi di programmazione e possono anche utilizzare diverse tecniche di archiviazione dei dati.

Creando applicazioni in piccoli bit funzionali invece di mantenere una base di codice e un pool di risorse monolitici, gli sviluppatori possono tenere il passo con l’innovazione.

L’architettura a microservizi si concentra sulla classificazione di applicazioni altrimenti grandi e ingombranti. Ogni microservizio affronta l’aspetto e la funzione particolari di un’applicazione, come la registrazione, la ricerca di dati e altro ancora. Insieme, essi formano un’unica applicazione. Il client può utilizzare l’interfaccia utente per generare richieste. Allo stesso tempo, uno o più microservizi vengono commissionati tramite il gateway API per eseguire l’attività richiesta. Di conseguenza, anche i problemi più grandi e complessi possono essere risolti in modo relativamente semplice.

Alcuni esempi di microservizi

Con i recenti progressi nella tecnologia cloud, molte grandi realtà IT hanno sostenuto il passaggio da un’architettura monolitica a un’architettura a microservizi per una migliore funzionalità.

Uno dei casi esemplari è costituito da Amazon. Il suo sito web nel 2001, funzionava come un’applicazione monolitica. La mancanza di flessibilità ha costretto gli sviluppatori a dover svolgere un super lavoro durante l’aggiornamento o il ridimensionamento dei servizi, conseguendo anche la difficoltà per lo stesso colosso di e-commerce nel soddisfare le esigenze della sua base di clienti in rapida crescita. Per risolvere i problemi, il team di sviluppo di Amazon ha suddiviso la grande applicazione monolitica in servizi più piccoli e indipendenti gestiti e gestiti da team di sviluppatori separati. Gli sforzi alla fine hanno portato alla creazione di un’architettura altamente disaccoppiata e orientata ai servizi che ora viene chiamata architettura a microservizi.

Un altro esempio di passaggio dal monolitico ai microservizi è rappresentato da Netflix. Ha avviato la propria attività di streaming di film nel 2007, affrontando seri problemi di scalabilità e interruzioni di servizio nel giro di appena un anno. Dopo essere passata al cloud nel 2008, l’anno successivo ha iniziato a spostare la propria architettura applicativa da monolitica a microservizi e questo processo è stato finalmente completato tre anni dopo. Questo passaggio a un’architettura a microservizi ha consentito alla società di superare le sfide di scalabilità e di offrire i propri servizi a milioni di persone in tutto il mondo. Nel 2015, il gateway API di Netflix ha elaborato con successo 2 miliardi di richieste API al giorno, grazie a un gruppo di oltre 500 microservizi ospitati sul cloud. Anche il costo dello streaming è stato ridotto, il che ha consentito al colosso di servizi streaming di ottenere notevoli guadagni finanziari.

Anche Uber ha deciso di abbandonare la sua struttura monolitica a causa di ostacoli alla crescita. Le sfide affrontate dalla piattaforma di ride-sharing includevano l’inefficienza nello sviluppo e nel lancio di nuove funzionalità, l’incapacità di correggere rapidamente i bug e problemi con l’integrazione delle sue operazioni globali in rapida crescita. Si è raggiunto un punto in cui la complessa architettura dell’applicazione necessitava di sviluppatori con grande esperienza per apportare piccole modifiche e aggiornamenti al sistema.

Per vincere le sfide presentate dalla sua applicazione monolitica, Uber l’ha suddivisa in microservizi basati sul cloud. Ben presto sono stati sviluppati microservizi individuali per funzioni aziendali come la gestione dei viaggi e la gestione dei passeggeri. Questi servizi comunicano tra loro tramite un gateway API.

L’adozione di questa architettura a microservizi ha aiutato Uber a superare le sue sfide tecnologiche.