Recently, everybody is for some reason looking for specialists in the position of DevOps Engineer, but for those who know the terminology, it sounds like Agile Engineer – a term that says nothing and nothing at all. That’s because DevOps is a methodology, not a specialty. The methodology, which describes the interaction between different teams, provides guidance on application development and delivery, infrastructure management. These are all self-sufficient individual specializations, each of which can be talked about for a long time.
Let’s try to summarize the knowledge that will help the engineer to begin to understand these areas. Modern devops services cover many definitions: it includes both continuous delivery (CI/CD), infrastructure automation, and configuration management.
- A very basic knowledge is Computer Science. Any work in information technology implies a basic knowledge of computer science. If at the institute this subject “did not come”, you can see the course CS101 from Stanford University – it is freely available and gives a good understanding of the basics.
- Scripting basics – you can’t do without writing scripts in the age of total automation, so you don’t have to fear the command line and writing your own scripts. If something needs to be done more than once, it should be automated.
- CI/CD – Continuous integration and delivery of applications is now closely related to DevOps so you need to understand what it is and what it is for. The concept is perfectly described in the book “Continuous Delivery”. If the book is not available, the main concepts are described by the author on the website.
- The toolkit for continuous integration is quite diverse, but it is leading by a wide margin Jenkins, so we advise you to start with it. At the same time, it is very desirable to get acquainted with the build systems of the languages you are going to work with, as it is one of the points of contact with the developers (Maven/Gradle/sbt/CMake etc.).
- Clouds is a modern infrastructure that has long gone beyond data centers. Therefore, without the experience/knowledge of cloud providers, there is little that can be done now. Large providers provide trial periods on affordable terms and conditions and it is easy to try what the cloud is. And most importantly, free plans can be used to learn different tools and sharpen your skills. Google Cloud gives $300 credit for one year for any resource – this is enough for training. Microsoft Azure – $200 for a month – a little time, but enough if you just want to get acquainted with the system.
- Infrastructure automation – automation of infrastructure creation is closely intertwined with the notion of infrastructure-as-a-code. Infrastructure description by code tries to solve the problem of repeatability, testing and review, i.e. to apply the principles of CI/CD for the infrastructure level.
- Of the tools, the most popular is probably Terraform – it is worth looking at.
- Configuration management – create a repeatable and predictable system/application configuration. Also, most tools from this area can be used for deployment automation. The study should start with Ansible, as it has a lower threshold of entry. But you should also compare it with similar tools such as Chef and Puppet.
The tools and areas that are now included in DevOps are too many to be studied at once. You should understand several tools and further compare already known tools/approaches with new ones. And the most important thing is to remember that each tool solves its own problem and you don’t have to try to solve all project problems with one tool – it’s better to choose your own for each task.