When your organization is to adopt DevOps to improve your business agility, you need to consider how this impacts your software development and IT operations departments. If you aim to automate your software products’ deployment, you need to break-down the silos between them and rethink your software development organization. This will not only impact your organization structure and culture, but also your approach for sourcing the team members in this organization. In this blog I will talk about the impact on the organization and the sourcing approach for your teams.
What is the relation between Agile and DevOps again?
Agile software development is the method for software development where the software requirements as well as the software application itself evolve through the joint effort of self-organizing and multifunctional teams and their customers end user(s). The approach advocates adaptive planning, evolutionary development, empirical knowledge and continuous improvement. The approach supports a quick and flexible response to changes in software requirements in response to changes in the needs of their customers/end users.
DevOps is a philosophy, a cultural shift that merges IT operations with development, security and QA and demands a linked toolchain of technologies and processes to facilitate collaborative change. Its intent is continuous and secure delivery, continuous improvement, automation, rapid functional release, and downtime minimization to enable business speed, agility, adaptability, predictability and competitive advantage.
Agile software development has a focus on the cooperation between the business organization and the software development organization to create a qualitatively validated software application that meets the expectations of your organization and end users. In an agile organization the software application is the product of the collaboration. However, this final product is traditionally set up by the IT operation on the IT infrastructure in a separate process to make it available to the end users.
DevOps builds on Agile and adds the integration of software development and IT operations to further improve the maneuverability of the business organization, and the speed with which the evolving software application is made available to the end user(s); required activities are automated wherever possible.
Activities that can be considered for automation to establish the Continuous Delivery Pipeline include:
Continuous development, the practice of automatically generating the source code of the software leveraging functional and technical specifications.
Continuous integration, where the source code is automatically built into an installable software product.
Continuous deployment, where the software product is automatically installed and configured for testing or use.
Continuous provisioning, in which the IT infrastructure components, on which the software product is installed or integrates, are automatically rolled out, set up and configured.
Continuous testing, which takes care of the automated execution of technical, functional and integration test scenarios.
Continuous monitoring, in which all activities of the team and the availability and condition of the deployed software product are continually monitored, including automated alerting and, if possible, automated mitigation of issues in the event of incidents.
The automation of activities not only achieves acceleration. The automation also contributes to the quality of the result of these activities, because the automated actions are traceable and repeatable across software development and IT operations. Long term, this automation also contributes to keeping quality and costs of operations and maintenance under control.
However, the integration of software development and IT operations with DevOps implies the software development activities and the ITIL management processes are facilitated by one organizational entity. This integration sets constraints for contracting software development and IT operation and infrastructure.
The enterprise scale DevOps software development organization
SAFe, the Scaled Agile Framework, is currently the leading organization framework worldwide for the organization of an enterprise scaled software development organization, which integrates Agile and DevOps, and provides governance through portfolio planning and program management. The figure below gives an overview of the SAFe framework as well as the distinct positions of Agile and DevOps within this framework.
In the SAFe framework, the DevOps activities are positioned at the program level and executed and set up by the Systems team under the leadership of the Release Train Engineer (RTE). This team takes ownership of the components which constitute the Continuous Delivery Pipeline and is responsible for the operation of the pipeline across all teams in the organization.
In SAFe the components of the pipeline are called in SAFe Infrastructure Enablers. The focus area of this team is primarily the automated setup of the program’s middleware and the integration of the middleware components with the infrastructure. Although this setup and configuration is done through software automation, the knowledge required for this is strongly IT infrastructure oriented and includes topics such as network configuration and routing, server installation and configuration, database server management, backup, failover, restore, infrastructure monitoring. In situations where the hosting infrastructure is outsourced to a third external party, for example your cloud provider, the team often acts as an intermediary between the development teams and the hosting party.
For the construction of the Enablers, the team has its own backlog with its own epics and user stories, and they use an agile approach to get things done. As soon as Enablers are constructed, they are made available to all teams at the team level. By organizing these activities through a dedicated team, a consistent approach for the Agile Release Train within the program is assured and the required knowledge, skills and experience are bundled in one team. This team also facilitates the deployment of the Enablers to the Dev teams. This approach guarantees an effective and efficient design of the Agile Release Train for all Dev teams to benefit.
In the SAFe framework, the agile activities are positioned at the team level. The Dev teams use the Infrastructure Enablers to automate work. Because the Enablers are provided and only need to be put into use, the Dev teams can continue to focus its attention on collecting the software requirements and building the software application. The Enablers contribute to the acceleration of the Dev teams and the improvement of the quality provided by the DevOps Enablers, without the necessary, in-depth IT infrastructure and operations expertise being embedded in every team in the program.
Although the Enablers provide support for some of the DevOps aspects, each team will also have to take responsibility for several ITIL processes in the areas of Service Transition and Service Operations in close cooperation and coordination with the System team. Topics such as Change Management, Release and Deployment Management, Service Validation and Testing, Incident Management, Problem Management, Application Management, and Technical Management need to be taken into consideration. By embedding these processes in the teams, the teams will also take responsibility for the operational issues of the users of the production environment.
This is how the typical infinity symbol for DevOps is established, through continuous feedback from the users, and application and system monitoring, enabling the teams to adjust their daily activities and plan for the next release.
Stay tuned for my next segment of this blog as I will be elaborating the selection parameters for team members in the DevOps organization.