Introduction

In cloud era, many organizations are starting journey towards adopting microservice architecture to enable organizations to grow fast, where & when needed. This article has been divided into multiple parts.

In part 1 of series, we touched upon key challenges in traditional (monolithic) architecture and microservice style architecture to start with.

In part 2, focus on what is Service Mesh, why do need to use Istio Service Mesh

In part 3, will be focusing on quick comparison between Spring Cloud and Istio service mesh.

In part 4, will be focusing on key benefits of Istio service mesh like how Istio helps developer, operators, etc.

In part 5, will be focusing on additional features of Istio service mesh

Comparison between Istio and Spring Cloud Netflix
Why do we need to consider Istio when there is already Netflix OSS framework. Let’s see short comparison between Istio and Spring Cloud Netflix.

Feature Spring Cloud Netflix Istio
Platform Spring cloud will work well in any distributed environment, including the developer’s own laptop, bare metal data centres, and managed platforms such as Cloud Foundry. Istio is designed and built to be platform-independent.
Note: For our pre0.2 release, however, Istio only supports environments running Kubernetes v1.5 or greater.
Language Services should be built based on JVM (Spring Boot Framework) Services can be developed using any language like JVM Based or Non-JVM Based. Supports Polyglot architecture.
Request Routing Spring Cloud Zuul is a JVM based router, it helps for canary testing, dynamic routing, static response handling, active/active traffic management.
Zuul’s rule engine allows rules and filters to be written in essentially any JVM language, with built in support for Java and Groovy.
Also, Spring Cloud Ribbon can be used as client load balancer to control traffic.
The rules should be configured in bootstrap or application properties file at during deployment time.
Istio provides a simple Domain-specific language (DSL) to control service calls. The DSL (Yaml) allows the operator to configure service-level properties such as circuit breakers, timeouts, retries, as well as set up common continuous deployment tasks such as canary rollouts, A/B testing, staged rollouts with %-based traffic splits, etc.
For example, a simple rule to send 100% of incoming traffic for a “reviews” service to version “v1” can be described using the DSL Rules.
The new rules can be created/existing rules can be updated at runtime itself by operator, no application code change or application deployment required.
Is Application code change required Yes, typically simple annotations to be added in application code to incorporate spring cloud framework. Also, it requires a re-deployment if any changes in application or bootstrap properties. No, there is no need to change the application, after Istio injected into application deployment.
Load balancing Spring Cloud Ribbon can be used as client load balancer to control traffic. Envoy distributes the traffic across instances in the load balancing pool. More sophisticated load balancing can be incorporated by creating routing rules.
Service Registration and Service Discovery Spring Cloud supports Self-Registration pattern. A service instance is responsible for registering itself with the service registry.
Spring Cloud Eureka, Spring Cloud Consul and Spring Cloud Zookeeper, provides service discovery.
Istio supports 3rd Party Registration pattern. The advantage is no need to change the application code to perform self-registration.
Meaning, Istio assumes the presence of a service registry to keep track of the pods/VMs of a service in the application. It also assumes that new instances of a service are automatically registered with the service registry and unhealthy instances are automatically removed. Platforms such as Kubernetes, Mesos already provide such functionality for container-based applications.
Service Mesh View
The load balancing (Ribbon), circuit breaker (Hystrix), metrics (Promethus) and tracing (Zipkin), all these capabilities should be handled as separate microservices along with business services.

The load balancing, circuit breaker, metrics collections and tracing, all these capabilities handled by Istio components.



Refer FAQ for clarifications on license, support, roadmap, etc.

In part 4, we will focus on benefits of Istio service mesh like how Istio helps to developer, operators, etc

References

Join The Discussion

Your email address will not be published. Required fields are marked *