How service mesh can keep microservices light weight
Over the years Spring Boot has become de facto chose for designing in building microservices.
The micro service architecture brings lot of benefits by decomposing monolith into small independent components. However, which also brings common challenges related to distributed computing architecture.
To overcome those challenges spring cloud has added many libraries like
-???????Eureka for service registry
-???????Hystrix for circuit breaker
-???????Zipkin for distributed tracing to name a few.
All the above mentioned are cross cutting concerns and not limited to specific microservices.
Hence one need to add these libraries into all micro services and embed them in the code by annotating them.
This is invasive approach.
As Kubernetes become preferred container orchestration platform, service deployed on Kubernetes can leverage Service mesh like Istio & Linkerd to solve the above problem differently.
Service mesh creates sidecar container in the same pod where microservices is running. The service mesh agent running as sidecar is application aware L7 proxy which can intercept and inbound and outbound traffic and provide capabilities like
-???????Load balancing
-???????Circuit breaker
-???????Distributed tracing
-???????TLS encryption
-???????Observability
-???????Traffic splitting etc.
Since Mesh operates at network level, its non-invasive approach i.e. no changes required in application and hence micro service only contain code which is required for satisfying functional requirements.