The Release On-Demand Capability refers to the ability to deploy frequent updates to production, regardless of whether all functionalities are fully developed. For instance, this can involve daily deployments. It serves as an alternative to the traditional approach of scheduled releases, where changes are accumulated over a period (e.g., a couple of months), tested as a fixed set, and then released.
The traditional Scheduled Releases approach has several disadvantages:
In contrast, the Release On-Demand approach aims to address these disadvantages and offers the following benefits:
Enablers
By introducing and implementing these capabilities collectively, organizations can achieve the Release On-Demand capability, enabling frequent deployments of the latest stable version while offering flexibility, reliability, and reduced time-to-market for new features.
Adoption expectations
System Components | MVP | MVP+ |
---|---|---|
Trunk based branching approach |
+ |
+ |
Automated quality gates |
+ |
+ |
Feature toggle |
+ |
+ |
Contract testing |
+ |
+ |
Decouple deployment and release |
+ |
+ |
Backwards compatibility |
|
+ |
Loosely coupled architecture |
|
+ |
BDD approach for new features |
|
+ |
Tools
Functionality | Tool Name |
---|---|
Version Control System |
Git |
CI/CD tools |
Azure DevOps, Jenkins, GitHub Actions |
Test Automation |
JUnit, NUnit, Rest Assured, Selenium |
Artifact Management System |
JFrog Artifactory, Azure Artifacts, Azure Container Registry |
Documentation Collaboration |
Atlassian Confluence |
Contract Testing |
PACT |
Architecture design tools |
Microsoft Visio, Draw.io, Miro, Lucidchart, Archi
|
Roles
Name | Responsibilities |
---|---|
Scrum Master/Team Coach |
Coach and support usage of the best engineering practices to support release on demand |
Solution Architect |
Design solution in a way to allow easy components and feature decoupling |
System Architect |
Design systems in a way to allow easy components and feature decoupling |
Product Owner |
Define scope and provide acceptance of new features on the earliest stages of the process |
Developer |
Adopt practices to develop new changes in a small easy to test steps |
Build Engineer |
Integrate automated quality gates and deployment process |
Test Automation Engineer (TAE) |
Implement automated tests in advance allowing continuous testing process
|