Looking to build or improve your DevOps Team? We will explain the roles and responsibilities of a DevOps Team within your organization, and how to start building one.
What does a DevOps Team do?
A DevOps team is made of professionals from development and operations that work closely together. These cross-functional teams are responsible for orchestrating the entire software development process.
Types of DevOps team
When implementing DevOps, the people doing the work can be structured in several different ways. A smaller organization with fewer engineers may not be able to dedicate people purely to DevOps functions. Instead, they can start with developers and operators handling DevOps functions. On the other hand, a big organization can dedicate an entire team solely to orchestrating the DevOps lifecycle.
Either way, there are two major ways to position these functions and roles to achieve DevOps benefits:
Distributed DevOps teams - one model has DevOps specialists integrating into the teams of each major product. Their role is to ensure that the project moves smoothly through the lifecycle, ensuring that the code reaches the correct standards of each stage, that the right teams are collaborating and communicating throughout, and that the project is compatible with infrastructure such as deployment containers.
Centralized DevOps teams - this model has one centralized DevOps team working with all of the project teams. Their main goal is to keep the development and operations teams for each project in communication. This helps code get released quickly with more reliable operations support. The centralized DevOps team achieves this by developing policies and procedures, such as infrastructure for integration or scheduling cross-team meetings.
Each model has pros and cons. The centralized model can efficiently make policies that apply to multiple projects, while the distributed model can tailor-make solutions for each project to advance them in the best possible way. You can use a hybrid of both models, having some infrastructure built and shared centrally, and dedicated DevOps support for big projects.
Roles within DevOps teams
In order to achieve the benefits of DevOps, DevOps teams have various responsibilities and goals. Depending on your team model and how much time is spent on each task, these responsibilities might be someone’s sole focus or just one part of their job.
Facilitating communication - a major emphasis of DevOps is breaking down silos between teams. Instead of developers “throwing code over the wall” to operations to handle, the two teams communicate to ensure code is supportable. One DevOps role is to facilitate this communication. This involves setting up meetings throughout the project and ensuring that teams are on the same page.
Setting policies - as code moves through each stage of the DevOps lifecycle, it needs to meet certain standards. For example, when it goes from testing to deployment, it needs to pass all the required tests. But who decides which tests are required, and what constitutes a pass? This DevOps role works with developers and operators to build standardized policy for each stage.
Managing work pace - the entire scope of a project could involve many people and teams. Coordinating a schedule across all these steps can be challenging. You need to avoid situations where teams are idle, waiting for other people to finish. DevOps can integrate with practices like Agile to structure the flow and pace of work and ensure that everyone is moving in sync. This DevOps role can manage such practices, keeping work flowing smoothly.
Beyond these specific roles, DevOps teams can work with the code of the project itself. Their goal is to keep the code manageable for operations teams while still fulfilling the development needs of the project.
There isn’t usually a hierarchy of these functions in DevOps. However, there might be a general manager of the team. This manager wouldn’t be solely responsible for making the decisions for the team, instead, they’d ensure that everyone has an opportunity to contribute.
DevOps teams vs SRE teams
DevOps teams have a lot in common with SRE teams. This makes sense, as DevOps and SRE are practices with similar goals and overlapping practices.
SRE teams and DevOps teams are similar in many ways, including:
- Having both distributed and centralized models
- Having models with generalists or specialists
- Building infrastructure and practices to share learning throughout the lifecycle
- Involving themselves with the project from design to operations
- Potentially working directly with code to help it meet the policies and standards
But they also differ in some ways, including:
- SRE teams are more focused on building specific tools and practices, like automation or runbooks, than DevOps
- SRE teams involve themselves more in helping build practices for incident response for code in production than DevOps
- SRE teams are focused on the reliability of projects, whereas DevOps is focused more on the smoothness and frequency of releasing projects
A DevOps team might do some SRE functions, and a SRE team might do some DevOps functions. The two methodologies are compatible – SRE can be implemented as a way to achieve your DevOps goals. DevOps provides a great foundation to build SRE.
Building a DevOps team
Putting together a DevOps team could involve reassigning or hiring people. The benefit to reassigning people to a DevOps role is that they’ll already be familiar with your particular codebase, toolstack, and development process. The benefit to hiring outside people is that they may specialize in some DevOps specific skills. Either way, you’ll want people with the necessary skills, including:
- Strong communication skills – able to resolve conflicts between teams with different priorities and keep everyone focused on the same goal
- Working knowledge of code – your team might not directly write code, but they should understand it well enough to tell whether it meets their specifications
- Big picture thinking – DevOps people need to take a wide-reaching view of the project as a whole. They can’t get hung up on just one element or stage.
- Expertise in tooling and infrastructure – your team should recognize opportunities where investing tooling and infrastructure would pay off with faster and more reliable development and operations.
A skillset like this can be acquired from many different backgrounds. The focus shouldn’t be on specific knowledge, but the ability to understand new systems and see opportunities to improve them.
Supporting a DevOps team
DevOps teams can use tooling to help with critical responsibilities. Blameless is a great example. With our SLOs and retrospectives, we can create a universal language of reliability between teams. This helps teams align on what matters, allowing teams to more effectively make decisions and changes. To see it in action, check out a demo!