You might have already come across this acronym; ARA (Application Release Automation). As part of DevOps practices, this is not only the process of automating the actual installation of an application (landscape), but also involves moving the application through the deployment pipeline (e.g. dev > test > acc > prod).
Implementing ARA in a company with existing software, means legacy systems are commonplace. The key takeaways I mentioned below are taken during my practice at one of my customers. This customer has legacy. Not only in the software systems, but also in the infrastructure. All deployments are done manually. No server is the same. Their application landscape runs on about 300 different servers, making scale and complexity quite challenging.
So let’s see what I found out;
1. Be prepared for tough cultural changes
Replacing manual processes by automated ones often causes resistance. People generally think their way of working is “good” and changing the system makes them feel they have no control. They will use every deployment failure as an argument to stop the implementation.
Generally there is no collective ownership, so people don’t feel responsible for failures that happen, which are caused by others. Only by accepting the fact that there is a collective responsibility to produce working and high quality software, people can cooperate in an efficient way to quickly solve issues together. Without blaming each other for the cause of the problem.
2. Choose the right tool
As always, using the right tool is important to achieve great results. In the world of ARA there are quite some tools that do a good job. There is one however, for which I have a big preference and that is Microsoft’s TFS, or the cloud version: Visual Studio Team Services (previously Visual Studio Online or VSO). As part of the cloud version, Microsoft just announced and released “Release Management” as a tool to support ARA. It is a very pluggable system, making it flexible and truly cross-platform. Above all, it is part of a bigger suite of tools supporting DevOps processes. So it also tightly integrates with agile processes, source code/version control, automated build and work item management. Although everybody is free to choose the ideal tool, I would say that you’d definitely need to take a look at this great product!
3. Think about provisioning
Flexibility in infrastructure is a big plus when implementing ARA. Imagine you are developing a deployment process for a new application. You want to test it, but you don’t want to bother the developers or testers. Wouldn’t it be nice if you could rig up an environment yourself to start testing on? Instead of going to the service desk/ops to get another set of virtual machines on their already overloaded servers…
When the deployment process is automated, it can also be used by test teams to rig up different environments. It would be nice if that can be done without the hassle of asking ops to do their trick. Why not move to a cloud system, for this matter? E.g. Azure is a great solution to do easy provisioning. Even having the scripts to provision a server or an environment of servers is a possibility. Bottom line: make it easy to get an environment!
4. Version everything
That is literally: version everything!! Version your deployment scripts, version application configuration, version infrastructure, version databases. That is the only way to make sure you are able to reproduce environments as a holistic unit, to match the versions of all parts you are deploying. This is the only way to be able to reproduce a specific version of a system with a press of a button.
5. Don’t mix manual and automated
Making manual changes on servers that get deployed in an automated way will almost always cause trouble in subsequent automated deployment. Don’t touch it! Even though you’ll think that it is an easy simple change and nothing can possibly go wrong, Murphy will visit you… Make sure your deployment process is so fast, easy and reliable, that nobody will doubt that that is the best way to go!
Good luck in your efforts!
Disclaimer: these 5 takeaways are items I ran into during my practice. It can be very well that they don’t apply to your situation. Also it’s not the 5 most important takeaways… I hope they’ll help you.