DevOps is an approach to working that emphasizes the quick, incremental, and continuous delivery of products.
The term DevOps combines the words "development" and "operations." In practice, it's a union between the development teams and operations teams. DevOps is a software development methodology that is often thought of as a process, a culture, or a set of principles that enables organizations to deliver products quickly and continuously.
DevOps was created in response to issues that came from longstanding workplace traditions of having siloed teams—or completely separate teams for development, testing, and operations in relation to any single product. This siloed structure isn't always conducive to efficiency, as each team has its own sets of priorities, tasks, and timelines that don't necessarily align with the surrounding teams. The key purpose of DevOps is to create a more cohesive development cycle. Additional benefits of a DevOps culture include improved team efficiency, increased release speed, and better feedback mechanisms.
In a company with a traditional process, software developers would write the product code, then hand it off to a testing team to test the product's functionality, and would then hand it off to an operations team to maintain the software long-term. This siloed structure isn't always conducive to efficiency, as each team has its own sets of priorities, tasks, and timelines that don't necessarily align with the surrounding teams.
With a DevOps approach, those multiple teams are integrated into a single team. Testing might occur automatically and frequently throughout the process alongside product development, and all groups can be involved in long-term maintenance.
The DevOps lifecycle is more integrative than a siloed software delivery process. Deploying products and updates happens continuously. The DevOps pipeline is less of a rigid, linear process. Because they work as a unit, each team member should be comfortable with each stage of the lifecycle, from initial ideation to assessing software quality and understanding user experience.
Throughout the development process, DevOps teams, including software developers, quality assurance (QA) analysts, and product managers, work as a unit through planning, developing, delivering, and monitoring stages. Here is an overview of the DevOps workflow:
In the planning stage, the team figures out the problems they are aiming to solve and how they might go about solving them.
Next, they'll develop their product, using a testing or production environment—either a simulated environment or sampling of real-world users to try the updates before they're widely deployed—to build the best possible product.
Then, they'll deliver the product to their wider audience.
Finally, continuous monitoring ensures stability in performance. Feedback is incorporated into later iterations and product updates—which moves products back to the planning stage.
Agile is an approach to project management and software development that centers around incremental and iterative steps to completing projects. Agile development centers around short-term projects that can encourage rapid delivery. The incorporation of Agile teams is said to be a precursor to organizations adopting DevOps practices. Learn more about Agile and when to use it.
There are a few core principles at work in a DevOps initiative. Largely broken down, they include:
Systems thinking: Systems thinking means thinking about the performance of an entire system, instead of the performance of specific teams. This mindset ensures all teams and employees feel responsible for producing good quality and discourages teams from passing defects downstream.
Culture: A successful DevOps culture is often tied to a spirit of improved collaboration, experimentation, and continuous learning. This might mean teams make sure time is allocated to improve work, teams are rewarded for taking risks, and members are able to learn from others within and without their teams.
Automation: DevOps places a heavy emphasis on automating as much as possible. This can reduce time spent on repetitive and time-consuming tasks, and increase deployment speed. A DevOps team might, for example, automate testing processes so that developers can receive feedback early and frequently.
Configuration management: Configuration management is a systems engineering process. It focuses on establishing a product's consistency and maintaining that level of efficiency throughout the product lifecycle
A couple of key practices make DevOps what it is. These include:
Continuous testing: Continuous testing is a process that aims to increase software development efficiency by testing and incorporating automated feedback throughout the software development lifecycle (SDLC). Deploying all code changes to a testing environment after the build stage helps track bugs before they cause larger issues.
Continuous integration (CI): Continuous integration means feedback from stakeholders and fixes are integrated into a product continually. This can mean both automating processes in which fixes are integrated, and creating a culture in which continuous integration happens.
Continuous delivery (CD): Continuous delivery is when changes to a product (likely code) are integrated automatically. This method of rapid delivery ensures that the product is always in a deployable state. This means that code can be deployed in short time frames (daily, weekly, and so on).
Together, continuous integration and continuous delivery are often referred to as CI/CD. Taking these practices one step further, continuous deployment adds a routine of real-time monitoring, testing, and updating products after they launch.
Within a DevOps environment, it's common for organizations to release smaller, more frequent product updates that are more reactive to customer feedback, rather than the large-scale, labor-intensive updates siloed teams may deploy.
Learn more about CI/CD with the University of Virginia's Continuous Delivery & DevOps course.
While DevOps is considered a mindset first, there are several automation tools that can help increase the efficiency of DevOps processes:
Git: Git is a version control system. In DevOps, it’s used to keep track of code and is useful for team members to collaborate on projects and update existing ones.
Docker: Docker is used for containerizing applications—the process of turning an application into a single package of software.
Jenkins: Jenkins is a tool used to build CI/CD pipelines, where developers can build, test, and deploy software.
Kubernetes: A container organizer, Kubernetes is used frequently in DevOps.
Read more: 11 DevOps Tools for 2022
Get more comfortable using DevOps tools like Atlassian's Version Control with Git. Or, test your skills with an Azure DevOps Guided Project, all available on Coursera.
Learning DevOps methodologies and skills can be useful to many career paths. You might be a product manager looking for ways to improve your team’s process, or an IT professional looking for a new way to use your skills. Whatever your goals, you can start today by earning IBM's DevOps and Software Engineering Professional Certificate.
Editorial Team
Coursera’s editorial team is comprised of highly experienced professional editors, writers, and fact...
This content has been made available for informational purposes only. Learners are advised to conduct additional research to ensure that courses and other credentials pursued meet their personal, professional, and financial goals.