In recent years, when agile-like development methods have become widespread, the term “DevOps” has become well known.
There is no strict definition for the word DevOps, so people may think differently and have a vague image.
In this article, we will explain in an easy-to-understand manner the concept of DevOps and specific approaches.
table of contents
1. What is DevOps?
1.1 Purpose of DevOps
2. DevOps concept
3. Specific DevOps Initiatives
3.1 DevOps process
3.1.1 Plan (PLAN)
3.1.2 Build (BUILD)
3.1.3 Continuous Integration (CONTINUOUS INTEGRATION)
3.1.4 Deploy (DEPLOY)
3.1.5 OPERATE (Operation)
3.1.6 Continuous Feedback (CONTINUOUS FEEDBACK)
3.2 Tools used to achieve DevOps
3.2.1 Virtualization Tool
3.2.2 Configuration Management Tool
3.2.3 CI / CD Tool
3.2.4 Monitoring Tool
3.2.5 Communication Tool
3.2.6 Test Automation Tool
3.2.7 Source Code / Version Control Tool
4. Summary
1. What is DevOps?
Although the word DevOps has no clear definition, it is widely known with the following implications.
DevOps is a concept that shows various efforts to increase the value of business by developing and operating a system in cooperation with a development team ( Dev elopment) and an operation team ( Operation s ) . So what was the idea behind DevOps in the first place?
1.1 Purpose of DevOps
The purpose of DevOps depends on the environment, but
“Developers and operators work together to provide users with products and services quickly and continuously. ,” depending on the environment .
In the first place, the background to the birth of DevOps is that with the development of the IT industry, the software development period has been shortened, and the need for flexible response to various changes has increased. As a result, the development side
who wants to proceed with development one after another and develop new services, and the operation side who wants to maintain stable service operation. tend to conflict, and various problems are likely to occur.
Therefore, based on the idea of ​​DevOps, there is a movement to increase the value of the business by solving the problems on the development side and the operation side and implementing various efforts to realize DevOps.
The concept of DevOps and specific initiatives are described in the next section.
2. DevOps concept
DevOps is based on the following idea advocated by engineers of the photo sharing service “Flickr”.
[DevOps concept]
â—† Respect Respect
each other . Treating with compassion leads to smooth communication
◆ Trust all members
involved in the Trust system Trust system
◆ Healthy attitude about failure Take a healthy attitude without blaming the
other person for failure person for failure
â—† Avoiding Blame
Do not blame the other person . Don’t blame it because mistakes can happen
In order to realize DevOps, it is important for all team members to fully understand this idea, and for each and every one of them to be aware of it and act toward their goals.
3. Specific DevOps Initiatives
The figure is an example of the process flow that realizes DevOps.
As a concrete initiative, we will release the product in a short cycle, take in feedback from the user while the service is running, automate the series of flow from development plan to implementation, test, deployment, and speedily Make additional features and improvements.
It is possible to proceed efficiently by using various tools suitable for executing each process.
In the next section, we will give a brief explanation of the contents of each process and the tools that are often used to realize DevOps.
3.1 DevOps process
3.1.1 Plan (PLAN)
Determine the requirements for the application to be developed, the execution plan of each process such as infrastructure and monitoring.
3.1.2 Build (BUILD)
It is a process of creating an executable file and a distribution package based on the developed source code.
Often, the series of steps involved in this build is automated.
3.1.3 CONTINUOUS INTEGRATION
Continuous integration is “committing daily developed source code etc. to a configuration management file and automatically executing builds and tests “.
Frequent builds and tests can help you detect bugs early, improve software quality, and reduce software release times.
Continuous integration stands for CONTINUOUS INTEGRATION “CI” .
There is also a technique called CONTINUOUS DELIVERY that automates the entire release process, not just build and test .
3.1.4 Deploy (DEPLOY)
Deploying simply means “making it ready for use” , which makes the files that are made executable by the build workable.
Perform continuous integration and automatically deploy the built application to production if there are no problems.
3.1.5 OPERATE
Here, it is a process also called a “monitor” that monitors the performance of the server and application access, response time, and so on.
Decide what to monitor while considering not to increase the load due to the accumulation of monitoring data.
At the beginning of the introduction, narrow down the items to the minimum necessary.
[Main items to be monitored]
â—† Server CPU usage rate, memory usage rate, number of processes, number of errors
â—† Confirmation of application processes, number of accesses, response time
3.1.6 CONTINUOUS FEEDBACK
Ensure that you continue to receive user feedback, such as by configuring a service desk that you can customize for your users.
This allows you to quickly understand system requests and changes and reflect them in the development process.
3.2 Tools used to achieve DevOps
Many tools are used to effectively implement DevOps.
Each tool has various characteristics, and it is necessary to consider and determine the tool to be used depending on the software to be developed and the combination of multiple tools.
3.2.1 Virtualization tools
◆ Docker
It virtualizes the application execution environment and automatically configures the execution environment.
A lightweight and disposable development environment can be prepared, so you can recreate and rebuild the server at any time.
In addition, since the same thing as the production environment can be reproduced in the development environment, it is possible to test and check the operation in the development environment and reflect it in the production environment as it is.
3.2.2 Configuration management tool
◆ Ansible
◆ Chef
Manages and controls the configuration around the server and infrastructure.
By automating operations such as construction, testing, and operation, efficiency can be improved and work time can be shortened.
3.2.3 CI / CD tools
◆ Jenkins
◆ CircleCI
Automatically run source code builds and tests.
3.2.4 Monitor Tool
◆ Zabbix
◆ Nagios
It automatically monitors servers and applications.
3.2.5 Communication tools
◆ Slack
In order to ensure smooth communication between the development team and the operations team, we use chat tools to communicate in an open situation.
3.2.6 Test automation tool
◆ Selenium
Automation of unit tests, integration tests, application tests, etc. enables improvement of test quality and effective utilization of human and system resources, leading to improvement of software quality.
3.2.7 Source code / version control tools
◆ GitHub
◆ git
Source code and version control are indispensable as the convenience of software increases and the number of frequent changes and additional functions becomes more complicated.
4. Summary
If DevOps can be realized well, it can be developed and operated efficiently, and it has the advantage of being able to provide better services to users quickly.
In order for both sides to work efficiently beyond the boundaries of the development team and the operations team, everyone in the entire organization should clearly understand the purpose of “What is DevOps for?” Toward the same goal. It is important to keep it.
With that attitude in mind, in order to bring DevOps to a level that can be incorporated into actual development and operation, it is good to first gradually understand the mechanism of DevOps and acquire knowledge of the tools to be introduced. Probably.