• Programming
  • Tutorial
  • System Administration
  • Gadgets
  • Phones
  • Web development
Wednesday, May 18, 2022
  • Login
No Result
View All Result
SkilledRoom
No Result
View All Result
SkilledRoom
No Result
View All Result
Home System Administration

Who is DevOps and How to Become One: A Learning Plan

December 3, 2021
in System Administration
Share on FacebookShare on Twitter

Who is a DevOps engineer, what does he do, and how to become one – says Vasily Ozyorov, the head of the international team Fevlake and SVP of Infrastructure at Airpush Inc.

  1. What is DevOps?
  2. What a DevOps Engineer Should Know?
  3. How to become a DevOps expert?
  4. Conclusion

In this article, I’ll try to cover what it takes for an IT professional to become a DevOps engineer. But first, a few words about yourself to get to know each other better. My name is Vasily, I work for SVP of Infrastructure in one of the advertising companies, I own my own business and at my leisure, I write to my Khmelnaya DevOps channel.

I got acquainted with Unix systems back in 2005, while still a student of the Lyceum. Oh yes, those unforgettable nights installing FreeBSD and compiling KDE from the source. By the way, it was thanks to this that I found my first job, where I developed small projects in QT / C ++, was engaged in configuring Cisco, and also raised mail servers.

And finally, I got into a game development company, where I started my career as a DevOps specialist. The active interaction between the developers and the operations team immersed me in a hitherto unseen world. Up to this point, the path of code from developer to production seemed to me like a huge black abyss, in which it was impossible to see anything.

But, having plunged into it with my head, I realized that everything is not so scary. I saw how applications are assembled, how they are tested, how they go to production, where the whole Internet sees them. Let’s lift the veil and see how you can become a successful DevOps engineer.

What is DevOps?

DevOps is short for Development Operations and is not really a professional name. This is culture, methodology if you like. The DevOps movement emerged in 2008 and was designed to solve the accumulated problems. Many companies saw a problem in the interactions between development and operations teams.

The developers believed that if the code was run locally for them, then there was no problem – it could be run in production. If, nevertheless, problems arose, then from the side of the operation team it sounded: “Yes, these are problems with the code, let the developers figure it out.” Due to this approach, product releases were constantly delayed and the quality of the final product often suffered. It was also strongly influenced by the fact that a lot of changes were rolled out in one release and it was very difficult to figure out what caused the problems in production.

DevOps was designed to address these issues. He was supposed to be the liaison between the development team and the operations team. Conventionally, there are several roles in DevOps culture that correlate very well with professions:

  • Build Engineer is the person in charge of building the code. Pulling up dependencies, parsing conflicts in the code – that’s all about it.
  • Release Engineer – Responsible for delivering code from development to production. Which branch will go to testing, which build will go to production, the release engineer does just that.
  • Automation Engineer is an automation engineer. Automates everything that moves. And what does not move, moves and also automates. Automatic build when pushing to git, running tests, deploying to staging, deploying to production – these are all his tasks. A key role in the DevOps approach.

In general, several more roles can be distinguished. For example, a Security Engineer will be responsible for running security tests and examining vulnerabilities in the components used.

In the real world, all (or almost all) of these roles individually are usually combined by some other person. For example, the role of a build engineer can be placed in the hands of a developer. And the automation of server configuration is usually given to system administrators. And the DevOps specialist has to work out and automate the process of building and delivering code from the developer to production.

What a DevOps Engineer Should Know?

Strictly speaking, there are no special requirements for a DevOps student, but entering the profession will be much easier if you have some skills out of the box.

Senior System Administrator

Or at least Middle. The idea is that you have a good understanding of the environment in which your applications will run. How they start ( init , systemd ), what to do if you see the error too many open files , use or not use swap. All this will be very useful when you start real projects.

Where to begin:

  1. Take a basic Linux course .
  2. I studied on the site lissyara.su, this is more about FreeBSD, but after studying all the articles, it will be good to expand my horizons on frequently used software.
  3. The most important thing during training is to plunge headlong into what is happening. This is greatly facilitated by thematic forums and telegram channels.

Networking — CCNA

A very important thing, although many developers forget about it. I believe that you cannot write online services without understanding how the web works. Nobody says that you need to memorize the seven layers of the OSI model, but you definitely need to know how IP , TCP / UDP, and, of course, the application layer protocol – for example, HTTP , HTTP / 2 – work . This will save you a lot of nerves looking for the causes of the Connection Refused error.

Where to begin:

  1. Sign up for a CCNA course .
  2. Install GNS 3 for yourself and pump over in setting up network equipment.

Junior Developer

Yes Yes. You have to understand how to write code, what OOP is, 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.

Many may disagree with me, arguing that the code should be written by the developer. But, excuse me, if you do not understand how a software product is created, then how will you automate its assembly, testing, and deployment? Can you spot an architectural bottleneck before it hits production?

To answer these questions, it is still necessary to delve a little deeper into the basic concepts. Where to begin:

  1. Examine the basic types of data used.
  2. Look at the main algorithms used.
  3. Read about programming patterns.
  4. Take a simple course in any programming language, for example, golang has a nice interactive online tutorial.

Junior DBA

In fact, this is included in the previous paragraph, but I nevertheless decided to take it out separately. Since all current projects, in any case, a database, it would be nice to be able to write SQL queries, use the explain and understand how they work and why you need index‘s. Well, and look at the heaps of popular NoSQL solutions.

Where to begin:

  1. The simplest thing is to take a course, for example from Enterprise DB .
  2. If the course does not want to, then open the documentation for the PostgreSQL, install base, create labels and learn basic commands, such as select, insert, join. We look at the execution plan of the query, create indexes, and also back up, restore and configure replication.

Judging by my personal statistics, most often people come from operation to DevOps, since developers usually do not have the first skill from the list. But I know two times in life when senior developers became DevOps because they were tired of how the operation works. And, by the way, in addition to technical skills, you will definitely need some soft skills. At the very least, you will have a lot of communication with all stakeholders. You will also promote new ideas and technologies, which will require you to be able to communicate your thoughts clearly and clearly and to argue. I will not write about stress resistance, but you will definitely need patience since it is often impossible to introduce new cool technology within one day.

How do I become a DevOps engineer?

In general, a DevOps engineer is more about the experience than knowledge of specific software. DevOps guys are constantly learning, studying, and testing new projects and technologies. They must constantly ask themselves the question: Will this technology improve our project? Which is better to choose as a language: Ruby, Python, Go, or write on pure pluses? How are we going to deliver changes to production so as not to break working systems?

The main thing to understand is that the DevOps specialist has a really good outlook. To expand it, you need to constantly engage in self-study. Below I have provided sample steps that will help you grow from, for example, a system administrator to a DevOps engineer. Remember: the list is just a direction, you have to hone your skills yourself.

  1. Let’s write a small application right away. We choose absolutely any language. The application will serve information about users via HTTP. Essentially a simple API.
  2. Now let’s add work with the base: let our users be stored in the base. It is ideal to keep the database structure next to the code and learn how to run migrations when new changes are made. Thus, your application itself synchronizes the database to the desired structure.
  3. We register on GitHub / Bitbucket and upload all the source code of our application there.
  4. On our machine, we raise Jenkins / TeamCity and set up the automatic build of the application from our repository using the button.
  5. We complicate the task. Let’s set up webhooks on GitHub / Bitbucket, which will automatically start the build on Jenkins / TeamCity.
  6. Let’s add tests to Jenkins: at least you can run the linter through our code or sketch out unit tests.
  7. Let’s switch to setting up the dev environment. We take Ansible, Chef , Puppet, or SaltStack into our hands and set up a virtual machine from scratch: create users, install the necessary libraries and dependencies.
  8. We bring this whole thing under Vagrant : the virtual machine should be automatically raised and configured.
  9. We connect vagrant to Jenkins using the appropriate plugin : when pushing to Git, our application is built, and the virtual environment is raised using Vagrant + Configuration System Management.
  10. We are looking for best practices for deploying applications in the language of your choice. You can wrap everything in deb packages, you can deploy Ruby using Capistrano . The main thing is to choose a solution.
  11. The choice has been made, we will implement it and configure Jenkins so that after pushing to the repository, Jenkins, in addition to building the application and deploying the environment, will upload and run our code.
  12. Add smoke tests : after starting Jenkins, it should request a list of users from our API and make sure it gets a response.
  13. We add monitoring to our project: we study the time series of the database , set up prometheus , grafana , automatically connect a new instance of our application to monitoring.
  14. Improving monitoring: integrating with Slack and PagerDuty to receive notifications.
  15. We read about Docker, write a Dockerfile and wrap our application.
  16. We are studying fascinating articles about setting up orchestration systems Swarm , Kubernetes , Rancher Cattle. We follow the recommendations and raise the cluster.
  17. Changing Jenkins: building a Docker image, running tests, running the assembled docker on a Kubernetes cluster, running smoke tests, putting our application into balancing.

The main goal of all these steps is to gain experience with different technologies. I have already said that the most important thing for a DevOps specialist is horizons, so we take the same 17 points and in each of them, we change the technology to a new one. Writing an app in Go? Now we are writing in Ruby. Have you used Jenkins? We take TeamCity. Raised Kubernetes? Setting up the swarm. In such a simple way, after a few months, you will be able to understand in advance what is best to use in a particular situation, and this is the most important quality of competent and successful DevOps.

Conclusion

Yes, becoming a DevOps engineer from scratch is not easy, there is no silver bullet. Nor does it exist in any other area. You always have to study, read, try. But after the 10th iteration, you will get a taste. You will not miss a single interesting softphone, you will begin to study and try everything new and unknown. And the new and the unknown are always cool. Whoever says anything, go for it!

Tags: DevOpsSystem administration
Previous Post

Linux System Administrator Tools

Next Post

What is Ansible and how to use it

Related Posts

Interesting SSH tricks and tricks

Interesting SSH tricks and tricks

by skilled
December 3, 2021
0

Here are some tips for using SSH effectively. Let's talk about how: use two-factor authentication for SSH connections; it is safe...

What is Ansible and how to use it

What is Ansible and how to use it

by skilled
December 3, 2021
1

What is Ansible? It is open source software that automates software delivery, configuration management, and application deployment. Ansible helps DevOps professionals automate...

Linux System Administrator Tools

Linux System Administrator Tools

by skilled
December 3, 2021
0

Quite recently (5-8 years ago) the Linux system administrator was limited in administration and automation tools. Somewhere it was possible to...

Next Post
What is Ansible and how to use it

What is Ansible and how to use it

C # tools for those who don’t have time to code

C # tools for those who don't have time to code

Why you should choose Node.js for server development

Why you should choose Node.js for server development

Leave a Reply Cancel reply

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

  • Home
  • About Us
  • Advertise
  • Privacy & Policy
  • Contact Us

© 2017 JNews - Premium WordPress news & magazine theme by Jegtheme.

No Result
View All Result
  • Programming
  • Tutorial
  • System Administration
  • Gadgets
  • Phones
  • Web development

© 2017 JNews - Premium WordPress news & magazine theme by Jegtheme.

Welcome Back!

Login to your account below

Forgotten Password?

Create New Account!

Fill the forms below to register

All fields are required. Log In

Retrieve your password

Please enter your username or email address to reset your password.

Log In