Che cos'è una mesh di servizio?

Una mesh di servizio è un livello dell'infrastruttura dedicato che fornisce connettività di rete, sicurezza e osservabilità per i microservizi all'interno di un sistema distribuito. Funziona rimuovendo le complessità delle comunicazioni da un servizio all'altro, come il bilanciamento del carico, l'interruzione del circuito, lo spostamento del traffico e i meccanismi di ripetizione dei tentativi.

La definizione di una mesh di servizio richiede prima di tutto la definizione dei microservizi. Se non sapete come funzionano i microservizi, potete immaginare la mesh di servizio come se doveste confrontare un volo di prima classe con un pullman, ma non avete mai sentito parlare di un aereo. Una mesh di servizio è una tecnologia creata per migliorare l'esecuzione delle applicazioni basate sui microservizi, anche se alcuni sostengono che spesso la situazione risulta più complicata.

Descrizione dei microservizi

I microservizi sono un approccio moderno all'architettura delle applicazioni software in cui un'applicazione viene suddivisa in componenti più piccoli accoppiati liberamente, noti come "servizi". Collettivamente, questi microservizi forniscono le funzionalità complessive delle applicazioni. Questo approccio è in contrasto con la tradizionale architettura delle applicazioni "monolitica", che combina tutte le funzionalità in un unico software.

Netflix è un noto esempio di microservizi. Dieci anni fa, Netflix era un'enorme applicazione software unificata. Ogni funzione di Netflix risiedeva all'interno di un'unica enorme base di codici. Il problema era che la modifica di una parte dell'app implicava la ridistribuzione di tutto il sistema, una situazione non certo auspicabile per un software occupato e commercialmente significativo.

Dopo la migrazione a un'architettura di microservizi, ogni area di Netflix, dalla gestione dei contenuti alla gestione di account, giocatori, ecc., esiste come microservizio a sé stante. In realtà, se vogliamo scendere nel dettaglio, ognuna di queste aree è costituita da più microservizi. Gli sviluppatori possono lavorare su ciascun microservizio in modo isolato per apportare modifiche, per scalare o per cambiare le configurazioni senza preoccuparsi di influire su altri microservizi. In teoria, se un microservizio si blocca, non si interrompe anche il resto dell'applicazione (anche se esistono casi anomali).

Che cos'è una mesh di servizio?

Tenendo presente il senso dell'architettura dei microservizi, considerate alcune delle sfide che potrebbero emergere quando si tenta di far funzionare in modo affidabile un'applicazione basata su microservizi. L'architettura, sebbene rivoluzionaria nella sua capacità di separare le applicazioni in servizi indipendenti, comporta una serie di difficoltà.

La comunicazione tra i microservizi, in particolare, può risultare problematica senza un meccanismo che consenta ai microservizi di sapere dove si trovano altri microservizi, come comunicare e come dare agli amministratori un'idea di ciò che accade all'interno dell'app. Ad esempio, in che modo il microservizio di streaming in Netflix sa dove cercare le informazioni sull'account di un abbonato? È qui che entra in gioco una mesh di servizio. Tuttavia, per placare coloro che non sono appassionati delle mesh di servizio, è fondamentale sottolineare che una mesh di servizio, in tal caso, non è strettamente necessaria.

Una mesh di servizio è un livello di infrastruttura che gestisce le comunicazioni tra i microservizi su una rete, controllando le richieste di servizi all'interno dell'app. Una mesh di servizio, in genere, fornisce anche le funzioni di individuazione, failover e bilanciamento del carico dei servizi, insieme a funzioni di sicurezza come la crittografia.

Come funziona una mesh di servizio?

Il compito di una mesh di servizio è aggiungere sicurezza, osservabilità e affidabilità ad un sistema basato sui microservizi. Ciò avviene tramite l'uso di proxy noti come "collaterali", che si collegano a ciascun microservizio (esistono anche mesh di servizio "non collaterali" basate su eBPF). I proxy collaterali operano al livello 7 dello stack OSI. Se l'applicazione è basata su container, il proxy collaterale si collega a ciascun container o macchina virtuale (VM). I proxy operano quindi in un "piano dati" e un "piano di controllo".

Il piano dati comprende servizi eseguiti accanto ai propri proxy collaterali. Per ogni coppia di servizi/proxy collaterali, il servizio si occupa della logica aziendale dell'applicazione, mentre il proxy si trova tra il servizio e gli altri servizi nel sistema. Il proxy collaterale gestisce tutto il traffico in entrata e in uscita dal servizio. Inoltre, fornisce funzionalità di connessione come mTLS (Mutual Transport Layer Security), che consente a ciascun servizio nel flusso del messaggio di richiesta/risposta di convalidare il certificato dell'altro.

Il piano di controllo è il punto in cui gli amministratori interagiscono con la mesh di servizio, si occupa di configurare e controllare il proxy, gestire l'amministrazione della mesh di servizio e fornire un modo per configurare e coordinare i proxy. Gli amministratori lavorano tramite il piano di controllo per applicare le policy di controllo degli accessi e definire le regole di instradamento per i messaggi trasmessi tra i microservizi. Il piano di controllo può anche consentire l'esportazione di registri e altri dati correlati all'osservabilità dei microservizi.

Interagendo tra loro, il piano dati e il piano di controllo della mesh di servizio offrono le seguenti funzionalità:

  • Sicurezza: distribuzione di policy di sicurezza, come l'autenticazione e l'autorizzazione, ai microservizi e crittografia automatica delle comunicazioni tra i microservizi. Una mesh di servizio può gestire, monitorare e applicare le policy di sicurezza tramite il suo piano di controllo.

  • Affidabilità: gestione delle comunicazioni tra i microservizi tramite proxy collaterali nel piano di controllo e miglioramento dell'affidabilità delle richieste di servizio nel processo. La mesh di servizio può anche gestire la gestione del bilanciamento del carico degli errori, il tutto con l'obiettivo di rafforzare l'affidabilità e fornire un'elevata disponibilità (HA).

  • Osservabilità: mostra ai proprietari dei sistemi le performance dei microservizi. Una mesh di servizio può rivelare i microservizi che vengono eseguiti maggiormente o che sono a rischio di errori. Il piano di controllo della mesh di servizio raccoglie i dati telemetrici relativi alle interazioni tra i microservizi e altri componenti delle applicazioni.

Kubernetes e l'integrazione della mesh di servizio

Kubernetes, una piattaforma di coordinamento dei container ampiamente adottata, svolge un ruolo fondamentale nella gestione dei microservizi. L'integrazione di una mesh di servizio con Kubernetes migliora il controllo, la sicurezza e l'osservabilità dei microservizi in esecuzione nell'ecosistema Kubernetes. Kubernetes, insieme a mesh di servizio come Istio e Linkerd, consente il rilevamento automatico dei servizi, il bilanciamento del carico e il ripristino degli errori. La natura open source di Kubernetes e delle mesh di servizio consente alle organizzazioni di trarre vantaggio da un'ampia community e da un ricco set di strumenti in continua evoluzione per supportare le applicazioni cloud native. Utilizzando Kubernetes come base per la gestione dei container e associandolo a una mesh di servizio, le organizzazioni ottengono una migliore visibilità sulle comunicazioni da un servizio all'altro, riducono la latenza nelle interazioni di servizio e migliorano la resilienza complessiva del sistema.

Confronto tra le mesh di servizio e i microservizi

È facile confondersi tra i microservizi e una mesh di servizio. I microservizi sono i componenti di un sistema basato su microservizi, mentre la mesh di servizio può collegarli tra loro. Come suggerisce il nome, la mesh di servizio si trova sui microservizi come una struttura connettiva. In altre parole, una mesh di servizio è un "modello" che può essere implementato per gestire le interconnessioni e la logica pertinente alla base di un'applicazione basata su microservizi.

Perché è necessaria una mesh di servizio?

Le applicazioni monolitiche non vanno bene poiché diventano più grandi e complesse. A questo punto, inizia ad avere senso dividere l'applicazione in microservizi. Questo approccio si allinea perfettamente con le moderne metodologie di sviluppo delle applicazioni, come la delivery agile, DevOps e l'integrazione/distribuzione continua (CI/CD). I team addetti allo sviluppo di software e i loro partner nei test e nelle operazioni possono concentrarsi sul nuovo codice per creare microservizi individuali e indipendenti. In genere, questo è l'approccio migliore per il software e per l'azienda nel suo complesso.

Con l'espansione del numero di servizi nell'app basata sui microservizi, tuttavia, può diventare difficile tenere il passo con tutte le connessioni. Le parti interessate potrebbero avere difficoltà a monitorare il modo in cui ogni servizio deve connettersi e interagire con gli altri. Monitorare l'integrità dei servizi diventa difficile. Con decine o addirittura centinaia di microservizi da connettere e controllare, anche l'affidabilità può diventare un problema.

La mesh di servizio risolve questi problemi consentendo agli sviluppatori di gestire le comunicazioni da un servizio all'altro in un livello dedicato dell'infrastruttura. Invece di gestire centinaia di connessioni, una alla volta, gli sviluppatori possono gestire l'intera applicazione tramite proxy nel piano di controllo. La mesh di servizio fornisce efficienti funzionalità di gestione e monitoraggio.

In breve, tra i vantaggi principali di una mesh di servizio, figurano i seguenti:

  • Comunicazioni tra i microservizi semplificate

  • Operazioni di rilevamento e comprensione degli errori di comunicazione più agevoli

  • Migliore sicurezza delle app con funzioni di crittografia, autenticazione e autorizzazione

  • Accelerazione dello sviluppo delle app accelerando le fasi di sviluppo, test e implementazione dei nuovi microservizi

Sfide legate alla mesh di servizio

Una mesh di servizio, tuttavia, può presentare anche proprie difficoltà. Ad esempio, i livelli della mesh di servizio diventano un altro elemento di un sistema che richiede infrastruttura, manutenzione, supporto e così via. Tutte queste componenti possono prosciugare le risorse, influendo sulle performance complessive della rete e dell'hardware. L'aggiunta di proxy collaterali può potenzialmente aggiungere complessità in un ambiente già complicato. L'esecuzione delle chiamate di servizio tramite il proxy collaterale aggiunge un passaggio, che può potenzialmente rallentare l'applicazione. Inoltre, possono verificarsi problemi correlati all'integrazione tra più architetture di microservizi. La rete deve comunque essere gestita, nonostante la gestione della mesh di servizio e i messaggi tra un servizio e l'altro.

Riduzione della latenza nelle mesh di servizio con l'automazione

Una delle principali preoccupazioni relative alle mesh di servizio è la possibilità di aumentare la latenza a causa dell'aggiunta di un livello di proxy che gestiscono le comunicazioni di servizio. Tuttavia, le mesh di servizio come Istio e Linkerd sono dotate di funzionalità di automazione che mitigano questi problemi di latenza. Tramite una gestione intelligente del traffico e tentativi automatizzati, la mesh di servizio può semplificare i percorsi di comunicazione, garantendo ritardi minimi. Inoltre, Istio utilizza Envoy per ottimizzare le decisioni relative all'instradamento, consentendo risposte più rapide tra i servizi mediante l'utilizzo dell'automazione per instradare i potenziali colli di bottiglia della rete. Ciò garantisce che le applicazioni mantengano performance elevate, anche in ambienti cloud native di grandi dimensioni, in cui la latenza potrebbe rappresentare un problema significativo. Con continui aggiornamenti e ottimizzazioni da parte della comunità open source, le moderne mesh di servizio sono sempre più in grado di bilanciare avanzate funzioni di gestione del traffico con un carico minimo.

Conclusione

Una mesh di servizio può aiutarvi a raggiungere il successo con i microservizi. La tecnologia fornisce un livello di infrastruttura necessario per gestire le comunicazioni tra i servizi e le relative funzioni amministrative. Se implementata nel modo giusto, una mesh di servizio fornisce sicurezza, affidabilità e osservabilità per applicazioni e sistemi basati sui microservizi.

Domande frequenti

Le mesh di servizio e i gateway API tradizionali hanno ruoli distinti nella gestione del traffico di rete all'interno di un sistema distribuito. Le mesh di servizio si concentrano sulla comunicazione interna tra i microservizi, offrendo un controllo granulare sulla gestione del traffico, sul bilanciamento del carico e sull'osservabilità senza richiedere modifiche al codice dell'applicazione. Al contrario, i gateway API fungono da punti di ingresso centralizzati per i client esterni, gestendo attività come l'autenticazione, l'autorizzazione e l'instradamento delle richieste per le API rivolte al client.

L'architettura della mesh di servizio migliora la sicurezza all'interno dei microservizi fornendo una gamma di funzioni che garantiscono comunicazioni sicure e dati protetti. Un'importante funzione di sicurezza è Mutual TLS (mTLS), che consente la comunicazione crittografata tra i servizi. Inoltre, le mesh di servizio offrono policy di controllo degli accessi granulari, consentendo agli amministratori di definire e applicare le autorizzazioni di accesso a livello di servizio. 

L'implementazione di una mesh di servizio può inizialmente sembrare complessa, ma i vantaggi a lungo termine superano la complessità iniziale.

Scegliete una mesh di servizio in linea con i vostri requisiti e la vostra infrastruttura. Ogni mesh di servizio ha proprie funzioni e integrazioni, quindi valutatele in base alle vostre specifiche esigenze. Iniziate con una configurazione di base implementando la mesh di servizio in un ambiente non di produzione o su un sottoinsieme limitato di microservizi. Definite policy di controllo degli accessi, regole di instradamento del traffico e configurazioni di sicurezza delle applicazioni in base ai requisiti della vostra organizzazione.

Implementate gradualmente la mesh di servizio in altri microservizi e ambienti man mano che vi fidate della sua stabilità e delle sue performance. Ripetete e migliorate continuamente la configurazione della mesh di servizio in base al feedback, alle metriche delle performance e ai requisiti in continua evoluzione.

Ecco alcuni fattori da considerare quando si decide la migliore mesh di servizio per le proprie esigenze:

  • Supporto della community: cercate mesh di servizio con supporto attivo della community in grado di fornire preziose risorse, documentazione e contributi basati sulla community.

  • Facilità d'uso: scegliete una soluzione in grado di offrire strumenti intuitivi, documentazione chiara e interfacce intuitive per semplificare l'adozione e la manutenzione continua.

  • Set di funzioni: valutate le funzionalità di ciascuna mesh di servizio e verificate se è allineata ai vostri requisiti. Individuate le funzionalità di gestione del traffico, gli strumenti di osservabilità e le funzioni di sicurezza.

  • Compatibilità: assicuratevi che la mesh di servizio sia compatibile con l'infrastruttura esistente, incluse le piattaforme di coordinamento dei container e gli ambienti cloud

  • Performance e scalabilità: scegliete una soluzione in grado di gestire il carico di lavoro previsto e scalare in base alla crescita dell'infrastruttura.

Perché i clienti scelgono Akamai

Akamai è l'azienda di cybersecurity e cloud computing che abilita e protegge il business online. Le nostre soluzioni di sicurezza leader del settore, l'innovativa intelligence sulle minacce e il team presente su scala globale forniscono una difesa approfondita in grado di proteggere applicazioni e dati critici ovunque. Le soluzioni complete di cloud computing offerte da Akamai assicurano performance elevate e notevoli risparmi grazie alla piattaforma più distribuita al mondo. Le maggiori aziende internazionali si affidano ad Akamai per ottenere la protezione, la scalabilità e le competenze leader del settore di cui hanno bisogno per far crescere le loro attività senza rischi.

Post del blog correlati

Tracciare la rotta verso il cloud moderno
Akamai annuncia nuovi siti in tutto il mondo, nuovi servizi per i clienti commerciali e miglioramenti che rafforzano le performance dei propri servizi di cloud computing.
Come risolvere le esigenze cloud dei servizi SaaS?
Il nuovo approccio Akamai basato su cloud per la delivery di applicazioni SaaS può soddisfare contestualmente le esigenze di costi e performance.
Miglioramento delle experience dei giocatori con microservizi a bassa latenza
La piattaforma Akamai Cloud distribuita su larga scala si trova in una posizione privilegiata per offrire microservizi a bassa latenza, che risultano fondamentali per garantire un'eccellente experience di gioco.