I will try to talk about 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 as an SVP of Infrastructure in one of the advertising companies, I own my own business and, in my spare time.
This is a culture, a technique if you will. DevOps movement arose in 2008 and was designed to solve the accumulated problems. The developers believed that if the code was launched locally, then there is no problem – you can run it in production.
- Build Engineer is the person responsible for building the code. Dependency pulling, conflict analysis in the code – it’s all about him.
- Release Engineer – is responsible for delivering code from development to production. Which branch will go into 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 assembly when pushing to git, running tests, deploying to staging, deploying to production – these are all his tasks. A key role in the DevOps approach.
How to become a DevOps engineer?
In general, a DevOps engineer is more about the experience than knowledge of specific software. DevOps guys constantly study, study and test new projects and technologies.
They must constantly ask themselves the question: will this technology improve our project? What is better to choose as a language: ruby, python, go lang or write on pure pluses? And how will we deliver changes in production so as not to break down working systems?
- Immediately write a small application. We choose absolutely any language. The application will send user information via HTTP. In fact, a simple API.
- Now let’s add work with the database: let our users are stored in the database. It’s ideal to store the database structure next to the code and learn how to run migrations with new changes. Thus, your application will synchronize the database to the desired structure.
- We register on github.com / bitbucket.org and drop the entire source code of our application there.
- On our machine, we raise Jenkins / TeamCity and configure the automatic assembly of the application from our repository by button.
- We complicate the task. Configure webhooks on GitHub / bitbucket, which will automatically start the assembly at Jenkins / TeamCity.
- Add tests to Jenkins: at least you can run lint in our code or jot down unit tests.
- Switch to setting up a dev environment. We pick up ansible /chef/puppet/ salt and configure the virtual machine from scratch: create users, install the necessary libraries and dependencies.
- We bring this whole thing under vagrant: the virtual machine should automatically rise and configure.
- We connect vagrant to Jenkins using the appropriate plugin: when pushing to git, our application is built and the virtual environment is lifted using vagrant + configuration system management.
- We are looking for best practices for deploying applications in the language of your choice. You can wrap everything in deb/rpm packages, you can deploy ruby using Capistrano. The main thing is to choose a solution.
- The choice is made, we implement it and configure Jenkins so that after pushing to the repository, Jenkins, in addition to building the application and deploying the environment, upload and run our code.
- Add smok tests: after starting Jenkins should request a list of users from our API and make sure that it receives a response.
- We add monitoring of our project: we study the time series of the database, configure Prometheus, grafana , automatically connect a new instance of our application to the monitoring.
- Improving monitoring: integrate with slack and pagerduty to receive notifications.
- We read about docker, write Dockerfile and wrap our application.
- We are studying fascinating articles about tuning orchestration systems swarm, Kubernetes monitoring tools, rancher cattle. Follow the recommendations and raise the cluster.
- Change Jenkins: collect the docker image, run the tests, run the assembled docker on the Kubernetes cluster, conduct smoke tests, introduce our application into balancing.
Yes, becoming a DevOps engineer is not so easy, a silver bullet does not exist. It does not exist in any other area. You will always have to study, read, try. But after the 10th iteration, you will get a taste.
You will not miss any interesting stinks, you will begin to study and try everything new and unknown. And the new and the unknown is always cool. Whoever tells you what, dare! You Can Also Read 8 Best Shared Hosting Server Companies 2019.