In un'architettura software, un service mesh è un livello di infrastruttura, configurabile e a bassa latenza, usato per facilitare le comunicazioni service-to-service tra servizi o microservizi, utilizzando un proxy.[1]
Un livello di comunicazione dedicato può fornire una serie di vantaggi, in modo completamente trasparente per i servizi/microservizi, come il monitoraggio delle comunicazioni, l'uso di connessioni sicure, l'automatizzazione dei tentativi e il backoff per le richieste non riuscite, il service discovery, il bilanciamento del carico, l'autenticazione e l'autorizzazione, il circuit breaker, l'uso di strategie di deploy alternative, ...[2]
Un service mesh è composto da un proxy di rete associato a ciascun servizio di un'applicazione e da un insieme di processi di gestione delle attività. I proxy, normalmente chiamati sidecar, formano il data plane, mentre i processi di gestione compongono il control plane. Il data plane intercetta le chiamate tra servizi diversi e le “elabora”; il control plane è il cervello della mesh che coordina il comportamento dei proxy e mette a disposizione, al personale operativo e di manutenzione, tramite un'interfaccia utente o delle API, gli strumenti necessari per manipolare e osservare l'intera rete.[3]
L'architettura service mesh è implementata da prodotti software come Istio, Linkerd, Consul, AWS App Mesh, Kuma, Traefik Mesh e Open Service Mesh. Envoy è il proxy più utilizzato tra i service mesh.[4]