Apply a five-step process to cloud delivery
When considering a process to automate as part of a cloud delivery system, we apply a five-step heuristic to each process. While the five steps below aren’t always performed in a sequential manner, you can use this as a checklist in determining whether a particular component is “Continuous Delivery Ready”. Sometimes, people skip the “Document” step and use tests to describe the steps that will be scripted.
- Document – Document all the steps to create a component – build, deployment, environment, etc. Make sure the documentation is written in such a way that it can be automated. This means it needs to have specific commands and provide each of the steps.
- Test – Write automated tests to verify the behavior of the scripts/code you will write. You might have different types of tests such as unit, component, acceptance, load/performance, etc. The key thing to remember is that they’re automated and can be run from the command line.
- Code – Script the actions based on the automated tests. For infrastructure, this might be described in tools like Chef or Puppet, application code may be Java, Ruby, .NET, etc. These scripts must be capable of running from the command line.
- Version – Version all components of the software system – application code, configuration, data and infrastructure. In order version these components, they must be a scriptable form. These components will include libraries. The only components you don’t version are those that can be recreated from scripts or binaries that aren’t modified (limit this to packages and libraries).
- Continuous – Once everything is versioned, scripted and tested, you can get rid of the documentation. Your tests serve as documentation. Leave any documentation (in wiki, etc.) that describe the process for setting up the Continuous Delivery system and process.