21. Deployment strategies

Table of Contents

A. Naive/Basic Deployment

All nodes within a target environment are updated at the same time with a new service or artifact version.

Pros

  • Simple, fast, and cheap

Cons

  • Riskiest and does not fall into best practices

B. Multi-service Deployment

All nodes within a target environment are updated with multiple new services simultaneously.

Pros

  • Simple, fast, cheap, and not as risk-prone as a basic deployment

Cons

  • Slow to roll back and not outage-proof

C. Rolling Deployment

All nodes are incrementally updated with the service version in integer N batches.

Pros

  • Relatively simple to roll back, less risky than a basic deployment, and simple to implement

Cons

  • Updated in batches, rolling deployments require services to support both new and old versions of the service.

D. Blue/Green Deployment

  • Blue - staging environment
  • Green - production environment

Utilizes two identical environments, with different versions of an application or service. Quality assurance and user acceptance testing are performed in the staging environment.

User traffic is shifted from the green environment to the blue environment once new changes have been testing and accepted within the blue environment.

Pros

  • Simple, fast, well-understood, and easy to implement
  • Rollback is straightforward
  • Not risky

Cons

  • Replicating a production environment can be complex and expensive
  • An outage or issue could have a wide-scale business impact before a rollback is triggered

E. Canary Deployment

Release an application incrementally to a subset of users. All infrastructure in a target environment is updated in small phases (2%, 5%, 10%, …, 100%).

Pros

  • Test production with real users
  • Fast and safe to trigger a rollback to a previous version of the application

Cons

  • Scripting a canary release can be complex: manual verification or testing can take time, and the required monitoring and instrumentation for testing production may involve additional research.

F. A/B Testing

Different versions of the same service run simultaneously as “experiments” in the same environment for a period of time.

  • Experiments are controls by some mechanism
  • Commonly, user traffic is routed based on specific rules or user demographics to perform measurements and comparisons
  • Primarly focused on experimentation and exploration

Pros

  • Standard, easy and cheap method

Cons

  • Experiments and tests can sometimes break the application
  • Scripting or automating AB tests can be complex
Previous
Next