ABSTRACT
As the benefits and applicability of microservice architectures become 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 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 control plane per cluster.
- Microsoft 2021. Cloud design patterns - Azure Architecture Center. Microsoft. https://docs.microsoft.com/en-us/azure/architecture/patterns/index-patternsGoogle Scholar
- Mohammadali Akbarisamani. 2019. Service Based Architecture with Service Mesh Platform in the context of 5G Core. (11 2019). https://trepo.tuni.fi/bitstream/handle/10024/117797/AkbariMohammadali.pdf?sequence=2&isAllowed=yGoogle Scholar
- Carlos Albuquerque, Kadu Barral, Filipe Correia, and Kyle Brown. 2022. Proactive monitoring design patterns for cloud applications. In Proceedings of the 27th European Conference on Pattern Languages of Programs (Irsee, Germany) (EuroPLoP ’22). Association for Computing Machinery, New York, NY, USA.Google ScholarDigital Library
- Christopher Alexander. 1977. A pattern language: towns, buildings, construction. Oxford university press, New York, USA.Google Scholar
- Kyle Brown. 2021. Service Mesh Pattern. https://kgb1001001.github.io/cloudadoptionpatterns/Cloud-Native-Architecture/Service-Mesh/ Accessed at: 2021-09-24.Google Scholar
- Kyle Brown, Bobby Woolf, Joseph Yoder, Cees De Groot, Chris Hay, and Ian J. Mitchell. 2021. Patterns for Developers and Architects building for the cloud. https://kgb1001001.github.io/cloudadoptionpatterns/Google Scholar
- Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal. 1996. Pattern-oriented software architecture: a system of patterns. Vol. 1. John Wiley & Sons, New York, USA.Google Scholar
- Filipe Figueiredo Correia and Ademar Aguiar. 2013. Patterns of flexible modeling tools. In Proceedings of the 20th Conference on Pattern Languages of Programs. Association for Computing Machinery, New York, NY, USA, 1–17.Google ScholarDigital Library
- Jürgen Dobaj, Markus Schuss, Michael Krisper, Carlo Alberto Boano, and Georg Macher. 2019. Dependable mesh networking patterns. Association for Computing Machinery, New York, NY, USA, 1–14. https://doi.org/10.1145/3361149.3361174Google ScholarDigital Library
- Amine El Malki and Uwe Zdun. 2019. Guiding Architectural Decision Making on Service Mesh Based Microservice Architectures. In Software Architecture, Tomas Bures, Laurence Duchien, and Paola Inverardi (Eds.). Springer International Publishing.Google Scholar
- Mark Interrante. 2022. Salesforce Goes Big With Containers & Service Meshes — Joins the CNCF. Salesforce Engineering Blog. https://engineering.salesforce.com/salesforce-goes-big-with-containers-service-meshes-joins-the-cncf-b5af2376ee33/Google Scholar
- Istio. 2022. Deployment Models. Available at https://istio.io/latest/docs/ops/deployment/deployment-models/#control-plane-models (2022/10/04).Google Scholar
- Anjali Khatri and Vikram Khatri. 2020. Mastering Service Mesh: Enhance, secure, and observe cloud-native applications with Istio, Linkerd, and Consul. Packt.Google Scholar
- Microsoft. 2021. Sidecar Pattern. (2021). https://docs.microsoft.com/en-us/azure/architecture/patterns/sidecarGoogle Scholar
- Chris Richardson. 2018. Microservices patterns: with examples in Java. Manning Publications Co., Shelter Island, NY.Google Scholar
- Chris Richardson. 2021. A pattern language for microservices. http://microservices.io/patterns/Google Scholar
- Matthew Skelton and Manuel Pais. 2019. Team topologies: organizing business and technology teams for fast flow. It Revolution.Google Scholar
- Tiago Boldt Sousa, Filipe Figueiredo Correia, and Hugo Sereno Ferreira. 2015. Patterns for Software Orchestration on the Cloud. In Proceedings of the 22nd Conference on Pattern Languages of Programs (Pittsburgh, Pennsylvania) (PLoP ’15). The Hillside Group, USA, Article 17, 12 pages.Google ScholarDigital Library
- Tiago Boldt Sousa, Hugo Sereno Ferreira, and Filipe Figueiredo Correia. 2018. Overview of a Pattern Language for Engineering Software for the Cloud. In Proceedings of the 25th Conference on Pattern Languages of Programs (Portland, Oregon) (PLoP ’18). The Hillside Group, USA, Article 6, 9 pages.Google ScholarDigital Library
- Tiago Boldt Sousa, Hugo Sereno Ferreira, Filipe Figueiredo Correia, and Ademar Aguiar. 2017. Engineering Software for the Cloud: Messaging Systems and Logging. In Proceedings of the 22nd European Conference on Pattern Languages of Programs (Irsee, Germany) (EuroPLoP ’17). Association for Computing Machinery, New York, NY, USA, Article 14, 14 pages. https://doi.org/10.1145/3147704.3147720Google ScholarDigital Library
- Tiago Boldt Sousa, Hugo Sereno Ferreira, Filipe Figueiredo Correia, and Ademar Aguiar. 2018. Engineering Software for the Cloud: Automated Recovery and Scheduler. In Proceedings of the 23rd European Conference on Pattern Languages of Programs (Irsee, Germany) (EuroPLoP ’18). Association for Computing Machinery, New York, NY, USA, Article 6, 8 pages. https://doi.org/10.1145/3282308.3282315Google ScholarDigital Library
- Tiago Boldt Sousa, Hugo Sereno Ferreira, Filipe Figueiredo Correia, and Ademar Aguiar. 2018. Engineering Software for the Cloud: External Monitoring and Failure Injection. In Proceedings of the 23rd European Conference on Pattern Languages of Programs (Irsee, Germany) (EuroPLoP ’18). Association for Computing Machinery, New York, NY, USA, Article 7, 8 pages. https://doi.org/10.1145/3282308.3282316Google ScholarDigital Library
- Statista. 2021. Usage of microservices within organizations. (2021). https://www.statista.com/statistics/1236823/microservices-usage-per-organization-size/Google Scholar
- Guilherme Vale, Filipe Figueiredo Correia, Eduardo Martins Guerra, Thatiane de Oliveira Rosa, Jonas Fritzsch, and Justus Bogner. 2022. Designing Microservice Systems Using Patterns: An Empirical Study on Quality Trade-Offs. In 2022 IEEE 19th International Conference on Software Architecture (ICSA). 69–79. https://doi.org/10.1109/ICSA53651.2022.00015Google Scholar
Recommendations
An Empirical Study of Service Mesh Traffic Management Policies for Microservices
ICPE '22: Proceedings of the 2022 ACM/SPEC on International Conference on Performance EngineeringA microservice architecture features hundreds or even thousands of small loosely coupled services with multiple instances. Because microservice performance depends on many factors including the workload, inter-service traffic management is complex in ...
Exploration of academic and industrial evidence about architectural tactics and patterns in microservices
ICSE '18: Proceedings of the 40th International Conference on Software Engineering: Companion ProceeedingsMicroservices are quickly becoming an outstanding architectural choice in the service-oriented software industry. This approach proposes to develop each application as a collection of small services, each running on its process and inter-communicating ...
On practitioners’ concerns when adopting service mesh frameworks
AbstractContextThe emerging service mesh architecture tries to simplify microservices by delegating crucial tasks to dedicated infrastructure. However, service mesh introduces new notions and enables complex capabilities such as sidecar proxies that ...
Comments