Agile release planning is process planning used by engineering teams to ensure that software releases will go smoothly and be highly reliable. To avoid failures, here's what you need to know to craft a strong release plan.
Many engineering teams have found that having a strong release plan is crucial when building top-notch products.
As companies nowadays are more customer-centered than ever, you don’t want your users to experience any downtimes. If you were Netflix, you wouldn’t want to interrupt your customers watching their favorite series just because you wanted to release a new feature or a bug fix.
If time-consuming meetings and disparate data collections are the main ingredients of a failed project, careful planning, and clearly defined goals are the recipe for a successful software project.
Here are a few steps every company should take before releasing any new feature:
Step 1: Identify What You Are Releasing
The initial thing in the agile release planning process is to organize a planning meeting. Use the meeting to prepare a list of what needs to be included in the release. The right way to do so is to look at your to be released log and identify the features/bug fixes that meet the definition of ready defined by your team.
What's important in this stage is to hear the software engineers' input about any technical difficulties and potential challenges that might cause failure in the release process.
Step 2: Measure the Size of the Release
The project scope will influence how much time the engineering team would need to perform an end-to-end release if the entire process is not automated.
During this stage, you should pull all of the conclusions from the previous release iterations. Make sure you don’t stub into the same issues you went through previously.
Another smart idea would be to get input from other expert teams to manage any dependencies.
Step 3: Choose a Deployment Strategy
You have a few agile release planning strategies at your disposal:
- Big Bang: this is one of the simplest but riskiest forms of release. It involves making the entire release available to your whole user base.
- Incremental: this release strategy form involves rolling out features to a small group of users. You can make the feature available to a group of users in a specific location or to certain user roles. After the first rollout, you increase the user base at your preferred rate.
- Parallel: with the Parallel release strategy, you run the query through the legacy and new code paths simultaneously.
- Blue/Green: this strategy involves running two identical production environments called Blue and Green. At any given time, only one of the environments is live, while the other one is idle. For the sake of this example, let's say that Green is live, and Blue is idle. While you work on a new version of your software, deployment, and testing happen in the idle environment, in this case, Blue. When your fully deploy and test the software in Blue, you switch the router, so all incoming requests now go to Blue instead of Green. Now Green is idle, and Blue is live.
Step 4: Discuss the Release Timeline
Clear timelines are a crucial part of agile release planning. They have a significant impact on the success of the project as they can help you release the product in a timely order.
You have to look at each item in the backlog and see how achievable the delivery is. The manager should calculate the team's velocity by adding all user story points within a sprint. Once the average velocity of the scrum's team is known, the release timeline can be outlined.
Step 5: Consider Dark Launching
Sometimes, you need to push features that aren't ready for consumption by all users into production.
If that happens, you can use an approach called dark launching. Many companies have used the approach to transition from their traditional new software release cycles to hundreds of changes per day.
With dark launching, you're actually limiting access to features of your software. You can turn certain features on and off for specific groups, individual customers, or for everyone.
One of the best things about the approach is that it keeps the new code separate from the old code. When you're ready to make the new page available to all users, you can delete the old page and take the new one out of dark launch mode.
By doing so, your team can deploy function quickly and test it in production.
Step 6: Think of a Rollback Plan
With careful planning and a proper strategy in place, you can indeed make your deploys much safer. But that doesn't mean that you don't need for a rollback plan.
If anything goes wrong, you must have a strategy to undo a release and restore the system to its original state.
This is called a rollback plan.
In case a specific feature causes issues in production, you must first decide how you will deal with such challenges.
Would you have to restart a service? Would you have to make a change to a database? What would be the estimated downtime?
We can compare a rollout plan to hiking trail signs. By not following the hiking trail signs, hikers wouldn't manage to find their way back home. Similarly, development teams wouldn't know what steps to take to get the system back to its original state by not having a rollout plan.
Step 7: Schedule a Retro Meeting
Retro meetings are an opportunity for the team to reflect on and discuss what worked well and what can be improved.
Whether it's in a physical office or through Zoom, use the meeting to think "What did we do well?" and "What should have we done better?"
Start the session on a positive note and start discussing the things that went great. Continue by reflecting on the things that need improvement. The last step should be to talk about what concrete actions you as a team can take to improve those things.
Once you decide on all the details and make any last adjustments, share the agile release plan with everyone involved in the project. Your engineering team and your stakeholders should have easy access to the plan for reference and updates.
You can rest assured that with an informative and clear release plan, the software releases will be of high quality and reliable.