Need of Container Orchestration
As we know about containers, various containers are running for your application. Let’s consider the some scenarios! What if your application relies on other containers such as DB or messaging/middleware services or other back-end services? What if the number of users increase and you need to scale your application? You would also like to scale down when the load decreases.
To enable these functionalities you need an underlying platform with a set of resources. The platform needs to orchestrate the connectivity between the containers and automatically scale up or down based on the load. This whole process of automatically deploying and managing containers is known as Container Orchestration.
Orchestration Technology:
1- Docker Swarm by Docker — Easy to setup and get started, it lacks some of the advanced auto-scaling features required for complex applications.
2- Mesos from Apache — quite difficult to setup and get started, but supports many advanced features
3- Kubernetes by Google — a bit difficult to setup and get started but provides a lot of options to customize deployments and supports deployment of complex architectures, also supports all type of Cloud Provider AWS, GCP, Azure etc.
Advantages of Container Orchestration:
1- Your application is now highly available as hardware failures do not bring your application down because you have multiple instances of your application running on different nodes.
2- When we run out of hardware resources, scale the number of nodes up/down without having to take down the application.
3- The user traffic is load balanced across the various containers. When demand increases, deploy more instances of the application seamlessly and within a matter of second and we have the ability to do that at a service level.