Zero-downtime deployments
With every cluster deployment, you will at some point need to think about code redeployment while minimizing the impact on your users. With small deployments, it is feasible that you might have a maintenance period in which you turn off everything, rebuild the new images, and restart the services, but this style of deployment is really not the way that medium and large clusters should be managed because you want to minimize any and all direct work needed to maintain the cluster. In fact, even for small clusters, handling code and configuration upgrades in a seamless manner can be invaluable for increased productivity.
Rolling service restarts
If the new service code does not change the fundamental way that it interacts with other services (inputs and outputs), often the only thing that is needed is a rebuild (or replacement) of the container image that is then placed into the Docker registry, and then the service is restarted in an orderly and staggered way. By staggering...