Service Mesh Design Patterns - João Tiago Duarte Maia (2022)
As the benefits and applicability of microservice architectures becomes better understood by the software industry, and this architecture becomes increasingly more adopted for building stable, independent and scalable cloud applications, a new set of concerns have alerted developers regarding communication between the different microservices. A service mesh tries to address this issue by creating a clear separation of concerns between application logic and the infrastructure needed for the communication between the different services. This is accomplished by abstracting the cross-cutting concerns related with communication out of the internal services making it possible to be reused by the different services. Existing literature describes a service mesh pattern and a sidecar pattern. This paper leans on these patterns and proposes six new patterns found by observing the, what is commonly called, good practices. The six patterns are service mesh, shared communication library, node agent, sidecar, service mesh team and multi-cluster service mesh. In the second half of the paper, it is demonstrated an implementation of two different design approaches of the service mesh using an open-source microservices demo project and hosting it on the Google Cloud Platform using the Google Kubernetes Engine.