As applications are being broken down from monoliths into microservices, the number of services making up an application increases exponentially. And as anyone in IT knows, managing a very large number of entities is no trivial task. A K8s Service Mesh, such as Istio, solves challenges caused by container and service sprawl in a microservices architecture by standardizing and automating communication between services. A service mesh standardizes and automates security, service discovery and traffic routing, load balancing, service failure recovery, and observability.
Just as virtualization abstracted the hardware layer of computer systems and containers abstracted the operating system, a service mesh abstracts away communication within the network.
Reducing Service Mesh Complexity
Although a service mesh is very useful to development teams, implementing the service mesh itself still takes some work. Because there are many moving parts, a service mesh leaves a lot of flexibility and room to customize it to your specific needs. As always, flexibility comes at the cost of complexity.
Balancing the features, functionality, and value of a service mesh with its inherent complexity is highly challenging, and requires expertise, but is well worth the effort. With an experienced team in place, organizations can overcome the complexity associated with running a service mesh at scale.
The best way to start developing the necessary skills and experience is no different from any other technology: start early, and start simple. Incrementally add more features and functionality as you build trust in the service mesh.
Start developing service mesh skills in tandem with your microservices architecture, because adding service mesh features to a relatively simple microservices architecture is much easier than when it’s already complex and large.
Let the service mesh grow organically alongside your ever-evolving microservices architecture. This keeps services secure and compliant, and helps maintain visibility.
The Service Mesh Team
As your organization grows and your use of the service mesh increases, it makes sense to create a dedicated team focused on the continual improvement of the service mesh, as well as helping application development teams make the most of the features and functionality it offers.
The dedicated team owns the service mesh platform and is responsible for the adoption of the service mesh across application teams and the entire microservices landscape. With this team structure, application development teams can focus on building business logic and microservices.
The Service Mesh Catch-22
Choosing the right service mesh technology, and nailing the implementation details, are crucial factors in your service mesh success. But how do you make the right decisions and do the right things when you don’t have the right knowledge and experience yet? This is the catch-22 for the initial deployment and configuration of every new technology, including a service mesh.
This is a common pitfall for organizations, as engineers enthusiastically start designing and implementing a new technology. The inefficiencies and sub-optimal decisions due to lack of experience don’t immediately come to light, but often surface only weeks, months, or even years later, when it’s too late to drastically change anything.
And even after making your initial choice, remember that requirements and circumstances change, so your service mesh will need to evolve, catering to those changes.
Reality is messy, and IT is no different. Migration from old technologies to new ones is always happening, whether from VMs to containers, from on-premises to public cloud, or from one public cloud to another. What use is a service mesh that helps you control traffic, security, permissions, and observability when it works for only a sub-set of workloads in just one environment?
Multi-cloud in a service mesh context means more than just multiple public clouds. It also needs to support on-premises deployments and support VMs. Last, the service mesh should span all these environments and have multi-cluster support.
This multi-cloud reality is often not explicitly designed by the organization, but “just happens.” For instance, a group of developers starts using yet another public cloud, because it has the specific functionality they need to do their work.
Whatever the cause, making sure your service mesh can handle this guarantees you can take a proactive approach to supporting the endless variety of multi-cloud scenarios in production. It gives you the piece of mind that you’re in control of security in the untrusted world of public cloud, and have visibility into the entire microservices landscape.
If chosen correctly, a service mesh can serve as an abstraction layer on top of the public cloud, abstracting away the cloud and giving back control over traffic, security, permissions, and observability in a multi-cloud reality.
That’s why it makes sense to select a service mesh that doesn’t lock you into a single public cloud. Instead, choose a cloud-agnostic service such as Platform9’s Managed Kubernetes service, so that your service mesh can become the mission control of your multi-cloud microservices landscape—the place for troubleshooting issues, enforcing traffic policies, controlling emergent behavior, and releasing new code safely to limit the blast radius.
Kubernetes Service Mesh: A Comparison of Istio, Linkerd and Consul
Building on Service Mesh helps resolve some of these issues, and more. As containers abstract away the operating system from the application, Service Meshes abstract away how inter-process communications are handled.
In this blog post you’ll learn:
- What is Service Mesh
- Service Mesh Options for Kubernetes
- Comparison of Istio, Linkerd and Consul Connect for K8s Service Mesh
- Common use cases to take advantage of Service Mesh today
Best Practices for Selecting and Implementing Your K8s Service Mesh
A service mesh can standardize and automate inter-service communication. It helps you control traffic, security, permissions, and observability in complex microservices landscapes.
In this tech brief, you’ll learn how to be successful with a service mesh:
- Start your k8s service mesh journey early to allow your service mesh knowledge to grow organically as your microservices landscape evolves, grows, and matures
- Avoid common design and implementation pitfalls due to lack of knowledge
- Leverage your service mesh as the mission control of your multi-cloud microservices landscape
- Kubernetes Service Mesh – Top Tips for Using Service Meshes - October 14, 2020
- Observability in Kubernetes Environments - October 5, 2020