Architettura di Microservizi: cos’è, come funziona
L’architettura a microservizi è un approccio rivoluzionario che permette lo sviluppo di app dinamiche, facili da gestire, aggiornare e potenziare. L’idea è quella di suddividere i servizi all’interno della struttura, sviluppandoli separatamente in modo che essi possano occuparsi di un compito specifico, senza sovraccaricare il codice dell’applicazione.
Tale definizione può ricordare in parte quella della SOA (Service Oriented Architecture), ma nel caso dell’architettura a microservizi la comunicazione fra questi ultimi viene codificata e gestita attraverso API ben definite.
Differenze fra architettura a microservizi e monolitica
Le prime app venivano sviluppate utilizzando la cosiddetta architettura monolitica. In pratica si trattava di enormi blocchi di codice in cui erano integrati i vari servizi disponibili, che lavoravano all’unisono, poiché erano tutti collegati fra loro.
Il principale svantaggio di questa configurazione era rappresentato dal fatto che per aggiornare o modificare un servizio specifico, si rendeva necessario aggiornare tutta l’applicazione. Questo significava metterla di fatto down e sospendere l’accesso agli utenti temporaneamente. Come si può ben intuire ciò causava enormi disagi per le aziende, così si sono cercate nuove soluzioni.
La già citata Service Oriented Architecture è l’antenata più prossima dell’architettura a microservizi e ha introdotto il concetto di servizi separati nello sviluppo delle app. Questo nuovo metodo di programmazione le rendeva di fatto più versatili e facili da aggiornare, ma con qualche svantaggio considerevole.
L’assenza di una codifica generale accessibile in termini di costi, capace di coordinare servizi sviluppati in linguaggi differenti, si è rivelata presto un malus troppo oneroso da sostenere economicamente.
Alla luce di ciò, si può asserire che l’architettura a microservizi prende i pregi delle due architetture precedenti e li fonde insieme per ottenere un risultato ottimale. I servizi vengono sviluppati in maniera autonoma da piccoli team e svolgono compiti ben specifici, ma riesco a comunicare agevolmente gli uni con gli altri grazie alle API, come se fossero un’unica applicazione.
Quali vantaggi ha l’adozione dei microservizi
Sono già stati enunciati nei paragrafi precedenti alcuni dei vantaggi principali dell’architettura a microservizi, come la facilità di aggiornamento e manutenzione, la possibilità di espansione pressoché illimitata e la versatilità. A questi però se ne aggiungono altri:
- si possono eliminare singoli punti di guasto: dato che i bug e i malfunzionamenti sono per lo più circoscritti al servizio in cui si generano, è facile isolare e risolvere il problema;
- l’orchestrazione risulta più snella: implementare processi automatizzati di build, testing e distribuzione significa gestire gli stessi con maggiore semplicità, mantenendo le comunicazioni fra vari settori coerenti e riducendo il numero di configurazioni richieste;
- versionamento: con questo sistema le API possono essere aggiornate in maniera separata rispetto ai singoli servizi, poiché essi si basano su schemi isolati da quelli del resto dell’applicazione.
I punti negativi dell’architettura a microservizi
Come gli altri tipi di architetture, anche quella a microservizi non è del tutto esente da svantaggi di sorta. I lati negativi si riscontrano principalmente nella fase di scalabilità dell’applicazione stessa, in cui si rende necessario affrontare la complessità di alcuni sistemi. La suddivisione in servizi separati, inoltre, si traduce anche in un maggior numero di fattori a cui prestare attenzione:
- l’orchestrazione, pur essendo snella, risulta complessa senza una notevole implementazione automatizzata dei controlli di gestione. Essi devono infatti rimanere coerenti nel tempo per tutto il ciclo vitale dell’app;
- la comunicazione fra i servizi ha bisogno di ricevere particolare attenzione durante lo sviluppo, poiché un qualunque errore può tradursi in un’esperienza negativa per l’utente. Sono quindi necessari controlli certosini e misure specifiche;
- problemi nella coerenza dei dati trasmessi si possono verificare a causa dell’enorme numero di database replicati e dello scambio continuo di informazioni fra servizi differenti.
