Application release automation (ARA) is a process that packages and deploys an application, or application updates, through the stages of development to production automatically. In order to do this, ARA software features must include deployment automation, have some form of release coordination and will normally include environment management and modeling tools.
ARA is commonly used by agile software development teams, and especially by DevOps teams, in order to practice continuous integration (CI) and continuous delivery (CD). Both continuous integration and continuous delivery allow for quick and steady software delivery by allowing an organization to put more changes into production. In a way, continuous delivery can be thought of as a process, while ARA can be thought of as the CD tool chain -- or the set of programming tools that enable continuous deployments.
ARA is valued because it speeds up the software development and application delivery process with code testing and security features. ARA supports a model-driven continuous deployment process. A goal of ARA is to have multiple teams use the same release process without needing to deploy scripts. So, for example, an organization can make use of an ARA in order to allow development, test and production teams to work with one environment.
ARA tools should be able to facilitate steps like deployment packaging, versioning, server configuration management, database updates, rollback and security access. They will mostly focus on deployment packaging, associated configurations and continuous release deployment, however.
Benefits of application release automation
Benefits of ARA include:
- It automates deployment and does the heavy lifting for continuous delivery.
- Centralized management. Teams, from development through production, can view and update configurations without needing to execute specific scripts.
- Pairs with CD pipelines. It can deploy whatever comes through those pipelines automatically.
- Easy to update. It is relatively easy to push updates or version launches. Container-based applications can also be updated without the need to go offline.
- Facilitates DevOps. Most ARA platforms support and enable DevOps best practices.
How does application release automation work?
ARA deploys applications using a structured release-automation process. The tool used will package the application with any additional components or dependencies, then install it to its target environment. More specifically, most tools will work by first defining the application. This will include any configuration items that are needed to have the application run. The environment then needs to be specified. Before deployment, a tool may have the code go through validation. After validation, an orchestrator may then push the application to deploy.
If the application is being deployed in the cloud, a model-based ARA tool will decouple the application from target environments, which should free users from needing to write scripts manually for each deployment step. The needed components and designated destination have to be specified, but once that's done, the ARA tool should be able to determine the steps needed to deploy the application.
Components of application release automation
As support differs per ARA platform, the components each tool will have may be different. However, some common components include:
- These are the needed parts of an application grouped together. This component is critical to the ARA process.
- These are additional components needed to help run the other parts of an application being packaged. Being able to chart these dependencies will be useful in learning how updates will affect the application.
- This is the process of launching the application or update to its intended location. In ARA, instead of deployment being scripted, it is model-driven.
Additional components may include versioning, code testing, monitoring tools, dashboard analytics and scheduled deployments, which will also require network monitoring.
Application release automation and DevOps
Many DevOps teams will rely on ARA to enable practices like continuous delivery. Hastening the release process, while ensuring a sense of quality and monitoring, will allow development teams to focus on other tasks more frequently.
ARA also gives more transparency and automation to application code. This will allow different teams to collaborate more often, which is a staple of DevOps. More than that, ARA helps enable common DevOps goals like automation, workflow management and environment modeling -- all allowing for faster and more lean development times. Automation tools in ARA can help orchestrate the software lifecycle as well.
ARA tools and vendors
Most large public cloud hosts have their own ARA tools. Normally, they will also have some form of code testing, scheduled deployments, automated web server configuration and debugging tools.
Some example ARA tools include:
- Inedo's BuildMaster
- Electric Cloud's ElectricFlow
- IBM's IBM UrbanCode Deploy
- Puppet's Puppet Enterprise
- XebiaLabs XL Deploy
- Micro Focus' Deployment Automation
- Microsoft's Visual Studio Release Management
- BMC Software's Release Lifecycle Management
As an example, IBM's UrbanCode Deploy allows users to deploy applications to distributed data centers, cloud and virtualized environments. Its plugin ecosystem also eliminates scripting needs and aids in building DevOps toolchains.