Concepts

  • Health checks—for example in Kubernetes or Marathon or Swarm—are the fundamental prerequisite to carry out automated upgrades of services.
  • A rolling upgrade is a simple form of a zero-downtime deployment where instances (or: replicas) of a service automatically are shut down one by one and a new version of said service is launched automatically. The decisions when and how to shut down a service are based on the result of a health check.
  • The idea behind canary deployments is to expose a small fraction of the clients to a new version of the service. Once you're confident it works as expected you roll out the new version to all users. If you take this a step further, for example, by having multiple versions of the service you can do also A/B testing with it.
  • With Blue-Green deployments you have two versions of your service (unsurprisingly called blue and green): let's say that blue is the live one, serving production traffic and green is the new version to be rolled out. Once all instances of green are healthy, a load balancer is reconfigured to cut over from blue to green and if necessary (to roll back) one can do the same in the reverse direction.

Recipes and tools