Simple guide to Kuma : Service Mesh | Understanding and getting started ๐
Table of contents
Basic Know Before Getting Started -
(Note: You can skip directly to the Kuma part if the basics are clear)
Monolithic Application
Microservices
Monolithic Applications :
In simpler terms, It is an application that is packed inside a box along with its dependencies. That's it! Understand it more with its advantages and disadvantages.
Advantages:
Simple to manage (No hesitation, everything is in front of the eyes)
Easy Development
Flexible of changes
Disadvantages:
Harder to scale
Complexity (Lots of things are together, makes it hard to keep up)
No fault-tolerance (If one required feature drops, everything is down )
and many more.
Hence we needed something that could help us manage those modules separately (yes as a separate application!) That could help us minimize inter-dependencies of such modules that ultimately minimize downtime of your application!
Microservices:
In simpler terms, Consider Modules, which are required to run the main application, are running as independent applications. Thats it!
Let's understand by example!
Consider a food delivery app, from the user side it's just an interface where the user is selecting an item and placing the order. But from the production side, you know what it is! We have a backend, frontend, payment gateway, delivery-partner services and many other things.
In Microservices we just pack those things independently as an independent application. So we would have the frontend application running, the backend application running, the payment gateway application running, etc. This application does NOT require other applications to run! And That's the best part about microservices
Before getting started -
If microservices are already there, then what are these service mesh things?
Well, All modules are running as an independent application, and how will they interact with each other? If a user place order from the frontend then the backend should know! hence the concept of service mesh comes into the picture, which allows these independent applications to interact with each other!
Kuma - Service mesh ๐ป
Kuma is service mesh which is,
Open Sourced
Envoy-based (i. Envoy is just a side-car application connected with every service allowing communication between microservices)
Well if Envoy already supports communication then why service mesh?
Envoy provides communication while service mesh provides more control over this communication, such as security, monitoring this communication, routing etc. It's that easy!
Here's the difference with and without service mesh:
image cc: Kuma, Kong Inc.
Terminologies before getting started:
KUMA-CP
KUMA-DP
The simple architecture of ๐ป:
image cc: Kuma, Kong Inc.
How to get started with Kuma?
Kuma supports multiple platforms to run. such as,
Kubernetes
Universal
To get started on both platforms you can Learn more here.
Other Service-meshes:
Just like Kuma, there are many other service meshes available:
Istio
Linkerd
OpenShift Service Mesh
AWS App Mesh, etc.
Conclusion:
Kuma ๐ป is a simple, powerful and flexible service mesh that can be used to improve the performance, reliability, and security of microservices architectures. It is easy to deploy and manage, and it can be used with a variety of Kubernetes distributions.