Continuous Deployment

CD - Continuous Deployment is the process that takes features that have passed through continuous exploration and continuous integration and then deploys them into the staging and production environments, readied for release.

 

CD is an important practice for every team, team member and the ART

 

 

 

Automation of the Continuous Delivery pipeline

 

The deployment process needs to be automated and it is recommended that:

  • Match development environments to production as much as feasibly possible
  • Maintain a staging environment that emulates production
  • Deploy a working system to staging every iteration
  • Automate testing of Features and performance tests
  • Automate deployment
    • Everything under version control
    • Automatically build environments
    • Automate the actual deployment process

 

Lean Flow accelerates delivery

 

  • Identify bottlenecks and balance the amount of WIP against the available development and operations capacity
  • Decrease the batch sizes of the work
  • Manage and reduce queue lengths

 

Measure everything:

 

  • Collect data on business, application, infrastructure and client layers
  • Collect data about the deployment pipeline itself
  • Store logs in ways that enable analysis
  • Different telemetry for different stakeholders
  • Broadcast measurements
  • Overlay measurements with events (deploys, releases)
  • Continuously improve telemetry during and after problem solving

 

Architect for release-ability and Recovery

 

  • Stop the line mentality - all hands
  • Plan for and rehearse failures
  • Build the environment for both roll-back and fix-forward
  • Use tools such as:
    • Feature toggles - switch versions
    • Dark launches - silent updates
    • Chaos Monkey - DR
    • Canary Releases - pilots