There is a myth around the concept of Continuous Delivery that it simply involves buying lots of tools, making them all work together, the button gets pushed and off you go. However, the reality is a lot more complex.
There are many tools around to help automate the continuous integration, build and test process that is required for Continuous Delivery. The following are just a taster for the numerous tools available in this space:
- CVS and/or SVN can be used for source control
- Jenkins or Maven can be used as an automated build environment.
- Portus Test (or the equivalent SV tools from IBM, Parasoft or CA) can be used as a Service Virtualization environment
- Jira or Podio can be used for project management
…and so on.
Everyone has their preferences but most organizations will standardize on a single set of defined tools to deliver their continuous integration environment. However, this is likely to be only half the battle. It is often said that to screw up is human, to really screw up requires computers and this is definitely the case with continuous delivery and the tools that support it.
Taking the four categories of tools listed above:
Without a source control system, you will never be sure of where your latest source code is, so what do you build from?
Without rules and processes around checking updates in to your source control system, you are likely to find the updates being lost, changes being overwritten or buggy code being promoted into an area before it has been fully tested.
Automated Build Environment
Without an automated build environment, you end up with manual steps which are prone to human error or simply not being executed. Automated build environments are great, however, if they are not set up correctly they can provide a false sense of security when it works. Serious care and thought must be put in to the automated dependencies that are brought in as part of an automated build as the wrong versions can cause havoc with builds.
Service Virtualization Environment
Without a service virtualization tool, automation normally consists of stubbed or mocked service which simply do not sufficiently test the application under test. A good SV tool will enable you to fully test all data paths and error paths for your application, however, if not set up with a proper governance structure, you will end up with more virtual services than you have real services and wondering which is the most reflective of your real service.
Most project management tools are a question of personal taste in many cases. They do a good job managing the work that is being done but again, unless they are set up with a proper process, proper controls and well defined rules on how to use them, they could hamper a project more than help it.
In summary, there are many and varied tools around to implement a continuous delivery strategy, however, whatever tools you choose, you need to think carefully about how they are set up and ensure that when used, they are used in a consistent manner and well understood by all that will use them.