Why Automate Application Deployments?
There is a lot of talk around automation products and automating your deploy. This is not just buzz but a real world need. Take for instance your standard deploy process: Developers work right up until a deadline, changing code and configurations to fix bugs and features at a frantic pace. The code and changes are then turned over to the System Administrators. At release time, the System Administrators deploy the code and make all the configuration changes. All too often, a step is skipped or a change in configuration was not relayed properly. We accept this as part of the process. It does not have to be a part of the process if you automate your deploys.
Source Code Management
The first step to any code deployment is to get your code into your favorite SCM, this prevents having ad-hoc changes missing from the final deploy. If you consistently and reliably keep all the code that moves from one environment to another in your SCM, then you will ensure that all your code gets out to production in the end. Source Code Management tools are not only for code, but server and application configurations as well. Remove the possibility of mistakes from manually updating config files by checking them into source control and having them move along with your code from development to staging to production. As well, you will save plenty of time relaying changes from development to production, where you often will forget a minor step that causes major headaches down the road. Developers do not need to tediously maintain a deploy document, instead, they are updating code in the source code repository. System Administrators do not have to wonder if they have all the steps or configuration changes. Everything is neatly stored in one place.
Automating deploys is not only for the deployment of code into production. It means to automate all deploys into development or staging and production. By doing this, you ensure no configuration changes are missed and that all code changes are properly deployed at each stage of the process. You also gain peace of mind when you have your automated deployment process in place. The idea of automating deploys is so that you have a consistent and reproducible deploy everytime. This ensures that problems do not occur because of human error or oversight.
An unseen benefit of automating a deploy is that you are also documenting your deploy process with code. This will prevent the need to have to write lengthy deploy documentation and will ensure that no one person is key in the deployment process. It should be so easy to deploy that you just push a button. Now that is nice, convenient and stable.
You could write scripts to deploy your code out to the various stages, but it is much more reliable to use a tool designed for this, Leroy is an automated deploy engine that is flexible enough to allow for code, package or application deployments as well as many other automation tasks.