Microservices is a concept that use to building a large ecosystem for your application. which means it includes many part like storage, services discovery, services, gateway, tracing etc…
talk about building application, naturally we pick up a language, a frameworks, and write some code, then run it in the container, that’s it.
we called it Monolithic, and it’s really okay to use Monolithic architecture that if your application is not that popularly or your servers strong enough.
but, if there’s an application that stand almost thousand concurrency at the same time, Microservices architecture might be the better choice for you.
in Microservices architecture…
- every services is individual part for each others, which means you can elastic adjust a specific service load capacity
- every services using GRPC / Messaging way talking to others, communication is not issue
- one of your services unexpected shutdown, services discovery remove it from services list, then next time other services GRPC client will choose healthy one
- benefit from services list of services discovery, GRPC client can make communication with different services in specific way, like round robin, random, leastconn to keep load balancing
- you can get every function calls informations by your tracker code, easy to find where the problem is
do i have to use xxx to implement my application to Microservices?
no at all, i said Microservices is a concept, and also GRPC / Messaging is a specify way, you can use what ever you want to achieve your application, you can also use Kubernetes
Multiple Instance to keep load balance, use gin / django to build your api interface, use httpclient to make communication between your services, it’s all decide by you