The DevOps movement is playing a key role in closing the gap between traditional development and operations teams. The goal is to bring these two groups together, increasing communication and collaboration, to focus on one common purpose – delivering value to the end customer.
As teams come together with the goal of process standardization, the way people work together changes. Moving from an ad hoc, each time “we do something just a little bit different” approach, to a defined, mapped, and versioned process takes time, but it is essential to creating a reliable continuous delivery cycle.
By collectively managing the delivery process as two main phases: building components and releasing software, teams sequence their work moving from the beginning, build management, to the end, release management. Starting with creating a consistent package-oriented build process serves as the launching point for Release Management.
As teams map, define, and optimize the release process, the resulting methodology is used to assess and determine the tooling needed to support improved release management. Three key types of tools are found in the release management pattern library: a Deployment Console, a Resource Model, and an Infrastructure Manager.
A Deployment Console organizes, controls, and manages code deployment. The benefits, including security and authorization, visibility, traceability, audit, are significant. Arguably the most important benefit is usability. Ideally, Deployment Consoles provide a point and click deployment automation critical for self-service deployment. A tool with a web-based interface allows self-directed/self-managed teams to move through the life cycle on schedule, without waiting on others or slowing others down. Imagine QA calling their own testing, developers creating their own development environments, and customer service calling their own environments for diagnostics. Tools like Run Deck or Puppet connect both the build and deployment consoles.
Understandably, this type of freedom makes some people nervous. Fearing a lack of control and that systems will get out of hand, many executives are hesitant to implement these changes. When the tooling is in place, technology manages one side of the system, while culture change, building a deeper level of trust, partnership, and collaboration, addresses the other.
The Resource Model identifies and manages the versions released within the infrastructure along with what roles they are playing. It manages the multiple development, QA, and/or testing environments there are being run and supported, and what program versions they are running. The Resource Model manages the supporting applications, their versions and locations. It maps the infrastructure environment supporting the Configuration Management efforts. The Configuration Management Database fits this concept, as a Resource Model is often an aggregate of data from multiple locations that organically emerge from the infrastructure.
An Infrastructure Manager is a programmable interface that orchestrates deployment and makes sure the new software goes where it needs to be, supporting targeted deployment for both new software and updates. The Infrastructure Manager grows or contracts dynamically as a part of the deployment process. With the right tool, you can create or collapse system images and instances with point and click ease. Common tools include VMware, V-Cloud Director, Open Stack, etc.
The Deployment Console enables a self-serve method for deployment that also supports security, authorization, and traceability. One component used in building trust among people. The Resource Model provides context and visibility to what is running where and why, which sheds light in an area that was previously “hidden”. People can now appreciate a deeper and more thorough knowledge of the entire system and impacts.
The Infrastructure manager supports targeted deployment managing what software is included where and why. These tools provide the color and complete the picture enabling the culture of open communication and collaboration to flourish within DevOps focused teams.