This week we continue our series on continuous delivery. In the first post on continuous delivery, we introduced the concept and tied it in to the core principles of Agile. We revealed the three key enablers to continuous delivery as stated by Jez Humble at Agile Alliance 2012. In today’s post, we’ll look at the three secret ingredients that Jez proposes to support these enablers.
The first of these ingredients is Configuration Management. Having a solid configuration management platform ensures that code and assets are managed properly. Code can be checked out and worked on, and cannot be updated by anyone else till checked back in. Version control, baselines, and approval mechanisms are built into good configuration management tools. But a tool alone isn’t enough – the team needs to understand the configuration management process as well. The build cycle and schedule, development and testing environments, expectations for committing code changes, documenting and tracking issues and defects, and team protocol must be understood and encouraged by all.
The second ingredient is Continuous Integration. In software development, continuous integration is all about quality control. A good configuration management process should naturally lead to an environment of continuous integration. Practices like automated builds, committing code changes to the baseline daily, and testing against an exact replica of the production environment all lead to high-quality software delivery. With this level of quality, software can be written and deployed rapidly, thus continuous integration is introduced into the environment.
The final ingredient is Automated Testing. Even with small incremental releases of a product, testing is critical to a continuous delivery approach. Having the tools to run automated testing ensures that tests are consistently done with each release. They also reduce, or eliminate, any subjectivity that occurs with manual testing. Automated testing can be applied to functional, unit, system and integration testing with the proper tool suite. The key is to continue to refine the testing scripts within these tools. To get more accurate and pinpointed test results, the team must be committed to maintenance of the test cases.
As these ingredients open up the possibility for continuous delivery, alone they are just tools. The use of the tools and the execution of the process is up to the team. At the end of the day, it’s the people that turn out the product.
When things move rapidly like this and some control is turned over to tools, the natural concern is that release quality goes down and risk goes up. In the next post in this series, we’ll explore ways to reduce the risk of release.
Does your team have the key ingredients in place? Are your tools there but not performing as they should? Or are you having problems establishing the right processes to support the ingredients? Let Braintrust Consulting Group help you find and fix the underlying problems. With our experienced team of Scrum coaches, Braintrust can help you overcome these barriers and bring continuous delivery to your shop. Click on the Contact page to hear from one of our product specialists. Or, head over to the Services tab to find out more about our offerings.