The availability of the mentioned services improve our life significantly yet there is a lot of complexity involved with maintaining a plethora of applications running across multiple server instances. For example:
- How can we update the server instances without bringing down the whole service? Can this be done with less effort?
- Is there a reliable way to scale our application (vertically and horizontally) with ease?
Given that all modern deployments make use of containers, we can make use of container orchestration software that helps with the maintainability issues. Kubernetes (https://kubernetes.io/) and Mesos (http://mesos.apache.org/) are examples of two such solutions.