Release Management Best Practices
What is Release Management?
In development and IT operations, release management is the process of which software is built and released and deployed to its users. This includes everything from planning, development, testing, and all the way up to deployment/release of the software. Release management provides production teams with a system for managing what could sometimes be a daunting software delivery lifecycle. In addition, a good system of release management must ensure an optimal experience for the end user and align with overall business priorities.
The main goals of release management are to:
- Manage the risks encountered throughout the software delivery lifecycle
- Optimize and oversee the development and release processes
- Meet delivery goals with consistency
- Deliver value and an optimal experience to the customer/user
- Ensure profitability and meet business goals
Release Management in DevOps: How is it different?
A DevOps team is centered around an emphasis on increased collaboration and communication between development and IT operations teams. No more working in silos or handing projects off to production and forgetting about them. What this means for release management is shorter feedback loops that allow teams to release software faster and with less complications along the way.
What is a Typical Release Management Process?
Release management processes will vary slightly from team to team. Your release management process should be unique to your business and personnel, with the goal of optimizing the flow at which you deliver a valued service to customers and users.
Generally, a release management process can be broken down as follows:
Step 1: Define specific requirements and criteria for the upcoming release. For example, let’s say you are adding a new section to an existing mobile application. You’ll want to make sure the addition works across the different mobile operating systems (e.g. iOS and Android).
Step 2: Specify concrete acceptance criteria for defined requirements. Based on requirements that were determined in step one of the process, you’ll then need testable assertions for each. With our previous example, acceptance criteria might include:
- Addition displays correctly on iOS
- Addition displays correctly on Android OS
- New features must work on version x of each OS
Step 3: Push deployments to a staging server or environment. This will allow you to make the necessary application changes and updates without directly impacting the current or live version that existing customers or users use. The staging environment should be as close to the production environment as possible in order to minimize any issues when switching over to production.
Step 4: Quality assurance teams (also known as an Experience Assurance Expert or the XA team in DevOps) will review the staging environment to ensure all acceptance criteria is met. In addition to testing new features or additions, it’s important to also re-test old or existing features to avoid regressions.
Step 5: Deploy software to production. Once QA/XA has signed off on the new software, it is ready to transition over to production and made live for users.
Tips for Improving Your Release Management Process
There are several tips and release management best practices that can help you to further improve your processes. These include:
- Make sure acceptance requirements are clearly defined and objective. Don’t leave these up to interpretation or opinion. Instead, define key release metrics that can be easily measured and checked off.
- Limit the impact on your users. The goal of a good release manager is to release new updates quickly and effectively while minimizing any downtime or impact to users and customers. Use proactive testing, active monitoring, and real-time alerting to quickly identify and resolve any incidents during a release.
- Keep the staging environment updated so it’s always as close to the production environment as possible.
- Automate where you can. In today’s world, speed is essential. Automation in a release management will not only speed up time to deployment, but also reduce chances of human error. Processes such as quality assurance can benefit from automation.
- Always create new updates rather than modifying new ones. Changing existing configurations often leads to an increased chance of errors or bugs. By creating entirely new updates instead, releases will be more reliable, resulting in happier customers.
Release Management vs. Change Management
So, how is release management different from change management? Change management is a step above release management, and is responsible for readying the stage for one or more deployments. Change management takes care of all pre and post-release activities, including a post-implementation review. Release management is a more specific part of the overall change management lifecycle.
What Are the Essential Roles for Release Management?
Having the right personnel in place is critical to a good release management process. Some essential roles include:
Product Owner
The product owner’s primary responsibility is to determine and clearly define the specific requirements and acceptance criteria for an upcoming release. Steps one and two of the process discussed above are where the product owner takes the lead.
Quality Manager
The quality manager’s (or XA) role is to first ensure that the acceptance criteria defined by the product owner accurately reflects the requirements. New code or features should not be able to pass acceptance criteria and still leave the product owner unhappy. Quality managers are also responsible for ensuring QA tests are completed correctly and without false positives or negatives.
DevOps Team
In release management, the DevOps team is responsible for maintaining a consistent staging environment where developers can work quickly and efficiently. The staging environment should always be as close to the production environment as possible so that the quality manager can trust that all tests completed in staging will be accurately carried through to production. The DevOps team will also need to achieve high-availability production deployment in order to minimize downtime and user/customer impact.
What Makes a Good Release Manager?
A good release manager must always consider the customer and end user. Effective release management systems will consistently deliver value to its users while minimizing downtime and any post-deployment incidents. With release management best practices in place, development and operations teams will be able to deploy new releases more quickly and with less error, making for a more reliable service and happier customers.
Additional
Resources
EBook
Achieve Operational Resilience in the Cloud with PagerDuty and AWS
EBook
What is Runbook Automation?