Regarding this technology, we need an orchestration tool to provide this feature set. There are some well-known container orchestration tools available on the market, such as the following:
- Docker swarm
- DC/OS
- Kubernetes
Kubernetes is the most-used one, and therefore could be deployed as a service in most public cloud services, such as in Azure. In general, it provides the following features:
- Automated container placement: On the container hosts, to best spread the load between them
- Self-healing: For failed containers, restarting them in a proper way
- Horizontal scaling: Automated horizontal scaling (up and down) based on the existing load
- Service discovery and load balancing: By providing IP-addresses to containers and managing DNS registrations
- Rollout and rollback: Automated rollout and rollback for containers, which provides another self-healing feature as updated containers that are newly rolled-out are just rolled back if something goes wrong
- Configuration management: By updating secrets and configurations without the need to fully rebuild the container itself