Insightful takes on scaling your business

A comprehensive guide on how to become a DevOps engineer

devops-code-2-gq
.cult
Story by
.cult

.cult is a Berlin-based community platform for developers! We write about all things career-related, make original documentaries and share heaps of other untold developer stories from around the world… (show all) .cult is a Berlin-based community platform for developers! We write about all things career-related, make original documentaries and share heaps of other untold developer stories from around the world!

This article was originally published on .cult  by Kathrine Nicolaisen. .cult is a media platform for untold developer stories, where developers can read content around the softer side of development and watch documentaries about the tech they love. You can read this original piece here.

Type “what is DevOps” into Google and a staggering amount of results show. Considering DevOps is a relatively new term and job function in IT, there still seems to be some confusion among non-technical professionals as to what the role involves. This blog post gives a history of DevOps, provides a short comparison to System Admin, and finishes off with a glossary of DevOps terms.

[Read: How the Dutch government uses data to predict the weather and prepare for natural disasters]

A history of devOps

The earliest mentions of DevOps date back to the 2008 Agile Conference and a talk on Agile Infrastructure by Andrew Clay Shafer and Patrick Debois. At that time, businesses were experiencing problems with their tech infrastructure because the various departments weren’t effectively working together. Developers wrote code in isolation of the final product, which essentially meant that code often wasn’t compatible with the product environment. This caused a lot of problems in relation to deployment and bug fixes, which left System Administrators spread thin, and developers and product owners annoyed.

Naturally, this process was neither smooth nor efficient. The Agile movement first revolutionized the IT industry by increasing deployment frequency from one deployment every two to three weeks to 10 deployments per day. Since then, DevOps and Agile have kept pushing the boundaries of what is possible, and today companies like Amazon do several thousand deployments per day. In fact, Amazon are said to be doing one deployment every 11.6 seconds!

What is a DevOps engineer?

A DevOps Engineer is the person who knows the Software Development Lifecycle like the back of their own hand. They oversee code releases, and they were probably once a developer who became interested in network operations, or a system admin who wants to do more coding. Ultimately they turn ideas into reality.

Does DevOps replace system admin?

There seems to be a common misconception that DevOps is merely System Admin repackaged, but with fancier tools. The stereotype goes: DevOps code, System Admins don’t. In reality, it is fairer to say that there is a difference in focus between the two roles. System Admin is rather operative and maintenance, fixing things once they go wrong, while the focus of DevOps is automation through coding.

However, I must emphasize: System Admin shouldn’t be replaced; the role is still very much needed. Errors will still occur, and System Admins are vital for daily operations and maintenance, and DevOps cannot and should not replace Ops people. Instead DevOps should be seen as the bridge to make the lives of developers and System Admins a lot easier.

What does a DevOps engineer do?

DevOps removes the incompatibility between development and product environments by creating code that automates and speeds up the tasks of System Admin. Previously System Admins had to complete lots of fixes, restructurings, deployments, and small bits and pieces manually.

With DevOps, these things are automated and changes can be applied to all servers automatically rather than one-by-one manually. This means fewer tedious tasks and limitations for System Admin, allowing more time for server management and other maintenance tasks. For developers this means a better fit between the code they write and the actual product environment, therefore less rework and more time to focus on creating and developing.

At its best, DevOps improves workflow processes, infrastructure, and product performance through testing and fixing. Ultimately it’s a faster time to market, improved response times, better scalability and a much nicer IT environment to work in.

Tools that Devops engineers use:

So what tools do DevOps Engineers use? The absolute top buzzwords to look out for are Chef, Puppet, Salt and Ansible, which are all configuration tools. However, for a more detailed insight in keywords and tools, we’ve has created the following glossary. Buckle up – it’s gonna be a long ride!

Cloud

AWS – “Amazon Web Services is a secure cloud service platform offering computer power, database storage, content delivery and other functionality to help businesses scale and grow.”

Azure – “Microsoft Azure is a growing collection of integrated cloud services, analytics, computing, database, mobile, networking, storage, and web for moving faster, achieving more, and saving money.”

Google Cloud Platform – “Google Cloud Platform lets you focus on what’s next for your business. Google Cloud Platform frees you from the overhead of managing infrastructure, provisioning servers and configuring networks. To let innovators innovate and let coders, well, just code.”

Heroku – “Heroku is a cloud application platform – a new way of building and deploying web apps. Our service lets app developers spend their time on their application code, not managing servers, deployment, ongoing operations, or scaling.”

OpenStack – “OpenStack is a set of software tools for building and managing cloud computing platforms for public and private clouds. OpenStack lets users deploy virtual machines and other instances that handle different tasks for managing a cloud environment on the fly.”

Rackspace – “Rackspace is the leader in managed hosting, with specialists in virtualization, security, containers, data, eCommerce, web content management, email and collaboration, disaster recovery and IT transformation.”

Configuration

Ansible -“Ansible is a radically simple IT automation engine that automates cloud provisioning, configuration management, application deployment, intra-service orchestration, and many other IT needs.”

Chef – “Whether you are managing five or five thousand servers, Chef is an open-source software agent that automates your infrastructure by turning it into code. That infrastructure becomes dynamic, versionable, human-readable, and testable. This frees you to easily and quickly provision, manage, and adapt your infrastructure in response to always changing needs – regardless if you are managing servers in the cloud, on-premises, or in a hybrid environment.”

Consul – “Consul has multiple components, but as a whole, it is a tool for discovering and configuring services in your infrastructure. It provides several key features: Service Discovery, Health Checking, Key/Value Store and Multi Datacenter. Consul is designed to be friendly to both the DevOps community and application developers, making it perfect for modern, elastic infrastructures.”

Puppet – “Puppet provides a standard way of delivering and operating software, no matter where it runs. With the Puppet approach, you define what you want your apps and infrastructure to look like using a common easy-to-read language. From there you can share, test , and enforce the changes you want to make across your datacenter. And at every step of the way, you have the visibility and reporting you to need to make decisions and prove compliance. The result: you get a standard way of automating all of it, at scale.”

Salt – “Salt is a new approach to infrastructure management built on a dynamic communication bus. Salt can be used for data-driven orchestration, remote execution for any infrastructure, configuration management for any app stack, and much more.”

Terraform – “Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular service providers as well as custom in-house solutions.”

Vagrant – “Vagrant provides easy to configure, reproducible, and portable work environments built on top of industry-standard technology and controlled by a single consistent workflow to help maximize the productivity and flexibility of you and your team.”

Containers

Docker – “Docker containers wrap a piece of software in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries – anything that can be installed on a server. This guarantees that the software will always run the same, regardless of its environment.”

Continuous Integration

Bamboo – “Bamboo Server is the choice of professional teams for continuous integration, deployment, and delivery that software teams love to use.”

Circle CI – “CircleCI provides enterprise-class support and services, with the flexibility of a startup. Using intelligent automation Circle CI helps engineering teams become more productive.”

Jenkins – “The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.”

Team City – “Initially a Continuous Integration server, TeamCity has encompassed all the features you expect from a mature Continuous Deployment platform. Today it is the best choice you can make for both.”

Travis – “Test and deploy with confidence. Easily sync your GitHub projects with Travis CI and you’ll be testing your code in minutes!”

Deployment

Capistrano – “Capistrano is a remote server automation tool. It supports the scripting and execution of arbitrary tasks and includes a set of sane-default deployment workflows. Capistrano can be used to: reliably deploy web applications to any number of machines simultaneously, in a sequence of as a rolling set.”

Kubernetes – “Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.”

Otto – “Otto was created to provide a high-level abstraction to both develop and deploy web application to any number of machines simultaneously, in sequence or as a rolling set.”

Scripting

Ruby – “A PROGRAMMER’S BEST FRIEND. A dynamic, open-source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write.”

Python – “Python’s simple, easy to learn syntax emphasizes readability and therefore reduces the cost of program maintenance.”

Bash – “Bash is the shell, or command language interpreter, for the GNU operating system. The name is an acronym for the ‘Bourne-Again SHell,’ a pun on Stephen Bourne, the author of the direct ancestor of the current Unix shell sh, which appeared in the Seventh Edition Bell Labs Research version of Unix.”

Perl – “Perl is the Swiss Army chainsaw of scripting languages: powerful and adaptable. It was first developed by Larry Wall, a linguist working as a systems administrator for NASA in the late 1980s, as a way to make report processing easier. Since then, it has moved into a large number of roles: automating system administration, acting as the glue between different computer systems; and, of course, being one of the most popular languages for CGI programming on the web.”

The day-to-day life of a DevOps engineer

There is no typical looking day for a DevOps Engineer. Differences in the role may vary when dealing with company size, culture, and existing work processes. Depending on the company culture, there can be pushback from people not wanting to change, this is when a DevOps might find themselves doing things outside of their job description.

Although, in a company that is proactive, a typical day will have a DevOps professional spending their time coding, testing, deploying, and retesting with various DevOps tools. Bugs will need fixing and time will be spent implementing processes in the teams to streamline development. On the social side of things, a DevOps engineer will have to ensure a culture of collaboration is maintained so that teams are working towards persistent improvement.

TL;DR – it’s a very important job.

The requirements to get a DevOps job

Educational requirements

  • Bachelor’s degree (Most candidates have)
  • Certified DevOps Engineer certification through AWS (Fewer candidates have)
  • DevOps Agile Skills Association (DASA) (Fewer candidates have)

Proficiency in Chef, Puppet, Ansible, and Salt

These are all tools enabling the scalability of server configuration and management through automation, which allows the orchestration of hundreds – even thousands of servers

Excellent software development skills

Everything you do as a DevOps engineer will rely heavily on the core skills of Linux, Python, and AWS (or alternate software) – proficiency in these is a must. Bear in mind, AWS has over a hundred services, knowing all these in and out is impossible, a DevOps engineer focuses primarily on the most common services and what’s essential for the product. Experience with Java, Python, and Groovy will also be necessary when it comes to design and implementation. Other relevant skills

Other relevant technical skills may include the following: Microsoft Server; Linux; Apache; Bash; and IP networking.

What is a typical DevOps engineer salary?

A DevOps engineer salary can vary greatly by years of experience and location. Here are the average DevOps salaries in some European countries.

  • The Netherlands: €59,275 ( €35k – 76k)
  • Germany: €60,000 (€45k – 78k)
  • Austria: €63,385 (€44k -78k)
  • Spain: €40,000 (€24k – 50k)
  • France: € 43,179 (€35k – 60k)

How to find the right DevOps engineer job for you

Given that you have the skills for a DevOps role, it won’t be hard to find a job; the position is currently in demand and projected to become even more so. When you do start looking for a role consider the following:

Where do you want to work?

The location will be one of your biggest considerations. Where you work will affect salary, work/life balance, your standard of living, family, schooling, and the list goes on. Take pains to research the ins and outs of each city to find something that suits your needs.

Preferred languages and tech stacks?

Where is it that you really shine? It’s often best to play to your strengths in this case. Learning new tools on the job can be a challenge, the same as working on projects which require expertise you are lacking.

Set salary expectations

If you plan to move internationally, the salary range will probably vary, don’t be surprised if you get an offer lower than expected. And in the negotiation phase, you probably don’t want to be asking for too much . If you would like to know more about salary negotiation check out The Basics of Salary Negotiation by Ryan Latta.

Apply to companies that work for your needs

Finding a company that fits all your requirements (or most) is the last step. You might prefer the flexibility of a start-up or the challenge of an enterprise both come with their own set of problems and benefits. When applying, think about the company culture and if it would be a good fit for you.

I hope this helps you on your journey to become a DevOps Engineer in 2020 and gives you a heads up on what to expect working in the role. For more information on interviewing as a DevOps engineer, check out this article: Top devOps interview questions & answers to know before interviewing.

Published June 19, 2020 — 08:14 UTC