It was the end of August 2017. The remnants of Hurricane Harvey were still hovering over the city of Houston. The water from the nearby bayous rushed into our buildings. The lobby had four feet of water and no one could get in or out of the building. My team was responsible for the Digital Transformation releases and back then, all releases were done on a Saturday. We’d all come into work at 8 AM. Breakfast and Lunch were brought in for the team. We’d all be lucky to go home on these Saturdays by 8 PM. The production deployment took about 3 hours, the rest was spent on production smoke tests and verification tests. This Saturday was different. The business decided that we would postpone the release by two weeks – this would allow people to get back to their homes and perhaps allow us to get back to the office to perform the release.
Unfortunately, it would be months before people could return to the office. The business made the decision to execute the software release mid-September, so we knew this release would have to be done remotely.
Sound familiar? With the COVID-19 pandemic impacting the world, all of your IT employees are staying safe at home. In times like these, software releases can become a challenge, unless you take steps to manage those releases remotely. Some of these steps take some planning and coordination but will get your teams releasing code into production much more efficiently and effectively.
- Recruit a Release Manager – Notice I said “recruit” and not “hire”. Experienced Project Managers in the IT Operations space typically know how to manage large releases into production. The key is to have an individual who can coordinate and communicate effectively during the course of the release cycle. Release management is a relatively new but rapidly growing discipline within software engineering. As software systems, software development processes, and resources become more distributed, they invariably become more specialized and complex.
Organizations that have adopted agile software development are seeing higher quantities of releases. With the increasing popularity of agile development, a new approach to software releases knows as continuous delivery is starting to influence how software transitions from development to a release. One goal of Continuous Delivery and DevOps is to release more reliable applications fast and more frequently. Release Managers are beginning to utilize tools such as application release automation and continuous integration tools to help advance the process of Continuous Delivery and incorporate a culture of DevOps by automating a task so that it can be done more quickly, reliably, and is repeatable.
In organizations that manage IT Operations using the IT Service Management paradigm, specifically the ITIL framework, release management will be guided by ITIL concepts and principles. There are several formal ITIL processes that are related to release management, specifically the Release and Deployment Management process, which aims to plan, schedule, and control the movement of releases to test and production environments.
Having a Release Manager in place will help teams coordinate releases better when they are not face-to-face.
- Create a plan and release template for current and all future releases – Having a release plan in place and allowing it to be visible will provide transparency to stakeholders and everyone in the organization. This can be as simple as an Excel spreadsheet with each row describing the task, planned start and end time of the task, the person responsible, and the actual start and end time of the task. During the release, the individual assigned to the task can call out on a conference bridge or via video to visually show the completion of the task. If there are any issues during the completion of the task, the Release Manager takes notes and ensures that an appropriate incident is filed and tracked to completion.
The Release Manager understands business needs and their priorities and under what circumstances those priorities can change. The Release Manager has a clear picture of development dependencies and how changes to one part of a product can affect the stability of the whole. These dependencies need to be clearly outlined in the release plan.
Large releases for programs or enterprise-wide initiatives typically will have breakout bridges or rooms for sidebar conversations during the course of the release. These should be planned for by the Release Manager in advance.
- Utilize collaboration tools like Microsoft Teams – Audio conference bridges like GoToMeeting or WebEx are great for release day activities. However, in order to coordinate meetings heading up to the release and being able to save documents or create wiki pages for the release, there is no better tool than Microsoft Teams. Teams gives your organization the ability to collaborate and communicate effectively for releases.
- Know existing issues in production – This sounds simple, but in my experience, has been the single reason that releases become non-trivial exercises involving tens and perhaps hundreds of people. On the day of the release, a verification / validation test script needs to be in place in order to verify and validate only those functions that were modified for the release. Over-zealous business analysts or business users stumble upon a problem in production and fail to realize the problem has existed in production before the current release was planned. If that’s not being fixed in this release, it should not be the focus of validation tests.
- Use Release Management software – As a Release Manager, I have used several tools to manage deployments, releases and communications. Two that stand out are XebiaLabs’ XL Release and IBM’s Urbancode Release. These products allow for swimlanes for various teams and the ability to combine swimlanes into a cohesive release plan.
Remember the release that was supposed to happen at the end of August 2017, but was later pushed to mid-September? Well, we had a release plan in a spreadsheet and were able to complete the release in a little over 3 hours. Back then, we all used a conference bridge and my team helped with each step of the release. We knew the existing issues in production and therefore only validated the changes that were being made to the system during the release cycle.
Software releases can be managed remotely with the right coordination and collaboration between all stakeholders. If you would like to talk to me about managing releases remotely, please send me a note at sagar@vnvdevops.com.
What is release management?
LinkedIn – linkedin.com/in/sagarkarma
Twitter – @sagarvnvdevops