Just a heads up: On March 24, 2025, starting at 4:30pm CDT / 19:30 UTC, the site will be undergoing scheduled maintenance for a few hours. During this time, the site might be unavailable for a short while. Thanks for your patience.
×DevOps can be explained as a set of practices and tools in the landscape of software development and IT. It is a complex concept for those who are just beginning to learn about it. This article provides a breakdown of the concept in the context of different individuals and their level of understanding.
Consider the following scenario:
Three friends sit down to play with Legos. The first friend builds a Lego car and gives it to the second friend to play with. Later, the second friend accidentally breaks the car. The third friend tries to fix the car but it is difficult because the third friend does not know how all of the pieces were used.
If the friends were a software development team, the first friend is the developer of the car, the second is the tester of the car, and the third friend is in charge of car maintenance. If the friends were using DevOps, the first and third friend worked together to build the car. When the second friend broke the car, the first and third friend can easily fix the car because they both know how all of the pieces fit together.
DevOps is a way of organizing software development teams. Team members of a DevOps team are responsible for all aspects of the software development process. They analyze, design, implement, deploy, monitor, and respond to incidents related to their software. DevOps makes teams more efficient by reducing communication barriers. Since teams are responsible for monitoring and responding to incidents, they are immediately aware of problems with their software. Because they wrote the software, they can quickly root cause problems and implement fixes.
An example is video game developers who release a video game to customers and later release a patch that fixes bugs and game imbalances. During development, monitoring is added as a core component rather than an afterthought. As the game is being played, developers collect data about the game to better understand how players are playing it and where there are problems. Those same developers will implement changes to the game based on this information.
DevOps is a way of organizing software development teams. The word DevOps is a portmanteau of development and operations. Development is a set of practices including analysis, design, implementation, and deployment. Operations is a set of practices that include deployment, monitoring, and incident response.
Historically, the software development lifecycle featured separate teams performing these two streams of work. Operations teams ensured system stability while development teams implemented new features. The problem with this model is that development and operations teams are siloed from one another, often with cumbersome communication models put in place to facilitate collaboration. It encourages development teams to throw software over the wall and forget about it.
DevOps breaks down this wall by merging teams and distributing the practices of development and operations across a single team. DevOps teams are responsible for the full lifecycle of a piece of software. They analyze, design, implement, deploy, monitor, and respond to incidents. The people that built the software monitor and respond to incidents. Collaboration is natural because a single team is responsible for the work. Nothing is someone else's job.
People make mistakes when they do complicated tasks repeatedly. Even if an error is made once every 1000 times a task is done, that error can be very consequential. DevOps teams make changes that impact many users and a mistake can have far reaching consequences. Whenever AWS makes a mistake and breaks a service, many sites across the internet can face outages. A core tenet of DevOps is to make use of tooling and automation to complete tasks efficiently and with a low error rate.
There are numerous tools that help DevOps teams effectively develop, deploy, and run software. Automated testing reduces the likelihood that an error is present in updated software. Security scanning alerts teams to security vulnerabilities in their code. CI/CD pipelines reduce the likelihood of bad deployments. Monitoring and metric collection give DevOps teams an understanding of how their software performs across multiple environments. Feature flagging enables teams to toggle software features on and off.
DevOps is a way of organizing software development teams. It provides a number of benefits for teams, but there are downsides as well. DevOps teams are responsible for a larger scope of work than pure development teams. For example, DevOps teams build and maintain infrastructure as code. They implement CI/CD pipelines to deploy to potentially multiple regions. They add monitoring and alarming for components in all supported regions and respond to problems when needed. These additional responsibilities take away time for feature implementation. DevOps teams can see a reduction in feature velocity as developers spend cycles performing these additional tasks.
Increasing headcount by hiring additional developers to bolster a DevOps team’s capacity is a common response. This can be effective until the team gets so big it becomes hard to manage. When implementing DevOps, care must be taken with regards to feature velocity and team management overhead. The components a DevOps team owns can be split. A single DevOps team becomes two DevOps teams, each owning a subset of the original team's portfolio. The teams are still responsible for the full range of DevOps duties but the number of software components a given team owns is reduced.
Managing and coordinating multiple DevOps teams is another potential difficulty when implementing DevOps.
DevOps can be complicated, and hard to understand when just starting out. This article explains ideas that underpin DevOps with a variety of examples. Teams can start to realize the benefits of DevOps by adopting it piece at a time. For guidance on how to get started with DevOps take a look at this article: How to do DevOps.
Warren Marusiak
18 comments