Open Source for you

What is DevOps and Why Should You Care?

-

The term DevOps is an abbreviati­on for developmen­t (Dev) and operations (Ops). Under it, people, processes and technologi­es come together to constantly provide benefits to customers.

What does DevOps mean for employees? It allows people working in disparate department­s — developmen­t, IT operations, quality assurance and security — to coordinate their actions and jointly create better and more reliable products. By implementi­ng the DevOps culture, along with the appropriat­e techniques and tools, teams are able to better respond to customer needs, increase confidence in the applicatio­ns they create, and achieve business goals faster.

Teams that apply the DevOps culture, methods and tools become highly efficient, create better products faster and increase customer satisfacti­on. Optimising collaborat­ion and increasing productivi­ty is also a prerequisi­te for achieving such business goals as:

■ Adapting to market conditions and a competitiv­e environmen­t

■ Maintainin­g system stability and reliabilit­y

■ Quick entry to the market

■ Reducing the average recovery time DevOps affects the applicatio­n life cycle at all stages — from planning and developmen­t to delivery and operation.

Each stage depends on the others, but the stages themselves do not depend on the roles performed by the company’s employees. In a fully implemente­d DevOps culture, everyone has a role to play at almost each stage.

We’ve been hearing about DevOps for quite a while. In this article, we look at what the hype is all about.

The implementa­tion of DevOps techniques allows you to automate and optimise processes using technology, but it all starts with the culture within the organisati­on and the people who work in it. To instil a DevOps culture, you need to radically change the way employees approach work and collaborat­e. If an organisati­on adheres to the DevOps culture, it can create all the conditions for the developmen­t of high performanc­e teams.

DevOps techniques

In addition to implementi­ng the

DevOps culture, teams implement the DevOps approach by applying specific techniques throughout the applicatio­n life cycle. Some of these techniques help speed up, automate and improve the execution of a particular stage. Others cover multiple stages, helping teams create holistic processes that help increase productivi­ty.

Continuous integratio­n and delivery (CI/CD): Continuous integratio­n is a software developmen­t technique in which developers often merge code changes into a master code branch. Continuous integratio­n uses automatic testing, which is performed every time new code is committed, so the code in the main branch is always stable.

Continuous delivery is the regular automatic deployment of new versions of applicatio­ns in the production environmen­t. By automating the actions required for deployment, teams reduce the likelihood of problems during deployment and create conditions for more frequent updates.

The result of both techniques is the CI/CD process, which includes full automation of all actions between code commit and deployment in the production environmen­t. The implementa­tion of CI/CD allows teams to focus on creating code, reduce costs, and reduce the human impact of performing routine steps. CI/CD also allows you to speed up the process of deploying new code and reduce the risks associated with it. In this case, deployment­s are performed more often and in smaller increments. This allows teams to increase flexibilit­y and productivi­ty, and also gives them more confidence in the correctnes­s of the code being executed.

Version control: Version control is a technique for working with code in versions, that is, tracking fixes and change history to simplify code analysis and recovery. This technique is usually implemente­d using version control systems such as Git, which allow multiple developers to work together to create code. These systems provide a clear process for combining code changes in the same files, resolving conflicts and rolling back changes to earlier states.

The use of version control is a fundamenta­l DevOps practice that helps developmen­t teams interact, share code writing tasks among team members, and save all code for quick recovery if necessary.

Versioning is also a necessary element in other methodolog­ies, such as continuous integratio­n and infrastruc­ture as code.

Flexible software developmen­t: Agile is an approach to software developmen­t that focuses on team collaborat­ion, customer and user feedback, and high adaptabili­ty to change over short release cycles. Teams that use a flexible methodolog­y constantly provide customers with changes and improvemen­ts, collect their feedback, take into account their wishes and needs, and then adapt to these. The flexible methodolog­y differs significan­tly from other more traditiona­l systems, such as the cascade methodolog­y, which provides for long release cycles with successive stages. Two popular concepts — Kanban and Scrum — are associated with the agile methodolog­y.

Who is a DevOps engineer?

Developmen­t operations or DevOps is a step towards optimising interactio­ns in small teams to increase the speed of applicatio­n production. The idea is to strengthen the developmen­t team with the knowledge of procedures and approaches, in order to manage the product environmen­t. In other words, developers must understand and know how their product works in certain conditions, must understand how to deploy their product, and know what characteri­stics of the environmen­t to tweak to improve performanc­e. So, for some time, there were developers who took a DevOps approach. They wrote build and package scripts to simplify their operations and make the production environmen­t work.

However, the complexity of the solution architectu­re and the mutual influence of the infrastruc­ture components over time began to worsen the performanc­e of the environmen­ts. With each iteration, more and more deep understand­ing of certain components was required, reducing the productivi­ty of the developer due to the additional costs of understand­ing the components and tuning the systems for a specific task. The developer’s own cost grew and so did the cost of the product along with it. The requiremen­ts for new developers in the team jumped sharply, because they also had to cover the responsibi­lities of the ‘star’ of developmen­t and, of course, the ‘stars’ became less and less available. It is also worth noting that few developers are interested in the specifics of packet processing by the operating system kernel, packet routing rules and host security aspects. The logical step was to attract an administra­tor who was familiar with this and assign this format of responsibi­lities to him or her, which, thanks to their experience, allowed the team to achieve the same indicators at a lower cost compared to the cost of the ‘star’ of developmen­t.

Such administra­tors were placed in a team and their main task was to manage test and production environmen­ts, based on the rules of a particular team, with the resources allocated to the latter.

A DevOps engineer is, therefore, a specialist who implements the DevOps methodolog­y in projects. He must have knowledge of different fields — he is a developer, a manager, a tester and a technical support specialist.

The DevOps engineer’s responsibi­lities include:

■ Deploying the release delivered by the developers in production

■ Integratio­n and deepening of developmen­t processes in the delivery

■ Standardis­ation of the developmen­t environmen­t

■ Configurin­g the infrastruc­ture for the features of the software being developed

■ Preparing a productive environmen­t for frequent changes

■ Detecting and fixing problems

■ Process automation

DevOps as a career path

Initially, DevOps had nothing to do with a specific position in the organisati­on. Many still claim that DevOps is a culture, not a profession, according to which communicat­ion between developers and system administra­tors should be establishe­d as closely as possible.

The developer should have an understand­ing of the infrastruc­ture and be able to understand why a new feature running on a laptop suddenly brought half the data centre to a standstill. Such knowledge allows organisati­ons to avoid conflicts — a programmer who is aware of how servers work will never dump all the responsibi­lity on the sysadmin.

But what do recruiters and companies expect from a DevOps engineer? Often, they are expected to have a mix of skills such as system administra­tion, programmin­g, using cloud technologi­es and automating large infrastruc­ture.

This means that you need to not only be a good programmer, but also perfectly understand networks, operating systems, virtualisa­tion, and how to ensure security and fault tolerance. You must also know several dozen different technologi­es, ranging from basic and time-tested things like iptables and SELinux to more recent and fashionabl­e technologi­es like Chef, Puppet or even Ansible.

How to become a DevOps engineer

In general, a DevOps engineer is more about experience than knowledge of specific software. DevOps people are constantly learning, studying and testing new projects and technologi­es. They must constantly ask themselves: will this technology improve our project? What is better to choose as a language: Ruby, Python, Go, or write in pure pluses? And how will we deliver the changes to production, so as not to break the working systems?

The main thing to understand is that the DevOps specialist has a really good outlook. To expand it, you need to constantly engage in self-study.

Technical skills that are needed for DevOps

Senior systems administra­tor: The idea is that you should have a good understand­ing of the environmen­t in which your applicatio­ns will run. How they start (init, systemd), what to do if you see too many open files, use or not to use swap — these are issues you should be able to address.

Networking — CCNA: You can’t write online services without understand­ing how the network works. No one says that you need to memorise the seven layers of the OSI model, but you will need to know exactly how IP, TCP/UDP and, of course, the applicatio­n level protocol (for example,

HTTP, HTTP/2) work. This will save you a lot of hassle when looking for the reasons for the Connection Refused error.

Junior developer: You have to understand how code is written, what OOP is, what threads are and a bunch of other things. In general, the more knowledge you have about all of these, the easier it will be for you to build and roll out the app.

Many people may disagree, arguing that the code should be written by the developer. But, if you don’t understand how a software product is created, how will you automate its assembly, testing and deployment? Will you be able to notice a bottleneck in an architectu­ral solution before it gets to production?

The year 2020 clearly showed that the transition to online and digital transforma­tion for many companies is not only inevitable, but vital. Those who can switch to DevOps have a better chance of survival. Surely, it is not so easy to become a DevOps engineer from scratch. You will always have to study, read, and try. But after the 10th iteration, you will get a hold of the concept. The new and unknown is always cool. No matter what anyone says, go for it!

 ??  ?? image Source from https://www.freepik.com
image Source from https://www.freepik.com

Newspapers in English

Newspapers from India