Deploy To Production

71 deploy-deploy-to-production

The entire flow of digital value through an organization culminates on releasing new value to end users in production. Organizations should strive to perfect this process and make it as repeatable as possible.

Explore More.

Inputs:

An approval and schedule for deployment from the Release Management team

Outputs:

A tested production deployment of the experience

Organizations release areas of digital value to users through the deployment process.

This event is a scripted process which covers several key areas:

  • Creation of a new environment with all infrastructure needed for a new production environment
  • Deployment of the new experience to the environment
  • Automated tests to validate environment behavior
  • If the automated tests pass, the rerouting of production traffic to the new environment
  • The rerouting of traffic away from the old environment and the destruction of the old environment

While the specifics of a deployment will be dependent upon the type of infrastructure and the platform of the experience, DevOps best practices should be embraced in the overall approach. These best practices include the following items:

  • Every step in the process should be automated
  • Every potential area of failure should have a level of automated testing to validate the behavior of a new environment
  • The environment should be configured to stream all performance and log data to a previously agreed upon toolset (such as an Elastic Stack configuration)
  • End users should not be able to access an environment prior to automated validation for the environment

With adherence to these best practices, the risk for deployment failure is reduced considerably over traditional deployment approaches.

Common Pitfalls

The release process is the core of what the Continuous Delivery process aims to perfect.

Even in organizations that strive for perfection here, there can be pitfalls, which should be avoided:

  • Any manual step required in a production release - Organizations should be releasing often. Because of that, every step in the process needs to be automated. This is one of the core tenets of the Continuous Delivery Mindset. Any manual process other than initiating the release should be avoided, as it introduces both an inefficiency into the process as well as an opportunity for fragmentation in the release process.
  • Not leveraging dynamic infrastructure - In many ways, not leveraging dynamic infrastructure is a reliance on a manual process. As mentioned above, organizations should work to ensure that every step in the release process is completely automated. This means that the creation, configuration, deployment, and destruction of a server instance should be automated. This is only fully realized when relying on dynamic infrastructure.