At Branchspace, continuous improvement drives our efforts to create a best-in-class release process. Over time, we’ve refined our approach to ensure faster, more flexible deployments that meet customer needs.
When Dawid Bajor, Senior Quality Assurance Engineer, joined the team, the release process relied heavily on the need to synchronise all teams to prepare a new release. As our projects grew more complex, this system became less efficient, limiting our ability to deploy features quickly and reliably.
Key Improvements
To address these challenges, we focused on several key changes:
1. Prepare for one per sprint to daily releases: Change the purpose of the sign-off environment with a new release once per sprint to a mixed (internal and external) stable environment, released daily with verified changes, to check if we are capable or what we need to do to achieve it.
2. Empower Product Teams: Each product team is accountable for the full Software Development Life Cycle (SDLC), ie. the systematic process for designing, developing, testing, deploying, and maintaining a software product. This means our product teams are responsible for the successful merge and quality of the feature to spread and simplify new version preparation and single understanding of when the feature is done to resolve misalignments.
3. Architectural Changes: To make the deployment process more efficient, we also made architectural improvements that enable quicker, more flexible environment creation. This reduces complexity and makes it easier to scale deployments.
Next Steps
Looking ahead, we aim to enhance our release process even further with the following initiatives:
1. Ephemeral Environments for Developers: Ephemeral environments are temporary, short-lived computing environments created to perform specific tasks or tests and then automatically deleted once the task is complete. Giving developers the ability to create their own environments for specific tasks will improve flexibility and speed. This is crucial for handling multiple versions simultaneously.
2. Separation of Release Approvals and Hotfixes: We will separate release approval environments from hotfix environments, allowing for more efficient approval workflows while maintaining the ability to address urgent issues.
3. Feature-Specific Environments: Providing separate environments for each feature will enable customers to approve specific updates without waiting for larger deployments. This will streamline the approval process and reduce wait times for new features.
4. Multiple Versions of Modules: We are working towards the ability to deploy multiple versions of each file, which will further increase our deployment flexibility and help us better serve customer needs.
As Dawid concludes, "By continuously refining our release process, we aim to provide faster, more reliable deliveries with the flexibility that our customers expect." With these improvements, we are on track to build a best-in-class release process that meets both current and future demands.
Stay tuned—there's much more to come as we continue refining our release process to meet evolving customer needs.