What is a service mesh

What is a service mesh, and why do you need it?

Service mesh is a concept that applies to microservices. It’s a dedicated infrastructure layer deployed to streamline interservice communication and achieve increased observability, reliability, and security. Over recent years, service mesh has risen in popularity and become a standard component of the native cloud tech stack. 

In this blog, you will understand the fundamentals of a service mesh and why you need it to thrive in today’s digital era. But before we do that, let’s first explore the concept of microservices, their benefits, and the challenges that led to the creation of service meshes. 

Microservices - a way to make the software easier to manage and scale  

Microservices is an architectural approach to software development in which the focus is to break down a monolith into a collection of services. The concept became popular as more organizations started exploring its potential to help them overcome the challenges with legacy-based systems and platforms. As development teams were able to break down a huge and complex application into smaller pieces, they reaped a range of benefits, including: 

Isolation: Since microservices are loosely coupled, the failure of one service does not impact the rest of the application ecosystem

Scalability: Contrary to monolithic applications, microservices architecture enables development teams to manage their services independently and scale them up or down per business requirements. 

Faster time-to-market: Since microservices are small and managed by dedicated teams, release cycles are shorter; the teams do not need to bother about the rest of the application components. This approach to software development further allows developers to be more innovative and responsive to market demands.

monolithic & microservices architecture

                                                                        Image source

Challenges that come with microservices-based development 

The fundamental challenge organizations face with a microservices-based software development approach is managing inter-service communication. 

Inter-service communication:

Depending on the size and complexity of the application, there can be hundreds or thousands of microservices. And to deliver the desired outcomes or a superior customer experience, these services connect and communicate with each other. 

Often, these microservices are deployed inside the Kubernetes cluster. However, service discoverability and secure communication remain a challenge. Also, when we integrate non-business logic - a network dependency - into the application logic, we pave the way for numerous potential hazards that grow proportionally with the number of connections the application depends on.

To begin with, when microservices grow in numbers and complexity, service discoverability becomes a challenge. Since microservices can be deployed on any server, one service (say service A) might need help interacting with another service (say service B) when there are thousands of microservices. 

Additionally, when non-business logic is injected into the microservices, it leads to confusion between operators and developers. The development team can also feel lost as the assigned service comprises business logic (BL) and non-business logic. Besides, interservice communication in a traditional microservices architecture tends to be insecure. 

Kubernetes tries to address some of these issues by managing the services running as Pods across a network of Kubernetes clusters. Still, problems persist and impact the application's performance, primarily in service-to-service networking and security. 

To help address these challenges, IT teams leverage a new set of tools: the service mesh. The objective behind implementing service mesh is very straightforward: not to overwhelm the service code with extra infra/network-related details and let it take care of only the business functionalities it has to perform.

What is a service mesh?

A service mesh is a dedicated tool that simplifies and secures microservices communication by providing the following capabilities:

  • Streamlined interservice communication 
  • Observability
  • Traffic management 
  • Security (authorization and encryption)
  • Resiliency (circuit breaking and retries)

A service mesh architecture often relies on deploying proxies next to the microservices in a Kubernetes cluster. Service meshes might not be needed when an application is in its early stages of growth and has few components to manage. However, a service mesh approach becomes critical when microservices grow in numbers and complexity. 

One of the advantages of using service meshes is that developers do not need to change their application code base. In addition, the service mesh tool can be deployed on a platform level which eventually helps development teams to focus on business logic rather than taking care of the non-business logic, which is often the case in traditional microservices-based software applications. 

In a nutshell, using service mesh eliminates the complexity of using 3rd-party libraries or components that developers need to code into each service;  instead, service mesh enables these teams to create a service proxy for all these components. As a result, these proxy services now constitute a service mesh and provide greater observability, security, and reliability. 

Usually, a sidecar proxy pattern is used to implement the service mesh architecture. With container orchestrators like Kubernetes, implementing this sidecar proxy approach becomes much easier and streamlined. Your team can place a service mesh proxy alongside each service in this pattern. The sidecars are then used to handle the non-business logic or functionalities, such as service discovery and load balancing, which ease the burden on the services and help developers focus on their core jobs. 

Service mesh in a microservices architecture

                                              Service mesh in a microservices architecture
                                                         Image courtesy: Medium 

Leading service mesh offerings 

Many service mesh platforms are available; however, Istio, Linkerd, AWS App Mesh, and Consul are among the most popular. 

  1. Istio is a service mesh initially developed by Google but is now open source.

    Istio mesh
                                                                                                Source: istio.io
  2. Linkerd is a robust service mesh solution that embeds security, observability, and reliability in Kubernetes without the complexity. It’s CNCF-hosted and 100% open source.

    robust service mesh solution
                                                             Source: https://linkerd.io/
  3. Consul enables teams to adopt a software-driven approach to routing and segmentation. Adopting Consul leads to additional benefits in failure handling, retries, and network observability. Consul acts as the control plane of the service mesh at its most basic form. The data plane is supported by Consul through its first-class support of the Envoy as a proxy.

    software-driven approach
                                                                               Source: https://www.consul.io/
  4. AWS App Mesh takes microservices management to the next level by providing consistent visibility and network traffic controls and helping deliver secure services. 

    AWS App Mesh
                                                            Source: https://aws.amazon.com/ 

Unlock the true potential of microservices with Kellton 

Microservices architecture promotes greater agility, scalability, and resiliency. But it also introduces new challenges, such as insecure interservice communication and integration of non-business logic into each microservice. A service mesh architecture in Kubernetes or other platforms can help resolve most of these challenges and empower organizations and developers to unlock the true potential of microservices. 

At Kellton,  we leverage microservices, APIs, and other disrupting technologies to create next-generation products for our clients. Whether your company plans to shift from legacy-based systems to modern digital solutions or build a software product from the ground up, Kellton’s team of experts can help. Connect with us here to discuss your project.