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

Introducing DevOps in a software development project enables faster development and operations.

What is DevOps?

DevOps structure

DevOps is a compound word that combines Development, meaning software development, and Operations, meaning operations. Its purpose is to continuously improve product value by allowing developers and operations teams to work together smoothly on development and operations.

Background of DevOps

DevOps emerged from the problem of conflict between teams in development sites. In many software development organizations, work is divided between a development team that handles system development and an operations team that handles service operations. The development team’s goal is to add new features and release them faster, while the operations team’s goal is stable system operation and stable service delivery. Because their objectives differ, conflict can arise between the two sides. As these conflicts accumulate, they can lead to silos between teams. However, both sides ultimately share the same goal: delivering valuable services to customers more quickly. If the final goal is the same, there is no fundamental need for conflict.

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

Difference from agile development

DevOps and agile development can be confused because both continuously repeat cycles and divide work into small units, but they are separate concepts. DevOps is an organizational theory about collaboration and is a broad concept, while agile development is a specific development methodology. However, the two are highly compatible, and agile development is often adopted as a development method for realizing DevOps.

Agile development is a method that repeats the development process of requirements definition, design, development, testing, and release in small cycles by functional unit. Compared with the traditional waterfall method, which carries out the full development flow in sequence, agile development is more flexible and shortens the time to release. Under a DevOps organization, agile development enables more efficient and flexible development.

Benefits of DevOps

The essence of DevOps is resolving friction between developers and operators so that development and operations can proceed smoothly. To implement DevOps, various tools are introduced at each stage. Representative examples include version control systems that record changes to managed files and CI/CD tools that automate work. Using these tools improves productivity. Higher productivity makes it possible to spend more time on quality improvement and new service development, increasing the value of products and services. Tool-based automation also speeds up work. Faster work accelerates the DevOps lifecycle, making it easier to incorporate customer requirements and feedback quickly and respond to rapidly changing market needs.

DevOps process

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

Plan

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

Code

Developers perform coding and other development work according to the plan. In the design and implementation stages, version control systems and build automation tools are used so previous edit history can be checked quickly. Tools such as GitHub and GitLab, which can run tasks that automate program tests, are also used.

Test

Test the developed artifacts to check for defects such as bugs. Representative tools include JUnit, Selenium, and BlazeMeter.

Deploy

After a development cycle is complete and testing shows no problems, prepare the application so that it works normally in the real environment. Tools used here include Ansible, Puppet, Docker, and Kubernetes.

Operate

After release, operations means maintenance and management to continuously provide the product or service. It includes monitoring servers and application software and responding when trouble occurs.

Monitor

Continue to receive operational data, customer requests, and feedback, and reflect them in development. Monitoring and incident management tools are used for this purpose. Well-known tools include New Relic, Datadog, Grafana, and Wireshark.