"DevOps is not a team, it is culture"
This is a common response when suggesting a team responsible for DevOps practices. On the one hand, criticism makes sense, because for a project to have well-implemented DevOps practices, people from different areas need to collaborate. On the other hand, it is a vague answer and does not help anyone who is looking to implement DevOps in the company and does not know where to start.
Considering that DevOps consists of the union of practices, processes and tools to deliver and maintain software more efficiently throughout its life cycle, any company that produces software, regardless of the organizational structure, can implement some of the disciplines within the limits imposed by the organization and take advantage of that. A company may not use public clouds but have modern code and CI / CD versioning practices, for example. With time, maturity and confidence based on the positive results of these practices, companies can explore other disciplines, or not.
Depending on factors such as project criticality, developer autonomy, organizational structure and degree of bureaucracy in the processes, different team configurations and division of responsibilities may be more appropriate.
At first, one can imagine a multidisciplinary team, sharing development and operations responsibilities. This can mean in teams of developers with an understanding of the tools and platforms used, or mixed teams, with developers and platform specialists.
This scenario is simpler when it comes to modern development using public clouds. The products developed may already be born ready for the cloud, with scripts for creating and configuring the environments in which they will be published. The public cloud abstracts much of the operational effort to keep the solution in the air - with features such as geo-redundancy (where products are published in data centers with different locations) and automatic elasticity configuration (more or less product instances according to demand), for example, the team depends on a smaller allocation of highly specialized people on the platform to guarantee the availability of the products.
Different teams for development and operations
For larger companies and / or that provide critical solutions, multidisciplinary teams do not eliminate the need to manage the infrastructure and operations processes as a whole, overseeing the use of resources and ensuring that DevOps practices are being well implemented.
In addition, operations activities tend to be repeated. A company with a set of platforms and types of services will need few variations in the preparation of environments and the deployment belt. It is not efficient that development teams are also responsible for operational automations without some kind of collaboration and sharing of solutions. This can result in poor management of infrastructure resources and loss of focus by the development team.
In this scenario, a team specialized in resource management of the platforms and environments used can be thought of, with infrastructure practices such as code and automation, providing tools for development teams to have maximum focus and productivity to develop products without worry about the automation of operational processes.
Allocations according to project demand
When the organizational structure separates the development and operations teams into departments with their own management and priorities, the operations team normally serves several sectors of the company at the same time, making it difficult to allocate some professionals to a specific project.
Some responsibilities, such as managing databases and production environments, are borne by the operations team, without the development teams having the autonomy to decide the most appropriate factors for the project - not least because the infrastructure is often shared between different projects, and a a change in a server made to attend one project can have side effects in others.
The non-use of public or hybrid clouds can aggravate this type of limitation, since the company requires a greater allocation of specialized people to maintain and manage the available solutions, in addition to the internal infrastructure demands.
In cases where the products share infrastructure resources with each other, the processes tend to be more bureaucratic and less speedy, after all, the chances of a product deployment generating side effects on others is greater. It is still possible to apply DevOps practices, as long as the managements are in agreement regarding the development priority.
The prioritization of development activities must be transparent to the operations team. Most software functionality requires operations activities, such as increased resources, server configurations, network releases, etc. The operations team must have access to what is being developed to anticipate the subsequent infrastructure demands. This can be through representatives of the operations team participating in the planning meetings of the development teams and vice versa.
This makes it possible to consider the availability of infrastructure specialists when planning the delivery. The operations team also needs to have the “DevOps culture” to meet these needs as efficiently as possible.
Nubank's experience scaling microservices operations
In this lecture, Renan Capaverde and Gustavo Barrancos tell how the process of evolution of Nubank's organizational structure was to meet the growth of the product, and the DevOps implementation formats that were applied from the beginning of the company to the model used today.
How IT Operations Can Work Better With Agile Teams
In this article, Tirrel Payton talks about the difficulties that operators face to meet the growing demands of the development team when the areas are under separate management, and what kind of actions can be taken to reduce conflicts and increase the efficiency of deliveries.
And if you want to check out the “video version” of this content, click on the link below!