Home Computing What is DevOps? Illustrated explanation of differences from tools / culture / agile and skills required for engineers

What is DevOps? Illustrated explanation of differences from tools / culture / agile and skills required for engineers

by Yasir Aslam
0 comment

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?
  • 2. DevOps purpose, organizational culture, and way of thinking
  • 3. Typical tools to help DevOps
  • 4. Differences between DevOps and agile development and continuous delivery
  • 5. Specific DevOps Initiatives
  • 6. How to become a DevOps engineer? Learning roadmap
  • 7. What are the minimum skills DevOps engineers should acquire?
  • 8. What qualifications should DevOps engineers get?
  • 9. Summary

1. What is DevOps?

DevOps is a concept that shows various efforts to increase the value of the business by developing and operating a system in cooperation with the development team (Development) and the operations team (Operations).

2. DevOps purpose, organizational culture, and way of thinking

What was DevOps born for? Let’s take a look at the purpose, organizational culture, and way of thinking.

2.1 Purpose of DevOps

The purpose of DevOps is “to work together with developers and operators to provide users with products and services quickly and continuously.”

Behind the birth of DevOps are the shortening of software development time and the increase in changes due to the development of the IT industry. In a situation where many changes had to be dealt with in a short period, the development side wanted to proceed with development one after another to develop new services and the operation side wanted to maintain stable service operations tended to conflict.

Therefore, to solve the problems on the development side and the operation side, there is a movement to increase the value of the business by implementing various efforts to realize DevOps based on the idea of ​​DevOps.

2.2 DevOps concept

DevOps is based on the following idea advocated by engineers of the photo-sharing service “Flickr”.

[Concept of DevOps]

â—† Respect

Respect each other. Treating with compassion leads to smooth communication

â—† Trust

Trust all members involved in the system

â—† Healthy attitude about failure

Take a healthy attitude without blaming the other person for failure

â—† Avoiding Blame

Don’t blame the other person. Don’t blame it because mistakes can happen

realize DevOps, it is important for all team members to fully understand this idea, and for every one of them to be aware of it and act toward their goals.

3. Typical tools to help DevOps

Here are some typical tools to help you with DevOps. Each tool has various characteristics, so it is a good idea to consider the tools to be used depending on the software to be developed and the combination of multiple tools.

Tool type Specific
tools
explanation
Virtualization tool ・Docker It virtualizes the application execution environment and automatically configures the execution environment. A lightweight, disposable development environment is ready, so you can always remake and rebuild your server.
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.
CI / CD tool ・Jenkins
・CircleCI
Automatically run source code builds and tests
Monitor tool ・Zabbix
・Nagios
Automatically monitors servers and applications
Communication tool ・Slack Use chat tools to communicate in an open environment to ensure smooth communication between the development and operations teams.
Test automation tool ・Selenium Automation of unit tests, integration tests, application tests, etc. enables improvement of test quality and effective use of human and system resources, leading to improvement of software quality.
Source code/version control tool ・GitHub
・git
Source code and version control are indispensable as the convenience of software increases and the response to frequent changes and additional functions increases and become more complicated.

4. Differences between DevOps and agile development and continuous delivery

While DevOps is a collaborative effort between development and operations teams, agile development and continuous delivery are concrete development methods.

â—† Agile development

Development method that advances development by repeating implementation and testing in small units

â—† Continuous delivery

A development method that automatically prepares for release to the production environment when a code change occurs

DevOps was born out of an agile movement and is now part of DevOps.

Currently, DevOps is not only agile, but also secures expandability, operability, and maintainability by advancing the introduction of the cloud and lightweight architecture.

The main aim of DevOps is to realize continuous deployment * 1 and continuous delivery so that the business side can decide the release timing for the production environment.

* 1 Continuous deployment: All changes are automatically deployed (deployed) to the production environment.

5. 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 flows 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 explain the tools that are often used to realize DevOps.

5.1 DevOps process

The DevOps process has six major stages.

â—† Plan (PLAN)

Determine the requirements for the application to be developed, and the execution plan of each process such as infrastructure and monitoring.

â—† Build (BUILD)

It is a process to create an executable file and a distribution package based on the developed source code. Often, the sequence of steps involved in this build is automated.

â—† Continuous integration (CONTINUOUS INTEGRATION)

Continuous integration is “committing daily developed source code etc. to a configuration management file and automatically executing builds and tests”. Also known as “CI”.
Frequent builds and tests help you find bugs early, improve software quality, and reduce software release times.

â—† Deploy (DEPLOY)

To put it simply, deploying means “making it ready for use” so that the files made possible by the build can be moved.
Perform continuous integration and automatically deploy the built application to production if there are no problems.

â—† OPERATE

Monitor performance such as application access count and response time, server status, and more. It is a process also called “monitor”.

[Main items to monitor]

• Server CPU usage, memory usage, number of processes, number of errors

• Application process confirmation, access count, response time

â—† Continuous feedback (CONTINUOUS FEEDBACK)

Get continuous feedback from your users, such as by configuring a service desk that you can customize for your users.
With continuous feedback, you can quickly understand system demands and changes and reflect them in your development process.

5.2 The role of engineers in achieving DevOps

To realize DevOps, engineers need to facilitate the development and operation cycle. For that purpose, it is necessary to establish a mechanism (continuous delivery environment) that allows continuous build, deployment, testing, etc. in a short span.

6. How to become a DevOps engineer? Learning roadmap

6.1 Learn a programming language

DevOps engineers need programming skills for automation. It is advisable to learn one or more of the following languages.

• Python:
A simple and easy-to-use scripting language

• Ruby:
A scripting language characterized by high flexibility

• Node.js:
JavaScript execution environment. Realize server development and application development using JavaScript

• Go:
A compiled language suitable for developing complex systems

• Rust:
A compiled language that consumes less memory and achieves high performance.

• C:
General-purpose programming language

• C ++:
A late language of C

6.2 Understand different OS concepts

Knowledge of infrastructure construction is also essential for DevOps engineers. It is necessary to acquire the following knowledge of server management so that you can judge the parts around the OS by yourself without depending on the system administrator.

• Process management

• Thread concurrency

• Socket

• I / O management

• Virtualization

• Memory storage and file system

Having knowledge of infrastructure construction for DevOps engineers will help you achieve your DevOps goal of quickly providing high-quality services to your end users.

6.3 Learn about server management

Linux OS is often used for system construction with DevOps. If you’ve never worked with Linux, it’s a good idea to work with multiple Linux distributions to learn server management techniques.
It is also necessary to acquire knowledge of commands in the terminal. Let’s know the typical command.

• su: Used when impersonating another user

• ps: Check process status

• netstat: Check the network connection status

6.4 Learn about networks and security

It is necessary to acquire basic network and security knowledge such as the following.

• HTTPS
• FTP
• SSL
• TLS

In recent years, information security has been attracting attention. Poor security can lead to serious accidents such as customer information leaks, so it is necessary to incorporate highly secure software into the system from the early stages of the DevOps process.
DevOps engineers need to be security-conscious while maintaining a high degree of flexibility and speed.

6.5 Learn how to understand and set up proxies and load balancers

To learn about automating the development process, you need to understand what is set up and what features your server has.
Therefore, the following knowledge is required.

• Proxy
• Load balancer
• Middleware

6.6 Learn to code infrastructure

Coding infrastructure construction is very important in DevOps. By coding, the process can be automated, and accuracy and speed can be improved.

A typical coding tool is “Chef,” which is an infrastructure provisioning tool (a tool that automatically manages infrastructure configuration). By using this tool, it is possible to manage the infrastructure configuration without the need to prepare a procedure manual in Japanese or manually work.

[Frequently used tools]

• Ansible
• Salt
• Puppet
• Docker

6.7 Learn CI / CD tools

By learning CI / CD tools, you can achieve one of the goals of DevOps, improving release speed.

• Continuous Integration (CI): Automates build-to-test environment deployment

• Continuous Delivery (CD): Extends continuous integration and automates build-to-test execution

A typical tool is “Jenkins”. Jenkins works regardless of the OS type as long as Java is running. The feature is that there are many users and it is easy to obtain information in Japanese.

6.8 Learn to monitor software and infrastructure

DevOps engineers are required to have monitoring knowledge and operational experience.

DevOps engineers need to determine what to monitor, prioritize improvements, and which monitoring tools to use as they prepare to monitor their software and infrastructure.

For example, Selenium will automatically run the test and monitor it with a monitoring tool such as Nagios or data dog. Each tool is unique, so it’s important to be knowledgeable so that you can consider which monitoring tool to use.

6.9 Learn about cloud providers

DevOps engineers need to know to decide which cloud provider to choose.

[Representative cloud provider]

• AWS
• Microsoft
Azure • GCP

As of 2022, the mainstream system operation is not in the on-premises environment but the cloud environment. According to IDC’s market forecast, the compound annual growth rate (CAGR) of domestic public cloud services will remain at 18.7% between 2019 and 2024. The market size in 2024 is projected to increase 2.4 times from 2019 to 2,064.4 billion yen.

DevOps engineers are likely to deal with cloud providers in the future, so let’s learn the characteristics and handling of each cloud provider.

7. What are the minimum skills DevOps engineers should acquire?

What are the minimum skills required as a DevOps engineer? Skills of particular importance are described in this section.

7.1 Knowledge and experience with automation tools

Knowledge and experience with automation tools are one of the minimum skills you should acquire.
DevOps tends to be a lot of work, and manual mistakes are unavoidable. Automation tools are essential for accuracy.

For example, you can work efficiently by using automation tools as shown below.

• Automate on CI server when pull request comes to GitHub

• Automatically notify Slack of any inquiries

7.2 Infrastructure configuration management

DevOps engineers are required to know about infrastructure configuration management and skills to master the tools.
If you manage the version of the infrastructur

e configuration information, you will be able to visualize the contents of the infrastructure and realize efficient system operation.

7.3 Communication

So far, we’ve focused on the technical side, but the essence of DevOps is cultural interlocking. One of the major roles that DevOps engineers should play is to facilitate communication in siled organizations by appropriately utilizing tools. DevOps engineers are also required to have soft skills.

8. What qualifications should DevOps engineers get?

 

What qualifications will prove your skills as a DevOps engineer? Learn about the qualifications DevOps engineers should get.

8.1 AWS Certified DevOps Engineer-Professional

A typical example is “AWS Certified DevOps Engineer-Professional” targeting DevOps engineers who have experience in operating and managing systems in AWS environments.

The outline of the test is as follows.

format Selection formula
Exam fee 30,000 yen
test time 180 minutes
How to take the exam Take the test at the test center or online

Reference: AWS official website

It is a qualification that is relatively easy to work on if you have work experience related to DevOps, but the difficulty level is high because the examination range is wide and the volume is large. It’s a good idea to take an AWS training course to supplement your knowledge as exam preparation.

9. 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.

For both sides to work efficiently beyond the boundaries of the development team and the operations team, everyone in the entire organization clearly understands the purpose of “What is DevOps for?” Toward the same goal. It is important to keep it.
With that attitude in mind, 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.

You may also like

Leave a Comment