Continuous Application Release Cycle

December 14, 2007

Introduction

The Continuous Application Release Cycle is a simple process for providing predictable, stable releases in a rapid and sustainable way. It is not a detailed methodology for release planning, development or testing.

Agile methods, open source development and online applications (often in perpetual beta) have established the power of fast iterations and release of minor versions. Release early, release often! I’ve successfully used the Continuous Application Release Cycle with high velocity applications ranging from publically downloadable software (Sauce Reader) through to internal enterprise web applications.

The Continuous Application Release Cycle

Adopting this cycle brings certainty and momentum to end users while ensuring continuous improvement and low risk release management for developers. Developers move seamlessly from one version to the next, with only a small cross-over for bug fixing during the Beta period.

Release planning is a high level determination of the features and bug fixes that will be incorporated into the release.

Feature development & Bug fixing is the rapid development of wide-spread code changes to implement the planned features.

Design review & Feature freeze is a formal examination of the design and implementation of features for this release. Ensure they are neatly integrated into the application and do not compromise its integrity or simplicity. Build a final design / development plan to finish integration of the features, or delay their release until a future version.

Final development, Help & training and Bug fixing is a finalisation phase, with consolidation and review of the code base. New capabilities may be added to finalise features, but major surgery should be avoided. Help and training materials for new features are constructed in parallel.

Beta launch puts the application through standard test suites and launches to the Beta user group.

Beta testing & Bug fixing has Beta users installing, trying and testing new application features. Appropriate bugs may be fixed with careful control and testing.

Launch puts the application through standard test suites and launches to all users on production.

Production is wide-spread use of this application version. Bugs and feedback are collected for integration into the next version.

The CARC in practice

The length of the cycle varies depending on the type of application, but I’ve found that monthly releases work well in practice. The development phase lasts about 4 weeks, with 1 week of Beta testing before launch. Each version is in production for about 4 weeks.

The fast development cycle means each release has fewer changes, facilitating a short testing cycle and removing the heavy crunch that typically accompanies software releases. For developers, the key delivery date is the release to Beta testing. With experience, the release to production becomes increasingly routine.

Regular, planned releases keeps developers close to customer needs and allows rapid response to application problems or competitive features. End users enjoy a sense of momentum from the application, and become increasingly engaged as their suggestions, feedback and problems are quickly addressed.