Development and IT teams across the board are moving from traditional monolithic applications to the modern microservices model. For this journey to be successful it takes the right tools. Microservices management is now becoming an important problem to solve, and the open source community is stepping up to the challenge.
What is microservices
Microservices architecture is when an application is made up of numerous interconnected services that work together, and can still be managed individually. You can have a service for logins, a service for notification, one for payments, another for location data, and so on. All these services combine to form your app.
Microservices architecture uses the policy of divide and conquer. It lets you manage each service individually. This means each service is developed, tested, and deployed independent of other services. This is drastically different from the monolithic model where each release is a mega event that happens only once every few months and has everyone losing sleep over what’s going to break. Inevitably something does break, and everyone works overtime on weekends to fix the deployment.
On the other hand, microservices lets you have control over every feature of your app, so that when one feature is updated and it causes an error or slows down performance, you know exactly where to look. You can roll back that update, or quickly zero in on the issue and fix it.
In addition to reliability, microservices helps you develop at a much faster pace. Because there’s less dependency, and each team is responsible for a service, they can develop features faster and ship them without having to wait for 10 different signoffs and approvals from other teams.
Microservices also puts a lot of control in the hands of DevOps teams. Microservices forces DevOps teams to follow Amazon’s mantra of you build it, you run it. But as a wise man said, with great power comes great responsibility. In a microservices world, DevOps teams need robust tools to help manage these complex systems. The challenges are new, and so should the solutions be.
Challenges with microservices
Microservices operates on a service mesh model. A service mesh is a layer where all services of an application interact with one another. As they interact in a complex manner, there are many challenges with microservices management -- challenges like load balancing, failure recovery, service discovery, and monitoring. Additionally, there are many necessary processes to make microservices a success. Some of these are A/B testing, canary releases, access control, and end-to-end authentication.
API management has proven to be of some help as it manages the communication between various APIs that make up a microservices app. However, in today’s container-centric and cloud-native world, we need more than API management. We need a dedicated platform for managing the service mesh. And that’s what Istio aims to be.
Why an open source microservices management tool?
There are many API management platforms out there, but they have their own take on service management. Many require you to adhere to their design philosophy, which may not be portable to other environments. This results in lock-in. With an open source microservices management tools, you wouldn’t be locked into any single vendor. This is the biggest benefit of an open source microservices management.
Apart from this, the presence of an active community that continuously develops the tool is invaluable. In the case of Istio, Google, Lyft, and IBM are initial contributors, which means it has the right pedigree to be a capable and successful tool in the cloud-native arsenal.
Finally, open source is powering the container revolution today. Docker is keen on supporting open source technologies, which is evident from its recent announcement of the Moby Project. Kubernetes is likely the hottest open source project in development today, and it aims to make continuous delivery easy using containers. Prometheus is a powerful open source monitoring tool. Additionally, the Cloud-Native Computing Foundation (CNCF) is adopting many of these tools as it assembles a suite of tools fit for modern cloud-native apps.
All this points to the need for an open source microservices management tool, and that’s just what Istio brings to the table.
What Istio can do
Being a service management tool, Istio intercepts all network communication. It does this by adding a special sidecar proxy to every service. This is one of the key strengths of Istio because it’s extremely easy to set up. The Istio sidecar proxies attach themselves without needing manual setup and configuration. Once attached, they monitor and secure the system, control traffic, and enforce policies.
What Istio is made of
Istio is made up of four key parts — Envoy, Mixer, Pilot, and Istio-Auth. Each of them performs a different function, and together make Istio a very capable microservices management solution.
- Envoy is the sidecar that extracts information from services and allows other components to take action on the services and traffic.
- Mixer enforces policies and access control between services based on input from Envoy.
- Pilot handles traffic across services, and interfaces between the user and Istio.
- Istio-Auth handles end-to-end encryption and user authentication.
The best part is that Istio grows with your system. It can easily detect new services and include them in the process. This is essential in a cloud environment where services are initiated, retired, and changed all the time.
With clear visibility into how it functions, and separation of duties between each component, Istio holds a lot of promise.
The road ahead for Istio
It’s still very early days for Istio, which is currently at v0.1.6. In the future. Istio’s goal is to run, and enable you to run, workloads, in any environment — cloud or on-premises. For now, Istio is restricted to just Kubernetes, but support for additional platforms will be added soon. The goal is to enable easy portability across environments. This is the holy grail of cloud-native computing. Today, cloud vendors lock you into their platforms and toolsets, and when they make a move that isn’t in line with your interests, you’re pretty much stuck with them. To avoid this, a tool like Istio can greatly help in giving you more control over which cloud platform you want to use.
Another important feature in Istio’s roadmap is integration with other platforms like Apigee. Google, one of the creators of Istio, acquired Apigee this past year to enable microservices in its cloud platform. Apigee is one of the leading API management tools. With the combined power of Apigee and Istio, microservices management will become much easier.
Microservices is the way of the future for modern cloud-native applications. Yet, microservices management can be a nightmare. Complex communication between services, lack of authentication, complex access controls, and lack of visibility into performance are all big gnarly problems that we’re yet to solve. In a big step toward solving these problems, Istio takes a unique approach of being purpose-built for microservices. Its features for load balancing, service discovery, monitoring, and authentication make it a necessity for today’s cloud toolset. Most importantly, its inter-cloud portability makes it very desirable for any organization that wants to avoid vendor lock-in. Istio is an important piece of the puzzle that is microservices. If Docker and Kubernetes have made it easy to architect applications as a collection of microservices, Istio makes it easy to manage these services.