1. Collaborative Culture
The collaborative culture is the core category for DevOps adoption. A collaborative culture essentially aims to remove the silos between development and operations teams and activities. As a result, operations tasks—like deployment, infrastructure provisioning management, and monitoring should be considered as regular, day-to-day, development activities. This leads to the first concept related to this core category:
“Operations tasks should be performed by the development teams in a seamless way.”
Without DevOps, a common scenario is an accelerated software development without concerns about operations. At the end, when the development team has a minimum viable software product, it is sent to the operations team for publication. Knowing few things about the nature of the software and how it was produced, the operations team has to create and configure an environment and to publish the software. In this scenario, software delivery is typically delayed and conflicts between teams show up. When a collaborative culture is fomented, teams collaborate to perform the tasks from the first day of software development. With the constant exercise of provisioning, management, configuration and deployment practices, software delivery becomes more natural, reducing delays and, consequently, the conflicts between teams.
2. Software Development Empowerment
As a result of constructing a collaborative culture, the development team no longer needs to halt its work waiting for the creation of one application server, or for the execution of some database script, or for the publication of a new version of the software in a staging environment. Everyone needs to know the way this is done and, with the collaboration of the operations team, this can be performed in a regular basis. If any task can be performed by the development team and there is trust between the teams, this task is incorporated into the development process in a natural way, manifesting the second concept related to collaborative culture category.
3. Straightforward Communication
There should be a straightforward communication between teams. Ticketing systems are cited as a typical and inappropriate means of communication between development and operations teams. Face-to-face communication is the best option, but considering that it is not always feasible, the continuous use of tools like Slack and Hip Chat was cited as more appropriate options.
4. Blameless Context & Shared Responsibility
There is a shared responsibility to identify and fix the issues of a software when transitioning to production. The strategy of avoiding liability should be kept away. The development team must not say that a given issue is a problem in the infrastructure, then it is operations team’ responsibility. Likewise, the operations team must not say that a failure was motivated by a problem in the application, then it is development team’s responsibility. The teams need to focus on solving problems, not on laying the blame on others and running away from the responsibility. The sense of shared responsibilities involves not only solving problems, but also any other responsibility inherent in the software product must be shared. Blameless and shared responsibilities are the remaining concepts of the core category.
Adopting DevOps in the real world: A theory, a model, and a case study, Welder Pinheiro Luz a, Gustavo Pinto b, Rodrigo Bonifácio