The target audience
Are you a developer who wants to turn his career towards a more advanced DevOps model? Are you a classic Ops engineer and would like to get an idea of what DevOps means? Or are you neither one nor the other and, having spent some time working in the field of IT technologies, want to change jobs and have no idea where to start?
If so, read on to find out how you can become a mid-level DevOps engineer in six months! Finally, if you have been involved in DevOps for many years, you can still draw a lot of useful information from this series of articles and find out where the integration and automation industry is at the moment and where it is striving to develop.
What is this all about?
First, what is DevOps? You can google definitions and get through all this verbal husk, but be aware that most of the definitions are just a jumble of words wrapped in a streamlined shape. Therefore, I will give you an extract from all these definitions: DevOps is a way of delivering software in which the headache and responsibility is shared among all involved. That’s all.
OK, but what does this reduction mean anyway? It means that traditionally Developers (people who create software) in their work were guided by incentives that differed significantly from incentives of Operations (operators, or people who manage software). For example, as a developer, I want to create as many new features as possible. After all, this is my job, and that is exactly what the customers demand! However, if I am an Ops person, then I need as few new features as possible, because each new function is a change, and any change is fraught with malfunctions. As a result of such inconsistency incentives, DevOps was born.
DevOps is trying to combine development and operations (integration and automation) into one group. The idea is that now one group will share both pain and responsibility (and probably reward) for creating, deploying and generating revenue from customer-oriented software.
Purists will tell you that there is no such thing as a “DevOps engineer.” “DevOps is a culture, not a role,” they will tell you. Of course, they are right from a technical point of view, but, as often happens, this term came out beyond its original meaning. So, a DevOps engineer is a bit of a “system engineer 2.0.” In other words, he is someone who understands the software development life cycle and creates software development tools and processes to solve classic operational problems.
Ultimately, DevOps means creating digital pipelines that take code from a developer’s laptop and turn it into revenue from using the final product, that’s the whole point. Pay attention to the fact that the career choice of DevOps is highly compensated by financial rewards, and almost every company either “makes DevOps” or claims to be. Regardless of where these companies are located, the overall employment opportunities as DevOps are quite high and imply “fun” and meaningful employment for many years to come.
However, be careful with companies hiring a “DevOps team” or “DevOps department.” Strictly speaking, such things should not exist, because ultimately DevOps is still a culture and a way of delivering software, rather than staffing a new team or creating department with a fashionable name.
Denial of responsibility
Now, let’s set aside a glass of Cool-Ad for a moment and think about the following. Have you heard the old adage “Junior DevOps engineers don’t exist?” If not, be aware that this is a popular trail on Reddit and StackOverflow. But what does he mean?
In simple terms, this phrase means that it takes many years of experience, combined with a solid understanding of the tools, to ultimately become a truly effective Senior DevOps practitioner. And, unfortunately, there is no shortcut to achieving the goal. So this is not an attempt to trick the system – I don’t think that in fact you can pretend to be a senior DevOps engineer with several months of experience in this industry. Achieving a clear understanding of rapidly changing tools and methodologies requires many years of experience, and there is no getting around it. However, there is an almost consistent (fashionable, if you like) menu of tools and concepts that most companies use, and this is what will be discussed.
Again, tools are different from skills, so while you are learning tools, make sure that you do not neglect your skills (surveys, networking, written communication, troubleshooting, etc.). Above all, do not lose sight of what we want to find – a way to create a fully automated digital pipeline that takes ideas and turns them into revenue-generating code fragments. This is the only and most important conclusion from this entire article!
Stop talking, when can I start?
Below is the DevOps Fundamental Knowledge roadmap. Having mastered everything that is depicted there, you can safely and honestly call yourself an DevOps engineer! Or a cloud engineer if you don’t like the name “DevOps”.
This map reflects my (and probably most of the people working in this space) view of what a competent DevOps engineer should know. However, this is only an opinion, and, of course, there will be disagreements with it. This is normal! Here we do not strive for excellence, we strive for a solid foundation on which to really build.
You have to go this way gradually, layer by layer. Start (and continue!) Follows from the fundamentals, first examining the elements marked in blue – Linux, Python and AWS. Then, if time or demand in the labor market allows, do purple things like Golang and Google Cloud.
Honestly, the foundational top layer is something you will have to study endlessly. OS Linux is very complex and takes years to master. Python requires constant practice to stay up to date. AWS is developing so fast that what you know today in a year will only be part of your overall knowledge portfolio. Once you learn the basics, move on to a real set of skills. Please note that there are 6 blue columns in total (Configuration, Version, Packing, Deployment, Startup, Monitoring), one for a month of study.
Of course, you noticed the absence of an important stage in our six-month pipeline – testing. I deliberately did not include it in the roadmap, because writing a module, integration and acceptance tests are not easy and traditionally fall on the shoulders of the developers. And the omission of the “testing” phase is explained by the fact that the goal of this roadmap is to master basic skills and tools as quickly as possible. The lack of testing experience, according to the author, is only a minor obstacle to the proper use of DevOps.
In addition, remember that we are not studying a whole bunch of unrelated technical babble here, but striving to understand the tools that, in a single bundle, create an understandable story. This story is an end-to-end process automation – a digital conveyor that moves bits like an assembly line. You don’t want to learn a bunch of tools and stop constantly! DevOps toolkit is changing rapidly, and concepts are much less common. Therefore, you should strive to use tools as training proxies for higher-level concepts.
Okay, let’s dig a little deeper!
Under the top rung with the words Foundation, you see the skills that every DevOps engineer needs to master. These skills are confident handling of the three “pillars” of the industry, which are: the operating system, the programming language, and the public cloud. These things are not something that you can quickly get acquainted with and go further. These skills need to be constantly improved and honed to master them in order to be at the forefront of the industry and to update the professional environment surrounding you. Let’s go through them in turn.
Linux is where everything works. Can you be a terrific DevOps practitioner while fully remaining within the Microsoft ecosystem? Sure you can! There is no law that would only use Linux. However, keep in mind – despite the fact that all Linux things can be done on Windows as well, it happens there much more painfully and with less functionality. At the moment, we can safely assume that without knowledge of Linux it is impossible to become a true DevOps professional, so Linux is what you should study and study.
Honestly, the best way to do this is to simply install Linux (Fedora or Ubuntu) at home and use it as much as possible. Of course, you will break a bunch of things, you will get stuck in work processes, you will have to fix everything, but you will learn Linux!
By the way, RedHat variants are more common in North America, so it makes sense to start with Fedora or CentOS. If you are wondering if you should purchase KDE or the Gnome edition, select KDE. This is what Linus Torvalds himself uses.
Python is the dominant back-end language these days. It’s easy to get started with it, it is widely used. Python is very common in the field of artificial intelligence and machine learning, so if you ever want to move into another hot field of activity, you will be fully prepared for this.
Amazon Web Services: Again, it’s impossible to become an experienced DevOps professional without a solid understanding of how the public cloud works. And if you want to learn more about it, check out Amazon Web Services. This is a leading player in the field of services, which offers the richest set of working tools.
Can I start with Google Cloud or Azure instead? Sure! But remembering the latest financial crisis, it should be noted that AWS is the safest option, at least in 2018, as it allows you to register an account for free and begin exploring the capabilities of cloud services. In addition, the AWS console provides the user with a simple and intuitive menu for selection. The good news is that you don’t need to know all Amazon technologies for this.
Start with the following: VPC, EC2, IAM, S3, CloudWatch, ELB (Elastic Load Balancing under the guise of EC2) and Security Group. These things are enough to get started, and every modern, cloud-based enterprise is actively using these tools. AWS ‘own training site is a good place to get started.
I recommend that you spend 20-30 minutes daily learning and practicing with the Python language, the Linux operating system, and the AWS cloud service, in addition to other things that you will have to learn. In general, I believe that spending an hour an day five times a week is enough to understand the processes in the DevOps industry for 6 months or less. There are a total of 6 main components, each of which corresponds to a month of training. This is all you need to acquire basic knowledge.
In subsequent articles, we will consider the following level of complexity: how to fully automate the configuration, version, packaging, deployment, launch and monitoring of software.
To be continued very soon …
A bit of advertising 🙂
Thank you for staying with us. Do you like our articles? Want to see more interesting materials? Support us by placing an order or recommending to your friends, cloud VPS for developers from $ 4.99, A unique analogue of entry-level servers that was invented by us for you: The whole truth about VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps from $ 19 or how to divide the server? (options are available with RAID1 and RAID10, up to 24 cores and up to 40GB DDR4).
Dell R730xd 2 times cheaper at the Equinix Tier IV data center in Amsterdam? Only here 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV from $ 199 in the Netherlands! Dell R420 – 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB – from $ 99! Read about How to Build Infrastructure Bldg. class c using Dell R730xd E5-2650 v4 servers costing 9,000 euros for a penny?