What Is DevOps? Basic Concepts, Differences from Agile Development, and Benefits

Introducing DevOps in software development projects enables faster development and operations.

What Is DevOps?

DevOps structure

DevOps is a compound word combining Development, which means software development, and Operations, which means service operation. Its purpose is to continuously improve product value by enabling developers and operations staff to collaborate and carry out development and operations smoothly.

Background of DevOps

DevOps emerged from a common problem in development organizations: conflict between teams. In many software development environments, work is divided between a development team responsible for system development and an operations team responsible for service operation. The development team’s goal is to add new features and release them faster, while the operations team’s goal is to keep systems running reliably and provide stable services. These differences in goals can create opposing positions. As this conflict accumulates, it can deepen the gap between teams and lead to silos. However, both teams ultimately share the same objective: delivering valuable services to customers more quickly. If the final objective is the same, there is no fundamental reason for them to be in conflict.

In today’s rapidly digitalizing world, the value customers expect is also changing constantly. To respond to those changes, organizations need development processes and structures that enable faster software development. This is why DevOps has become important.

Differences from Agile Development

DevOps and agile development are sometimes confused because both involve continuous cycles and small units of work, but they are different concepts. DevOps is an organizational approach focused on collaboration, while agile development is a concrete software development methodology. However, the two are highly compatible, and agile development is often adopted as a development method for implementing DevOps.

Agile development repeats the development process of requirements definition, design, development, testing, and release in small cycles for each functional unit. Compared with waterfall development, which proceeds through a sequence of development phases in order, agile development is more flexible and has a shorter time to release. Under a DevOps organizational model, agile development can make development even more efficient and flexible.

Benefits of DevOps

The essence of DevOps is to resolve friction between developers and operations staff so development and operations can proceed smoothly. Implementing DevOps requires the introduction of various tools at each stage. Typical examples include version control systems that record change history for managed files and CI/CD tools that automate work. Using these tools improves productivity. As productivity improves, more time can be spent improving quality and developing new services, which raises the value of products and services. Automation through these tools also speeds up work. This acceleration increases the speed of the DevOps lifecycle, making it easier to incorporate customer requests and feedback quickly and respond rapidly to changing market needs.

DevOps Process

DevOps development consists of the following six processes. DevOps is performed by continuously cycling through these processes.

Plan

Define the requirements for the entire project and determine the features to implement, task management, progress management, and related activities. Well-known project management tools include JIRA and Azure DevOps.

Code

Perform development work such as programmers writing code according to the plan.

During software design and implementation, version control systems and build automation tools are used so past edit histories can be checked immediately. Tools such as GitHub and GitLab, which include task execution features for automating program tests, are also used.

Test

Test the developed artifacts to check whether they contain defects such as bugs.

Representative tools used here include JUnit, Selenium, and BlazeMeter.

Deploy

After a development phase is complete and testing shows no problems, the application is prepared so it can operate correctly in the actual environment. Tools used here include Ansible, Puppet, Docker, and Kubernetes.

Operate

This is maintenance and management for continuously providing products and services after release.

It includes monitoring servers and application software and responding when trouble occurs.

Monitor

This process continuously receives data obtained from operations, customer requests, and feedback and reflects them in development.

Monitoring and incident management tools are used for this purpose. Well-known examples include New Relic, Datadog, Grafana, and Wireshark.