Nell’architettura software basata sui microservizi trova spazio service mesh, un’infrastruttura che assicura diversi vantaggi nell’impiego. Ecco quali


Service mesh è un elemento prezioso nell’architettura software basata sui microservizi. È stato introdotto come modo di gestire la comunicazione tra i servizi in un sistema basato su microservizi.

Esso affronta alcune delle sfide principali quando si tratta di realizzare un’architettura di microservizi. Come vedremo, genera molteplici benefici; tra questi offre maggiore libertà di selezionare un insieme diversificato di tecnologie di implementazione dei microservizi e di concentrarsi maggiormente sulla logica aziendale piuttosto che investire più tempo sulle funzioni di rete tra i servizi.

CTA risorsa replatforming

I vantaggi pratici di un’architettura service mesh ruotano attorno ad alcune aree chiave in termini di visibilità, osservabilità, tracciabilità e sicurezza. Inoltre, man mano che le organizzazioni si evolvono verso applicazioni cloud native e framework cloud-first più modulari, i pregi di contare su reti di servizi aumentano.

Cos’è una service mesh

Service mesh è un’infrastruttura di comunicazione tra servizi. Si tratta, in altri termini, di un livello dell’infrastruttura IT che controlla la comunicazione da servizio a servizio su una rete per consentire a parti separate di un’applicazione di comunicare tra loro.

Le reti di servizi compaiono comunemente insieme ad applicazioni cloud-based, container oltre che ai microservizi.

Lo sviluppo di sistemi monolitici ha comportato diverse sfide legate alla manutenzione e alla scalabilità del sistema. Per mitigare questo problema, gli sviluppatori si sono prodigati a sviluppare sistemi che utilizzassero i microservizi. L’applicazione è suddivisa in servizi distribuibili in modo indipendente, che possono essere implementati rapidamente su qualsiasi risorsa infrastrutturale e ciascun servizio viene eseguito in un processo isolato. Inoltre, lo sviluppo della tecnologia per i microservizi aumenta anche la complessità operativa associata alle moderne applicazioni. Service mesh è un approccio fin da subito promettente per mitigare questa situazione, introducendo un livello infrastrutturale focalizzato sui microservizi senza imporre modifiche alle implementazioni del servizio. La comunicazione tra microservizi, in particolare, può essere problematica senza un meccanismo che garantisca che essi sappiano dove si trovano, come comunicare e come dare agli amministratori un’idea di ciò che sta accadendo all’interno dell’app. Abbiamo evidenziato, illustrando i microservizi, i benefici che hanno portato a Netflix, che è passata da un’architettura monolitica a una a microservizi. Tuttavia, oltre ai vantaggi ha comportato una serie di criticità. Per esempio, come fa il microservizio di streaming di Netflix a sapere dove cercare informazioni sull’account di un abbonato? È qui che entra in gioco il service mesh. Essa controlla le richieste di servizi all’interno dell’app. In genere, una rete di servizi fornisce anche il rilevamento dei servizi, il failover e il bilanciamento del carico, insieme a funzionalità di sicurezza come la crittografia.

Come funziona

Service mesh, come detto, è un’infrastruttura di comunicazione tra servizi. Con essa, un determinato microservizio non comunicherà direttamente con gli altri microservizi. Tutte le comunicazioni da servizio a servizio avvengono invece in un componente software chiamato sidecar proxy. Quest’ultimo è un componente software co-localizzato con il servizio nella stessa macchina virtuale o pod (Kubernetes). Il livello sidecar proxy è noto come piano dati. Tutti questi sidecar Proxy sono controllati tramite un piano di controllo. Qui è dove si applicano tutte le impostazioni relative alle comunicazioni tra servizi. La rete di servizi fornisce supporto integrato per funzioni di rete come resilienza, rilevamento dei servizi, ecc. Pertanto, gli sviluppatori di servizi possono concentrarsi maggiormente sulla logica aziendale, mentre la maggior parte del lavoro relativo alla comunicazione di rete viene scaricata sulla rete di servizi.

Serverless CTA

Service mesh è stata introdotta come un modo per gestire la comunicazione tra i servizi in un sistema basato su microservizi. Poiché i singoli servizi sono spesso scritti in lingue diverse, l’implementazione della logica di rete come parte di ciascun servizio può duplicare gli sforzi.

service mesh, quale infrastruttura dedicata fornisce servizi come autenticazione, autorizzazione, routing, resilienza di rete, monitoraggio della sicurezza, che possono essere distribuiti indipendentemente dal codice dell’applicazione.

Anche se lo stesso codice viene riutilizzato da microservizi diversi, esiste infatti il rischio di incoerenze poiché le modifiche devono essere prioritarie e implementate da ciascun team insieme ai miglioramenti alle funzionalità principali dei microservizi. Proprio come un’architettura di microservizi consente a più team di lavorare contemporaneamente su servizi diversi e di distribuirli separatamente, l’utilizzo di un service mesh consente a tali team di concentrarsi sulla fornitura della logica aziendale e di non preoccuparsi dell’implementazione delle funzionalità di rete. Con una rete di servizi, la comunicazione di rete tra i servizi all’interno di un sistema basato su microservizi viene implementata e gestita in modo coerente.

I vantaggi di un service mesh

Un service mesh risolve alcuni grandi problemi relativi alla gestione della comunicazione da servizio a servizio. Tra i vantaggi che apporta, essa semplifica la comunicazione tra i servizi sia nei microservizi che nei container. È più facile diagnosticare gli errori di comunicazione, perché si verificherebbero sul proprio livello di infrastruttura.

Inoltre, supporta funzionalità di sicurezza come crittografia, autenticazione e autorizzazione. Consente anche uno sviluppo, un test e una distribuzione più rapidi di un’applicazione. A proposito di crittografia, un service mesh gestisce chiavi, certificati e configurazioni per garantire una crittografia continua che non fallisca. Gli utenti non devono più implementare la crittografia o gestire i certificati. Queste responsabilità vengono invece spostate dallo sviluppatore dell’app al livello del framework.

La presenza di service mesh permette il monitoraggio e il miglioramento del comportamento delle applicazioni distribuite. Una buona rete di servizi è progettata per posizionare i componenti altamente richiesti in una posizione sul piano di controllo dell’applicazione dove possono essere più facilmente accessibili. Detto questo, i componenti devono funzionare in modo fluido ed efficiente. Con un service mesh, i dati vengono condivisi: ciò significa che gli sviluppatori possono vedere cosa deve essere migliorato nella successiva iterazione.

Service mesh favorisce una maggiore trasparenza nelle interazioni complicate. Spesso è difficile seguire il flusso di informazioni in un ambiente cloud-native. La rete di servizi garantisce trasparenza nel modo in cui vengono forniti i servizi applicativi vitali, consentendoti di monitorarne il comportamento.

Infine, offre maggiore libertà di selezionare un insieme diversificato di tecnologie di implementazione dei microservizi e di concentrarsi di più sulla logica aziendale piuttosto che investire più tempo sulle funzioni di rete tra i servizi.

Va detto, tuttavia, che service mesh presenta anche qualche “lato oscuro”. Tra questi va segnalato che la presenza di una rete di servizi aumenta drasticamente il numero di istanze di runtime presenti in una determinata implementazione di microservizi.

Service mesh vs microservizi

Service mesh e microservizi non sono antitetici, come abbiamo visto. Tuttavia è bene dire che, pur trovando affinità, i due sono differenti. I microservizi si riferiscono a un’applicazione composta da più servizi interconnessi e liberamente accoppiati che lavorano insieme per fornire funzionalità dell’applicazione (in contrapposizione a un singolo sistema monolitico)

La rete di servizi, invece, è un modello tecnologico che può essere applicato a un sistema basato su microservizi per gestire la comunicazione in rete tra servizi. Con un service mesh, la funzionalità di rete è disaccoppiata dalla logica applicativa dei servizi, il che significa che può essere gestita in modo indipendente.  Proprio come un’architettura a microservizi consente a più team di lavorare contemporaneamente su servizi diversi e di distribuirli separatamente, l’utilizzo di una rete di servizii consente a tali team di concentrarsi sulla fornitura della logica aziendale e di non preoccuparsi dell’implementazione delle funzionalità di rete. Con un service mesh, la comunicazione di rete tra i servizi all’interno di un sistema basato su microservizi viene implementata e gestita in modo coerente.

CTA risorsa replatforming