Does Your Organization Need a Service Mesh? (Part 1)
“Service Mesh” may be one of the most hyped buzzwords in the Cloud Native space, but what is a Service Mesh and how do you know if your team needs one? These are obvious questions with non-obvious answers. Unless, of course, you’ve had the chance to work through the good, bad, and the ugly of service mesh adoption on multiple projects and observe where organizations struggle, where they succeed, and whether the payoff was worth the pain. Fortunately, OpsGuru has had the opportunity to help clients through these service mesh adoptions. In this blog series, I’ll share some high-level insights in hopes of bringing you closer to considering service mesh adoption for your organization.
Why Are Service Meshes So Popular?
At the highest level, a service mesh is a set of utilities that abstract most of the complexities of communication between applications. These complexities, highlighted in the Fallacies of Distributed Computing, draw attention to specific and probable failure modes that are introduced to a system when it is distributed across a network. These eight fallacies still ring true today and provide an excellent perspective for describing the problems that a service mesh solves:
The Eight Fallacies of Distributed Computing:
- The network is reliable
- Latency is zero
- Bandwidth is infinite
- The network is secure
- Topology doesn’t change
- There is one administrator
- Transport cost is zero
- The network is homogeneous
Modern applications are typically built with a combination of microservices and third-party services, distributed across failure domains while being subject to tighter regulations. The increasing pace of innovation for products leaves developers and operators less time to plan ahead.
Fortunately, there are organizations that have shared their experience in resolving these complex issues. Thanks to initiatives and open source solutions from companies like Lyft, Google, IBM, HashiCorp and others, we now have a number of solutions to these problems at scale. Collectively, these solutions all fall into the category of Service Mesh.
Service meshes will continue to be a topic of discussion due to the complexities in distributed computing. These problems have been exacerbated by modern software engineering practices enabled by cloud-native platforms. What we’re seeing today is the first round of accessible, robust solutions to these problems. While there are some obvious rough edges to most offerings, it’s important to recognize them as implementation details rather than fundamental flaws in the service mesh paradigm.
In the next few weeks, we’ll do a deeper dive in the following topics:
- What does a Service Mesh Do?
- How does a Service Mesh Work?
- Do you need a Service Mesh?
Are you intrigued by service mesh and wondering if your team needs one? Let us know. We’d love to help!