Release and deployment management are among the key elements of the IT processes. Both are strictly interconnected and the lines between them are often blurry. Let’s start from the beginning.
Release management is a practice that involves managing, planning, scheduling, and monitoring the whole process of creating software. It takes place in each stage and environment, including testing and the implementation of software releases. The main objective is to ensure that the integrity of the production environment is adequately protected and appropriate components are implemented and available for use.
The development phase is the last element of this puzzle. It involves implementing a new or previously modified process, app, documentation, or any other element into the adequately prepared testing or production environments.
To sum up, the goal of deployment management is to transfer new or modified software, equipment, documentation, processes, or any other component to testing or production environments. It may also involve implementing components into other environments for testing purposes.
In other words, release and deployment management are two inseparable processes occurring commonly one after another (in fact, deployment is a part of release management). They can be compared to preparing a meal that is served for consumption. Why should someone prepare a meal, and in the end, not eat it?
So, as we are done with the definitions, let’s focus now on what release and deployment management are based on. There is nothing surprising in arguing that if you don’t know where to start, it’s best to start from the beginning, that is, planning.
Planning and coordinating the release
Release planning focuses on continuously improving release management practices, approaches, and standards, as well as developing comprehensive implementation plans.
It is carried out regularly, triggered by events and requests. Regular reviews can be conducted every two weeks, quarterly, or more frequently, depending on the effectiveness of currently existing standards and procedures.
The first step to the process of planning a new release is developing a project roadmap which can help you identify main milestones, and goals. It can also be used to prepare a detailed timeline in the next step of this process.
The aforementioned timeline should identify tasks that have to be done to achieve the release milestones and results. The timeline also defines resources that are required to perform tasks, and the time required to complete each of them.
When planning the next releases, it is worth implementing agile release management that has become quite popular recently. It’s a process of developing a backlog for the coming product or app release instead of creating it in a holistic and one-step approach. This process starts with reviewing the product backlog, that is, a list of prioritized functionalities or requirements that need to be implemented. Next, the product owner defines the release goal which is a high-level description of what this release should accomplish.
When the project timeline is ready, the product owner and the development team work together to develop the release plan. It should specify the tasks that need to be completed to deliver functionalities, as well as the schedule for each task. Additionally, the plan should identify the resources needed to accomplish each task and the risks connected with each of them. It is also worth including information about when and in what order each of the features and requirements is going to be implemented. It is usually done using the prioritization framework that takes into account the importance of each feature and the dependencies between them. The release plan is often developed to cover a period of two to four weeks.
After creating the plan, the next step is to implement the functionalities. It tends to be connected with writing code, and then with:
implementing it into the testing environment,
conducting tests – SAT (system acceptance testing), potential bug fixes, and UAT (user acceptance tests),
implementing functionalities into the production environment.
Before we inform users that a new version is available, it is worth monitoring the system for some time and conducting basic tests. This ensures that the functionalities work as expected and do not adversely affect the stability of the production environment.
An agile release implementation process is iterative. The goal of each iteration is to deliver the functionalities and ensure that they meet the set standards. The process is usually repeated until all the functionalities are delivered, and the organization is satisfied with the results. In addition, you should remember that flexible release management can be implemented via descoping, that is, moving one or a few tasks from backlog to subsequent releases (of course, with the prior consent of a product owner) or postponing the testing or production implementation deadline. To understand this process better, let’s have a look at the software development life cycle (SDLC) framework. It is the overall conceptual framework describing all the activities in the software development project from planning to maintenance.
Who is involved and who is the person who constantly asks about the progress?
In the release management process, there are no strictly assigned roles. I’d rather say that they’re connected with the entrusted responsibilities and participation in given processes. In every company, the structure and naming can differ; therefore, it is recommended not to rigidly assign roles. They are determined according to preferred practices. It’s worth noting that the roles are not job names in the company. One person can be assigned to several roles or several people can be assigned to one role. As mentioned above, roles are usually defined within the context of the processes and activities. Here, the ITIL comes in handy since it describes the roles from this perspective.
Leader – takes key decisions in the strategic service development and coordinates activities, is a kind of a driving force
Administrator – reports and manages time, assigns and prioritizes tasks
Coordinator/communicator – communicates internally and externally
Methods and technical expert – develops step-by-step instructions, documents procedures, works on improvements
Technical expert – is often an engineer who has broad theoretical and practical knowledge within the given scope of service provision.
According to good IT practices, one specific role should be distinguished, that is, a release manager. Commonly, this role is present in companies where the number of implemented changes is significant, in particular, when it refers to the planning done manually. In other companies, the product or service owner can take on this role. However, when the role of a release manager is defined, it is assigned to people with sound knowledge of the given company in terms of its business, products, services, technologies, and processes. The role of a release manager requires strong project management skills, flexibility, as well as the ability to build authority to effectively coordinate the teams’ work. But, how can effectiveness be measured? The easiest way to do this is by carrying out implementations:
- on time,
- without exceeding the designated budget,
- without impacting users,
- that meet customer needs and expectations thanks to the fulfillment of the above points.
I hope the topic of release management is now a bit clearer to you. Obviously, release management can vary based on the specific needs and goals of the given company. Furthermore, it is worth noting that each release is an opportunity to improve everything from the workflow to a checklist and processes. It is so because, during the project work, the team finds out which process works best and which doesn’t for the given release.
Author
- Service Manager Service Management & Validation
-
He has been working in the IT area for 9 years supporting the biggest companies from Industry and Healthcare & Life Sciences sectors, for 3 years holding a service manager position. Responsible for coordination and optimization of all service delivery activities which are necessary for delivering and maintaining the service on the highest quality level. Privately he loves skiing.