Understanding deployment automation
Deployment automation allows software to be easily and automatically deployed to pre-production and production environments, at the push of a button. This is crucial for minimizing risks during production rollouts and results in rapid feedback on software quality. By enabling teams to perform extensive testing immediately after updates, deployment automation ensures prompt assessment and enhances overall software quality. Implementing deployment automation doesn’t necessarily mean that you are doing continuous deployment. Continuous deployment is when you try to deploy every code change to production as soon as possible, and this can or cannot be applicable to your environment. You can do CD and automate your deployments but still have gated releases, feature flags, or even manual switches to formally light up the release.
An automated deployment process has the following inputs:
- Software artifacts (created by CI) that are ready for deployment in any environment, including production
- Configuration details unique to each environment
- Scripts for setting up the environment, deploying packages, and conducting deployment tests
Now, let’s look at how to automate your deployments.
Implementing deployment automation
Here is a list of fundamental principles and practices that a team should follow to implement deployment automation:
- Implement a uniform deployment process across all environments, including production. This ensures the deployment method is thoroughly tested before it’s used in production.
- Enable automated deployment of any artifact version to any environment by anyone with the right permissions. A process is not fully automated if it requires that someone file a ticket or manually prepare an environment.
- Use identical packages across all environments and maintain environment-specific configurations separately. This ensures packages deployed in production are the same as those tested.
- Ensure each environment’s state can be re-created using version control. This makes deployment repeatable and enables deterministic production restoration in disaster recovery (DR) scenarios.
That covers deployment automation. In the next section, we introduce software delivery security.