Cos'è un mesh di servizi?

Un mesh di servizi è un livello di software che gestisce tutte le comunicazioni tra i servizi nelle applicazioni. Questo livello è composto da microservizi containerizzati. Quando le applicazioni si dimensionano e il numero di microservizi aumenta, diventa problematico monitorare le prestazioni dei servizi. Per gestire le connessioni tra i servizi, un mesh di servizi offre nuove funzionalità come monitoraggio, registrazione, tracciamento e controllo del traffico. È indipendente dal codice di ciascun servizio, il che gli consente di operare oltre i confini della rete e con più sistemi di gestione dei servizi.

Perché hai bisogno di una mesh di servizio?

Nell'architettura applicativa moderna, è possibile creare applicazioni come una raccolta di piccoli microservizi distribuibili in modo indipendente. Team diversi possono creare microservizi individuali e scegliere i linguaggi e gli strumenti di codifica. Tuttavia, i microservizi devono comunicare affinché il codice dell'applicazione funzioni correttamente.

Le prestazioni delle applicazioni dipendono dalla velocità e dalla resilienza della comunicazione tra i servizi. Gli sviluppatori devono monitorare e ottimizzare l'applicazione in tutti i servizi, ma è difficile ottenere visibilità a causa della natura distribuita del sistema. Man mano che le applicazioni si espandono, diventa ancora più complesso gestire le comunicazioni.

Esistono due fattori principali per l'adozione della mesh di servizi, che descriveremo in dettaglio di seguito.

Scopri di più sui microservizi »

Osservabilità del livello di servizio

Man mano che vengono distribuiti più carichi di lavoro e servizi, gli sviluppatori trovano difficile capire come tutto funzioni insieme. Ad esempio, i team di assistenza vogliono sapere quali sono le loro dipendenze a valle e a monte. Vogliono una maggiore visibilità sul modo in cui i servizi e i carichi di lavoro comunicano a livello di applicazione.

Controllo del livello di servizio

Gli amministratori vogliono controllare quali servizi comunicano tra loro e quali azioni eseguono. Vogliono un controllo e una governance dettagliati sul comportamento, le policy e le interazioni dei servizi all'interno di un'architettura di microservizi. L'applicazione delle policy di sicurezza è essenziale per la conformità normativa.

Quali sono i vantaggi di una mesh di servizi?

Una mesh di servizi fornisce un livello di infrastruttura centralizzato e dedicato che gestisce le complessità della comunicazione da servizio a servizio all'interno di un'applicazione distribuita. Più avanti descriviamo i diversi vantaggi dell'uso di una mesh di servizi.

Rilevamento dei servizi

Le mesh di servizi forniscono il rilevamento servizi automatizzato, che riduce il carico operativo della gestione degli endpoint dei servizi. Utilizzano un registro dei servizi per rilevare e tenere traccia dinamicamente di tutti i servizi all'interno della mesh. I servizi possono trovare e comunicare tra loro senza problemi, indipendentemente dalla loro ubicazione o dall'infrastruttura sottostante. È possibile dimensionare rapidamente implementando nuovi servizi in base alle esigenze.

Bilanciamento del carico

Le mesh di servizi utilizzano vari algoritmi, come round-robin, least connections o weighted load balancing, per distribuire le richieste su più istanze di servizio in modo intelligente. Il bilanciamento del carico migliora l'utilizzo delle risorse e garantisce disponibilità e scalabilità elevate. È possibile ottimizzare le prestazioni e prevenire i colli di bottiglia delle comunicazioni di rete.

Gestione del traffico

Le mesh di servizi offrono funzionalità avanzate di gestione del traffico che forniscono un controllo dettagliato sull'instradamento delle richieste e sul comportamento del traffico. Ecco alcuni esempi.

Suddivisione del traffico

È possibile suddividere il traffico in entrata tra diverse versioni o configurazioni del servizio. La mesh indirizza parte del traffico verso la versione aggiornata, che consente un'implementazione controllata e graduale delle modifiche. Ciò garantisce una transizione fluida e riduce al minimo l'impatto delle modifiche.

Mirroring delle richieste

Puoi duplicare il traffico verso un servizio di test o monitoraggio per l'analisi senza influire sul flusso di richieste principale. Quando esegui il mirroring delle richieste, ottieni informazioni dettagliate su come il servizio gestisce richieste particolari senza influire sul traffico di produzione.

Implementazioni canary

È possibile indirizzare un piccolo sottoinsieme di utenti o traffico verso una nuova versione del servizio, mentre la maggior parte degli utenti continua a utilizzare la versione stabile esistente. Con un'esposizione limitata, puoi sperimentare il comportamento e le prestazioni della nuova versione in un ambiente reale.

Sicurezza

Le mesh di servizi forniscono funzionalità di comunicazione sicure come la crittografia, l'autenticazione e l'autorizzazione TLS reciproco (MTLS). Il TLS reciproco consente la verifica dell'identità nella comunicazione da servizio a servizio. Aiuta a garantire la riservatezza e l'integrità dei dati crittografando il traffico. Puoi anche applicare policy di autorizzazione per controllare quali servizi accedono a endpoint specifici o eseguono azioni specifiche.

Monitoraggio

Le mesh di servizi offrono funzionalità complete di monitoraggio e osservabilità per ottenere informazioni sull'integrità, le prestazioni e il comportamento dei servizi. Il monitoraggio supporta anche la risoluzione dei problemi e l'ottimizzazione delle prestazioni. Ecco alcuni esempi di funzionalità di monitoraggio che possono essere utilizzate:

  • Raccolta di parametri come latenza, tassi di errore e utilizzo delle risorse per analizzare le prestazioni complessive del sistema
  • Esecuzione del tracciamento distribuito per visualizzare il percorso completo e la tempistica delle richieste su più servizi
  • Acquisizione di eventi del servizio nei log per scopi di controllo, debug e conformità

Come funziona una mesh di servizi?

Una mesh di servizi rimuove la logica che governa la comunicazione da servizio a servizio dai singoli servizi e astrae la comunicazione al proprio livello di infrastruttura. Utilizza diversi proxy di rete per instradare e tracciare la comunicazione tra i servizi.

Un proxy funge da gateway intermedio tra la rete dell'organizzazione e il microservizio. Tutto il traffico da e verso il servizio viene instradato attraverso il server proxy. I singoli proxy sono talvolta chiamati sidecar, perché funzionano separatamente ma sono logicamente vicini a ciascun servizio. Presi insieme, i proxy formano il livello della mesh di servizi. 

 

Esistono due componenti principali nell'architettura della mesh di servizi: il piano di controllo e il piano dati.

Piano dati

Il piano dati è il componente di gestione dei dati di una mesh di servizi. Include tutti i proxy sidecar e le loro funzioni. Quando un servizio desidera comunicare con un altro servizio, il proxy sidecar esegue le seguenti azioni:

  1. Il sidecar intercetta la richiesta
  2. Incapsula la richiesta in una connessione di rete separata
  3. Stabilisce un canale sicuro e crittografato tra i proxy di origine e di destinazione

I proxy sidecar gestiscono la messaggistica di basso livello tra i servizi. Implementano inoltre funzionalità, come l'interruzione del circuito e i tentativi di richiesta, per migliorare la resilienza e prevenire il degrado del servizio. Le funzionalità della mesh di servizi, come il bilanciamento del carico, l'individuazione dei servizi e il routing del traffico, sono implementate nel piano dati.

Piano di controllo

Il piano di controllo funge da livello centrale di gestione e configurazione della mesh di servizi.

Con il piano di controllo, gli amministratori possono definire e configurare i servizi all'interno della mesh. Ad esempio, possono specificare parametri come endpoint di servizio, regole di routing, policy di bilanciamento del carico e impostazioni di sicurezza. Una volta definita la configurazione, il piano di controllo distribuisce le informazioni necessarie sul piano dati della mesh di servizi.

I proxy utilizzano le informazioni di configurazione per decidere come gestire le richieste in arrivo. Possono anche ricevere modifiche alla configurazione e adattare il proprio comportamento in modo dinamico. È possibile apportare modifiche in tempo reale alla configurazione della mesh di servizi senza riavvii o interruzioni del servizio.

Le implementazioni della mesh di servizi includono in genere le seguenti funzionalità nel piano di controllo:

  • Registro dei servizi che tiene traccia di tutti i servizi all'interno della mesh
  • Rilevamento automatico di nuovi servizi e rimozione dei servizi inattivi
  • Raccolta e aggregazione di dati di telemetria come parametri, log e informazioni di tracciamento distribuite

 

Che cos'è Istio?

Istio è un progetto di mesh di servizi open source progettato per funzionare principalmente con Kubernetes. Kubernetes è un sistema di orchestrazione di container open source che consente di implementare e gestire applicazioni containerizzate su larga scala.

I componenti del piano di controllo di Istio vengono eseguiti a loro volta come carichi di lavoro Kubernetes. Utilizza un POD Kubernetes, un insieme di contenitori strettamente accoppiati che condividono un indirizzo IP, come base per la progettazione del proxy sidecar.

Il proxy di livello 7 di Istio viene eseguito come un altro container nello stesso contesto di rete del servizio principale. Da quella posizione, può intercettare, ispezionare e manipolare tutto il traffico di rete diretto attraverso il Pod. Tuttavia, il container principale non ha bisogno di alcuna modifica o nemmeno di sapere che ciò sta accadendo.

Scopri di più su Kubernetes »

Quali sono i problemi di implementazione di mesh di servizi open source?

Ecco alcune problematiche comuni relative alla mesh di servizi associate a piattaforme open source come Istio, Linkerd e Consul.

Complessità

Le mesh di servizi introducono componenti infrastrutturali aggiuntivi, requisiti di configurazione e considerazioni sulla distribuzione. Hanno una curva di apprendimento ripida, che richiede agli sviluppatori e agli operatori di acquisire esperienza nell'uso della specifica implementazione della mesh di servizi. La formazione dei team richiede tempo e risorse. Un'organizzazione deve garantire che i team dispongano delle conoscenze necessarie per comprendere le complessità dell'architettura della mesh di servizi e configurarla in modo efficace.

Spese generali operative

Le mesh di servizi introducono costi aggiuntivi per l'implementazione, la gestione e il monitoraggio dei proxy del piano dati e dei componenti del piano di controllo. Ad esempio, è necessario:

  • Garantire l'elevata disponibilità e scalabilità dell'infrastruttura della mesh di servizi
  • Monitorare lo stato di integrità e le prestazioni dei container
  • Gestire gli aggiornamenti e i problemi di compatibilità

È essenziale progettare e configurare attentamente la mesh di servizi per ridurre al minimo qualsiasi impatto sulle prestazioni sull'intero sistema.

Problemi di integrazione

Per poter svolgere le funzioni richieste, una mesh di servizi deve integrarsi perfettamente con l'infrastruttura esistente. Ciò include piattaforme di orchestrazione di container, soluzioni di rete e altri strumenti nello stack tecnologico.

Garantire la compatibilità e l'integrazione fluida con altri componenti in ambienti complessi e diversificati può essere difficile. Sono necessari pianificazione e test continui per modificare le API, i formati di configurazione e le dipendenze. Lo stesso vale se è necessario eseguire l'aggiornamento a nuove versioni in qualsiasi punto dello stack.

In che modo AWS può supportare i tuoi requisiti della mesh di servizi?

AWS App Mesh è una rete di servizi completamente gestita e ad alta disponibilità di Amazon Web Service (AWS). App Mesh consente di monitorare, controllare ed effettuare il debug delle comunicazioni tra servizi più facilmente.

App Mesh utilizza Envoy, un proxy-mesh di servizi open source distribuito insieme a tutti i container di microservizi. Puoi usarlo con container di microservizi gestiti da Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS), AWS Fargate e Kubernetes su AWS. Puoi anche usarlo con i servizi su Amazon Elastic Compute Cloud (Amazon EC2).

Inizia a utilizzare la mesh di servizi su AWS creando un account oggi stesso.

Passaggi successivi su AWS

Registrati per creare un account gratuito

Ottieni accesso istantaneo al Piano gratuito di AWS.

Registrati 
Inizia a lavorare nella console

Inizia subito a creare nella Console di gestione AWS.

Accedi