DevOps methodology is a set of tools that can help reduce software development time and speed up the release of updates. For this approach, it’s not enough to involve classic admins and developers. Here we need specialists who can both configure the hardware and cloud and adapt applications for it.
It is impossible to tell about a DevOps engineer in a nutshell: someone says that such a specialist does not exist, and someone is convinced that this is the same system administrator but from a different angle. Not a profession, but a mystery.
Who is a DevOps engineer? What does a DevOps engineer do?
DevOps Engineers implement the DevOps methodology. They synchronize all stages of creating a software product: from writing code to testing and releasing an application. Such a specialist controls the development and administration departments, plus automates the execution of their tasks by implementing various software tools.
The feature of a DevOps engineer is that they combine many professions: admin, developer, tester, and manager.
There are some skills that a good DevOps engineer needs to possess In addition to the obvious knowledge of the DevOps methodology, this person should have experience in administering operation systems, automation tools, virtualization, and storage and networking. They also need to be able to write scripts and code in a couple of languages.
A DevOps engineer as a person with a dedicated role is an administrator whose field of activity is slightly outside of product development. They are engaged in setting up tools and systems that make it possible to deliver the features of the developed products to customers more often and with high quality. DevOps engineers are builders of roads that run trucks loaded with products that other engineers have created. In most cases, a DevOps Engineer is a role that any team member can take on. In large companies, where it is possible to save money by creating a dedicated role, what DevOps does is the design and maintenance of change delivery systems for many teams by standardizing these processes.
Advantages and disadvantages of having DevOps on board
The main advantage of the DevOps engineer profession is the growing interest of companies in the DevOps concept. According to EMA, about 30% of companies have already implemented or plan to implement DevOps engineers shortly. That is, there is demand – a good specialist will not remain without work.
DevOps specialists are attracted by the fact that they have a 100% workload in their work, in contrast to the profession of a system administrator. As the experts themselves say, they like the factor of surprise – it makes the job quite interesting and does not turn it into a routine.
Another plus is a broad specialization. According to DevOps, development is losing out to operations for simple reasons. Operational engineers know a bunch of everything that modern information systems are built on, how they work. And learning, for example, Ruby will not be much different from learning the Ganglia monitoring system.
Some are attracted by the fact that the result of the work can be “touched by hands”. Building complex systems and maintaining them in real life is more fun than pure code that is run in a lab.
The disadvantages of the profession do not seem to differ from those of system administrators. The majority is inclined to agree with the same answer – night surprises.
Tasks and responsibilities of DevOps
The main task of a DevOps engineer is to maximize the predictability, efficiency, and security of software development.
If we consider the full software life cycle, then at the DevOps assessment stage, specialists receive initial information about the need for new coding and changes to the IT infrastructure. At the design stage, the requirements for the infrastructure are determined. At the development and testing stage – they are engaged in product deployment, as well as support for development tools, integration, and load testing of software to check the readiness of the operating environment.
The main part of what does DevOps do falls on the release stage – delivering the product to the customer. The focus is on the performance of all threads of the delivery process. Such a specialist makes sure that known bugs are not passed on to the next stage of work and does not develop local optimization, leading to the creation of global degradation.
The responsibilities of a DevOps engineer include:
- Deployment of the release delivered by the developers in production;
- Integration and deepening of development processes into delivery;
- Standardization of the development environment;
- Setting up the infrastructure for the features of the software being developed;
- Preparing a productive environment for frequent changes;
- Detection and correction of problems;
- Automation of processes.
- Preparation of the product development environment.
- Preparation and connection of development quality analysis tools, including test automation tools.
- Preparing the testing environment.
- Preparing and connecting tools for delivering changes from one environment to another (from the development environment to the testing environment, from the testing environment to the production environment).
- Setting up the relationships and environment between all development and control tools to provide a continuously operating automated line for assembling (creating) a software product – a pipeline.
- Monitoring the health of all development environments and tools (including quality control tools for development or data transfer).
The “magic” of DevOps comes to the rescue when the project has problems with stability, scaling, work under load, or with laying out to production, and also, for example, if the process of releasing a product takes too long.
Who hires DevOps engineers?
DevOps engineers can give benefit to any organization that is involved in developing applications or managing large numbers of servers. DevOps engineers are hired by IT giants like Amazon, Adobe, and Facebook. They also work for Netflix, Walmart, and Etsy.
Only startups don’t hire DevOps engineers. Their job is to release an MVP to test a new idea. In most cases, startups can do without DevOps engineers.
DevOps is required in any medium and large company that deals with development, implementation and administration. The shortage of DevOps engineers is observed where a large number of services are developed within the B2C market: these are mobile operators, banks, Internet providers, etc. Potential employers also include Google, Facebook, Amazon, and other giants.
Types of Ops engineers
The presence of a wide range of responsibilities and the lack of qualified personnel push for a rigid specialization, resulting in the emergence of various Operations engineers:
- TechOps – system administrators, anykeys aka HelpDesk Engineer
- LiveOps – System administrators primarily responsible for production environments
- CloudOps – system administrators specializing in public “clouds” Azure, AWS, GCP, etc.
- PlatOps / InfraOps / SysOps – infrastructure system administrators.
- NetOps – network administrators
- SecOps – system administrators specializing in information security – PCI compliance, CIS compliance, patching, etc.
DevOps is (in theory) a person who firsthand understands all the processes of the development cycle – development, testing, understands the architecture of the product, is able to assess security risks, is familiar with approaches and automation tools, at least at a high level, in addition to this, they also understand pre and post product release support. A person is capable of advocating for both Operations and Development, thus builds a favourable collaboration between these two pillars. They understand the processes of planning work by teams and managing customer expectations.
To perform this kind of work and responsibilities, this person must have tools for managing not only the development and testing processes but also the management of the product infrastructure, as well as resource planning. DevOps engineer in this sense cannot be found in IT, or in R&D, or even in PMO, it must have an impact in all these areas.
Lack of funds and the ability to influence at least one of these three areas of activity will shift the weight of problems towards where these changes are easier to apply, such as the application of technical restrictions on releases due to “dirty” code according to static analyzer systems. That is, when the PMO sets a strict deadline for the release of functionality, R&D cannot deliver a high-quality result within these terms and delivers it as best it can, leaving refactoring for later, IT DevOps blocks the release by technical means. Lack of authority to change the situation, in the case of responsible employees, leads to the manifestation of hyper responsibility for what they cannot influence, especially if these employees understand and see mistakes, and how to fix them – and as a result to burnout and loss of these employees.
The difference between a DevOps engineer and a system administrator
The main difference between a sysadmin and a DevOps engineer, of course, is not in tools and not in knowledge. This is a difference in approach to work. Sysadmins have a definite, unchanging list of tasks that they perform daily. Perhaps another plan for the development or automation of infrastructure. The DevOps engineer, as part of the team, has no such restrictions. The list of tasks can be extremely diversified, for example, writing code, testing an application, doing what will be relevant at that time for the team, for example, developing a new feature, troubleshooting a network problem in a test environment, or setting up a CI / CD process.
The role of a DevOps engineer in a team
The developer writes the code, the tester writes the tests, the system administrator maintains everything, and the DevOps engineer “makes friends” with each result of their work. They make a magic button that the developer clicks on after writing the next piece of code, and then the written code enters the test environment, goes through all the stages of testing and goes into production. The main task of a DevOps engineer is to minimize interaction between development and operations teams.
Tools used by DevOps engineers
Of the basic tools of a DevOps engineer, it worth noting:
- Docker containerization system.
- Orchestrator of Kubernetes containers as a service provided in the cloud – for building and automating universal delivery pipelines and for managing applications.
- A platform for organizing a full-fledged DevOps workflow – GitLab.
- Jenkins – for implementing CI / CD pipelines.
- Ansible – for infrastructure management.
- Platform (PaaS) cloud services: for example, managed databases, Hadoop and Spark in the cloud – to automate infrastructure management tasks and simplify the implementation of common tasks.
You should also pay attention to the periodic table of DevOps tools:
How to become a DevOps engineer, where to move, and what are the prospects?
DevOps is a relatively new direction in IT, so there is no established list of requirements for DevOps engineers. In the vacancies among the requirements for this position, you can find both Debian and CentOS administration skills and the ability to work with disk RAID arrays.
Based on this, we can conclude that, first of all, a DevOps engineer must have a good technical outlook. It is important for such a person to constantly learn new tools and technologies.
It’s easier to become a DevOps engineer for a sysadmin or developer. They already have some skills that just need to be expanded. The main challenge is to pull up a minimal set of DevOps knowledge, understand how to work with automation tools, and fill gaps in administration, programming, and virtualization skills.
To understand where there is still a lack of knowledge, you can use a mind map. You can also subscribe to the DevOps Weekly newsletter.
Necessary qualities:
- Analytical mind;
- Stress tolerance;
- The ability not to give up even in desperate situations.
Possible career paths as a DevOps engineer:
- Grow as a DevOps specialist, dive into specialization and master related technologies;
- To retrain as a developer if you started as a system administrator;
- To retrain as a system administrator if you started as a developer (if you are interested in working more with the infrastructure than with the development);
- To retrain as IT security engineers;
- Also, there are open paths to system architects, testers (including automation), project managers.
Additional skills and understanding of the whole process will make you a demanded employee. This speciality appeared on the IT market relatively recently and almost immediately became one of the most popular and demanded ones. But it is worth noting that many employers when posting such a vacancy, confuse a DevOps specialist with representatives of other professions or are simply looking for 2 in 1. As a result, demand now exceeds supply.
Conclusion
The profession of DevOps engineer, roughly speaking, combines several and helps to build a workflow as efficiently as possible. However, if you plan to hire such a specialist, you should clearly understand the stack of duties. This is not a magical person who will solve all the problems.
If you doubt whether you really need such a specialist, but are ready to check it out, then you can safely contact the Bamboo Agile team, where, apart from many other opportunities, you can hire a DevOps specialist. You can check our DevOps services or just fill out the form at https://bambooagile.eu/contact-us for a free consultation.