DevOps is an acronym for Development Operations, and it’s not really a professional name. It is a culture, a technique, if you like. The DevOps movement emerged in 2008 and was designed to solve accumulated problems. A lot of companies saw the problem in interactions between development and exploitation teams.
Developers believed that if the code was run locally, there was no problem – you can run it in production. If there were still problems, the exploitation team said: “Yes, these are problems with the code, let the developers sort it out! Because of this approach, product releases were constantly delayed and often the quality of the final product suffered. The fact that a lot of changes were rolled out in one release and it was very difficult to understand what caused the problems in the production.
DevOps was designed to solve these problems. It was to become a link between the development team and the exploitation team. Conditionally, in devops culture, there are several roles that relate very well to the professions:
- Build Engineer is the person in charge of code building. Dependencies pulling up, conflict analysis in the code – this is all about it.
- Release Engineer – is responsible for code delivery from development to production. Which branch will go into testing, which build will go into production, the release engineer is doing just that.
- Automation Engineer is an automation engineer. It automates everything that moves. And what does not move, moves and also automates. Automatic assembly when pushing into a git, test run, deploy on staging, deploy in production – that’s all his tasks. A key role in DevOps approach.
In general, several other roles can be distinguished. For example, Security Engineer, which will be responsible for running security- tests and studying vulnerabilities in used components. In the real world, all (or almost all) these roles are usually combined by some other person separately. For example, the role of build engineer can be given to the developer. And the automation of server configuration is usually given to system administrators. And DevOps engineer has to work through and automate the process of building and delivering code from the developer to production.
Minimum knowledge required by DevOps engineer
Strictly speaking, there are no special requirements for DevOps for the student, but of course entering the profession will be much easier if you have the following skills.
Senior System Administrator
Or at least middle. The idea is that you should have a good understanding of the environment in which your applications will run. How they start (init, systemd), what to do if you see a bug with too many open files, use or not swap. All this will come in very handy when you run real projects.
Networking – CCNA
A very important thing, although many developers forget about it. I believe that you should not write online services without understanding how the network works. Nobody says that you have to learn the seven layers of the OSI model, but you need to know exactly how IP, TCP/UDP and of course the application layer protocol work – for example HTTP, HTTP/2. This will save you a lot of nerves looking for reasons for the Connection Refused error.
Yes, yes. You have to imagine how the code is written, what threads are and a bunch of other things. In general, the more knowledge you have at this point, the easier it will be for you to build and roll out the application. Will you be able to notice the bottleneck in the architectural solution before it gets to production? To answer these questions, you still need to go a little deeper into the basic concepts.