The Crooked Path or Side Steps in DevOps

Despite the fact that nowadays the so-called profession of DevOps engineer has become typical and not something unique, still every day many specialists try to “move to DevOps”, be it technical support engineers, system administrators, developers, testers and many others.

This article is primarily intended for those just “entering IT” or beginning IT specialists who aspire to get a DevOps role in the future or simply want to expand their knowledge base but don't know where to start. Experienced specialists may find the sources listed incomplete due to the fact that I have collected them subjectively and without a focus on narrowly focused study of one of the areas, which should be enough for beginning specialists, but at the same time should not negatively affect the desire to study new materials.

Why does the title of the article include “crooked path” and “side steps”?
The path is crooked, because you will have to try different directions and not get stuck on one thing. Side steps – because your path to DevOps will consist of a number of directions, each of which will require studying the theory and practice that follows it. You will not be able to get by with just one thing.

There are wonderful DevOps “roadmaps” and many similar articles on the Internet, but here we consider our own vision of this process and indicate some names of books/articles/authors. If these notes are useful to at least one specialist – that's already good. This part of the article will be divided into blocks, each of which indicates what is desirable to read/learn and what to do in practice.

  • Work in technical support, service desk, emergency coordination and related areas.

    Why, you ask? Firstly, DevOps, in addition to technical skills, must have a high level of communication skills, since they will have to constantly interact both with different specialists within the team and with business representatives, management and many other layers of company specialists. In the process of communication, a DevOps engineer must not only understand what the other side wants, but also be able to win over colleagues, “translate” this or that information and remain calm in any work situation. Secondly, it is extremely difficult to get a “real” position of DevOps engineer without any experience in IT. In theory, you can start getting acquainted with ITIL, ITSM at the level of reading articles or the book “ITIL 4 Foundation” (Axelos).

  • Computer networks

    To begin with, you can watch Andrey Sozykin's video course “Computer Networks”, where you will master the basic concepts and processes associated with computer networks.
    Next, you need to get acquainted with the collection of articles, starting with this one: Fundamentals of computer networks. Topic No. 1. Basic network terms and network models
    After that, it's time to move on to the books “Computer Networks” (Andrew Tatenbaum) and/or “Computer Networks” (Victor and Natalia Olifer).

  • Virtualization

    It is necessary to understand at least at a basic level what virtualization is and what solutions exist, how different types of hypervisors differ. To get basic information, you can start with the article: Virtualization Basics (Overview)
    From practice, you can install, for example, VirtualBox on home equipment and try to deploy your first virtual machine.

  • Windows

    In the theoretical part, you can read some basic book, for example, “Self-study Guide for System Administrator” (Alexander Kenin, Denis Kolisnichenko).
    In practice, it is necessary to deploy a sandbox from several Windows servers (to save resources by combining several different roles on servers), for example:
    – Domain Controller with AD DS, DNS, Hyper-V, IIS roles
    – Server with DHCP, RRAS, NAT
    – Server with WSUS
    – A couple of workstations with Windows
    Activities: set up a domain, include all machines in the domain, create separate OUs in AD for users and groups, and, accordingly, several users and groups, set up RDP access for a specific user; organize Internet access through a server with DHCP, add several IP address exceptions so that they are not issued; set up policies for assigning standard desktop wallpapers for client workstations, set up a user password policy; create a directory on the server and an access group that will allow editing the contents of the folder (however, a user with write access rights will not be able to delete the root directory); set up a quota for the folder, the shadow cloning function on one of the shared directories; set up the Hyper-V role so that it is possible to create a virtual machine; set up updates via WSUS, deploy WDS (add an image for the ability to remotely install the operating system).

    After successfully completing the theory and practice, it is advisable to start studying and using PowerShell scripts in the sandbox or in your work (if applicable). There is plenty of information on Microsoft portals. What to try to automate? Anything: granting rights, creating entities in AD, checking password expiration dates, working with SharePoint, converting files, network diagnostics, or even creating small desktop applications with Windows.Forms.

  • Linux

    If you have not worked with Linux at all, this direction may seem difficult and strange at first. At the very beginning, I recommend watching something basic, for example, video tutorials by Denis Astakhov (ADV-IT). After watching, it is better to just try to put the received information in your head, without going into details. Then, parallel reading of books and attempts to install/use Linux begins.

    From books, start with fundamental ones, such as “The Linux Bible” (Christopher Negus), then you need to gradually move on to others, for example: “Linux Internals” (Dmitry Ketov) and “The Linux Kernel: A Description of the Development Process” (Robert Love). It is better to write down useful commands in a notebook and gradually try to learn them in order to use them later.
    The practical part consists of installing virtual machines with Linux operating systems, setting up network interaction, access rights and other use of terminal commands. Don't forget to familiarize yourself with all the advantages of vim, of which there are actually many.

  • Kubernetes, containers, docker

    In this block the base consists of documentation on kubernetes.ioas well as a number of books, including: “Microservices and Docker Containers” (Parminder Singh Kocher), “Kubernetes in Practice” (Josh Rosso, Rich Lander, etc.), “Kubernetes: Best Practices” (Brendan Burns, Eddie Villalba, etc.), “Kubernetes from the Inside” (Jay Vyas, Chris Love), and “Kubernetes for DevOps” (John Arundel, Justin Domingus). Of course, you don't have to read all the books, but you can choose the one that suits you best. If books and documentation are difficult to understand at the initial stage, first watch Denis Astakhov's (ADV-IT) video tutorials on Kubernetes to get a basic understanding of containerization technologies.
    As a practical part of the study: deploy a Kubernetes cluster on several Linux virtual machines using kubeadm and calico (setting up network interaction). Set up interaction between master nodes and worker nodes, then try to create various entities, for example, start with deploying an nginx web server, try kustomize. Then you can try other interesting things.

  • DevOps

    You probably already know what DevOps is if you want to do it, but if you want, you can delve deeper into the general understanding of the methodology. For this, such books as “DevOps for the Modern Enterprise” (Mirko Hering), “The DevOps Handbook” (Jen Kim, Patrick Debois, etc.), “Continuous Delivery. The Practice of Continuous Updates” (Wolf Eberhard) are suitable.
    After studying the theory, it is necessary to consolidate the work with some of the systems and tools in practice. What is required for this?
    – CI/CD: Gitlab CI, TeamCity, Jenkins (deploy, test the interface and set up a simple pipeline, get acquainted with the main differences between the systems)
    – Testing: Pytest, Selenium, Jmeter (trying it out as part of learning CI/CD tools is a good option)
    – Configurations: Ansible, Terraform, Pulimi (try the functionality and compare the areas of application of the tools)
    – Message brokers: Rabbit MQ, Kafka (deploy, try sending and receiving messages with simple services, understand the main differences between the systems)
    – Artifact repositories: Nexus, Harbor, Artifactory (deploy, configure interaction with CI/CD systems as part of writing pipelines)
    – Public clouds: The course “Cloud Services Engineer” (Yandex Practicum) is quite well filled with basic information and practice of working with a cloud solution and the managed services included in it.
    The list of systems/tools/skills can go on and on, but as a base this will be good enough.

  • Monitoring and logging

    In this section I would like to highlight the article: Monitoring Basics (Prometheus and Grafana Overview)
    To understand the basics of working with the Zabbix system, it is useful to read the official documentation.
    By ELK: Learning ELK Part I – Installing Elasticsearch
    When considering all the above systems, the main thing is not only to read, but also to try to deploy them, set up monitoring, notifications, sending logs (the same nginx) and visualization in Grafana.

  • Development

    I would like to start this block with a recommendation to study SDLC in general terms by reading the article: What is SDLC? Stages, Methodology and Processes of the Software Life Cycle.

    Next, you need to consolidate your knowledge of Git: “Git. A Practical Guide. Version Management and Control in Software Development” (Fisherman L.V.)
    In addition, you need to understand branching models and their advantages/disadvantages (GitFlow, Gitlab Flow, Github Flow, TBD and others).

    It is also important to understand how web services work, basic error codes, headers, basic diagnostics and error resolution.

    It is important to understand the role of testing in the software development process, study development models, testing methods and types, well-known engineering practices in the context of the DevOps engineer's participation in the automation/support of testing processes and CI/CD/CD processes.

    Finally, you need to get a general idea of ​​what developers do by trying to write code in one or more programming languages. To do this, you can try writing anything: a web server, interaction with message brokers, automation of work with the same Zabbix, and much more.

    Among the sources, I would like to highlight the site about programming metanit.comas well as a number of books on some of the languages: “The Secret Life of Programs” (Jonathan Steinhart), “Python and DevOps” (Noah Gift, Kennedy Berman, etc.), “Python for Network Engineers” (Eric Chow), “Fundamentals of Java Programming” (Timur Mashnin), “C# by Example” (P.V. Evdokimov).

  • DBMS

    There are various ways to learn how to work with DBMS, but to start with you can watch a video course on SQL by Andrey Sozykin. Then read the books “Learning SQL” (Alan Bollier), “Postgres: First Acquaintance” (P. Luzanov, E. Rogov, I. Levshin).
    It is essential to deploy some relational and non-relational database in practice, understand the main differences, basic setup and use by interacting with a simple service written independently in one of the programming languages.

  • Architecture

    It is necessary to start studying the types and levels of architectures, for which you can start by reading the article: Application and Integration Architecture: A Guide to Basic Concepts in Simple Words

  • Additionally

    There are additional things that will be required to successfully pass the interview and get the coveted position: in your free time, be it a walk and washing dishes – listen to a mock interview for the DevOps position, because often even experienced specialists find it difficult to answer interviews, since they rarely attend them or focus on studying other nuances. You should also remember that even a failed interview is a huge experience for you in both receiving frequently asked and rare questions, and communication/interaction.

  • Of course, there is no “one size fits all”: job postings have different requirements, companies have different goals and approaches, and interviewers have their own interesting questions prepared.

    It is important not to stop after failure and, even if there is no time to read and try everything, to patch up the “holes” in your knowledge where it is most needed, to learn something new. You should not hope for quick success in passing the interview, sometimes it is better to feel out the direction and then ask yourself: “Am I really interested in this and do I want to work with it?” If the answer is “Yes”, continue and everything will work out.

    Similar Posts

    Leave a Reply

    Your email address will not be published. Required fields are marked *