What exactly does a DevOps engineer do?
DevOps-engineers gather together all the parts, which the project consists of. They know the specifics of programmers, testers, system administrators and help simplify their work. They understand the needs and requirements of the business, its role in the development process – and build the process with the customer in mind.
Before introducing updates to the product, they must be tested on a third-party environment. It is prepared by DevOps-engineers. They plant devops culture in the project as a whole: they implement DevOps practices on all layers of their projects. These three principles: automation, simplification, acceleration – they bring everywhere you can reach.
What should a DevOps engineer know?
By and large, he should have knowledge from different areas: programming, working with operating systems, databases, assembly systems and configurations. To them is added the ability to work with cloud infrastructure, orchestration and monitoring systems.
- Programming languages. DevOps-engineers know several basic languages for automation and can, for example, say to a programmer: “Let’s do the code installation not with your hands but with our script that automates everything? We will prepare a config file for it, it will be easy to read for you and for us – and we can change it at any time. And we’ll also see who makes the changes, when and for what. A DevOps engineer can learn one or more of these languages: Python, Groovy, Bash, Powershell, Ruby, Go. There is no need to know them at a deeper level – the basics of syntax, principles, the ability to write simple scripts for automation are enough.
- Operating systems. A DevOps engineer must understand which server the product will be installed on, which environment it will run in, and which services it will interact with. You can choose to specialize in the Windows or Linux family.
- Version control systems. Without knowledge of DevOps-engineer version control systems there is nowhere. Git is one of the most popular systems at the moment.
- Cloud providers. AWS, Google, Azure – especially if we are talking about the Windows direction. Cloud providers provide us with virtual servers, which perfectly fit on CI/CD tracks. Installing ten physical servers requires about one hundred manual operations. Each server needs to manually run, install and configure the desired operating system, install our application on these ten servers, and then ten times check everything. Cloud services replace this procedure with ten lines of code and a good DevOps engineer must be able to operate with them. This way, he saves time, effort and money for both the customer and the company.
- Orchestration systems: Docker and Kubernetes. Virtual servers are divided into containers, in each of which we can install our application. When there are a lot of containers, we need to manage them: one to enable, another to disable, somewhere to make backups. This becomes quite a complicated case, for which we need an orchestration system. Previously, each application had its own server – any change in the way it worked could affect the health of the application. With containers, applications become isolated and run separately – each on its own virtual machine. If a failure occurs, there is no need to spend time looking for the cause. It is easier to destroy the old container and add a new one.
- Configuration systems: Chef, Ansible, Puppet. When you need to maintain a whole fleet of servers, you have to do many similar operations. It is long and difficult, and also manual work increases the chance of error. Here the configuration systems come to the aid.