Become A DevOps Engineer in 2021: A Comprehensive Guide

How to Become A DevOps Engineer

As for the current IT market, the DevOps domain is one of the best options for IT folks’ salary and career growth. One common question I get quite often is, “How to become a DevOps engineer?”

In this blog, I will try to answer this with my own experiences in practicing DevOps in different organizations.

Towards the end of the article, I have added the different teams a DevOps engineer can be part of.

Many people argue (including me) that there is nothing like a “DevOps Engineer” or a “DevOps Team” because it is not a thing. However, everyone in the industry now got used to the term “DevOps engineer, ” and as long as you understand the DevOps philosophy, these titles don’t matter much.

There are many misconceptions about what DevOps really means. One such misconception is “Automation is DevOps.” Developing skills related to infrastructure automation is not enough to become a DevOps Engineer.

Wikipedia says,

DevOps (a clipped compound of development and operations) is a culture, movement or practice that emphasizes the collaboration and communication of both software developers and other information-technology (IT) professionals while automating the process of software delivery and infrastructure changes.

From the above definition, it is clear that DevOps is not about any tools or technologies. It is a philosophy for making different IT teams work together to deliver better and fast results through continuous feedback.

Here is an interesting trend graph showing DevOps popularity in the last five years.

devops trends for five years

Organizations trying to practice DevOps requires people with collaborative skills. Also, they should be willing to change and adopt new technologies.  

From a tooling perspective, a very good understanding of systems, automation tools, CI tools, Version control systems, networking, experience in using project management tools will pave the way for DevOps adoption.

I have seen teams babysitting pipeline jobs for the infra/app build and release process. In the world of DevOps, the design or the automated CI/CD pipeline designed/developed by the team should also deliver small updates or releases without much manual intervention. It happens only if there is a cultural shift in the way teams work.

For example, What I can say from my experience is, sitting with different teams and having an open conversation on pain points will solve many problems than plainly following a team-wise rule-book. (And trust me, it is not easy as it sounds 🙂 )

Another goal should be automating repeated tasks and spending more time on engineering and innovation.

How To Become a DevOps Engineer?

You must understand the fact that DevOps is not specific to developers or system engineers. It’s for anyone passionate about evolving practices, technologies and willing to work in a collaborative environment where everything is automated to make everyone’s life so easy.

It doesn’t matter whether you are a sysadmin, developer, tester, performance engineer, etc. You can be a DevOps engineer because you are already part of an IT ecosystem who understands how things work.

This article will explain how you should prepare yourself for tools and technologies to become a DevOps engineer who practices the DevOps philosophy.

Note: In this article, I have covered many verticals. A beginner can’t be a master of everything. However, having a fair amount of knowledge in these areas will help you become a DevOps engineer.

Understand DevOps Culture

To become a DevOps engineer, the first and foremost thing is to understand the DevOps culture. It is all about different teams working together towards a common goal. In other words, there should not be any blaming culture between different IT teams.

The following image says it all.

devops engineer
Source: https://www.ein-bild.com/ (By Sandra martin)

For example, If you are a devops engineer, never say “It’s not my job”, Say, “Let me see what I can do to help.” How you respond has a significant impact on collaboration. (It doesn’t mean you have to spoon-feed people and do others’ work.)

Note: If you are fresher, understanding cultural aspects is challenging because it comes with actual industry experience. So my advice would be to focus on core IT fundamentals (Infrastructure and programming)

IT leaders and decision-makers should ensure the entire team is mentored on DevOps cultural aspects before getting into DevOps toolsets. It avoids lots of confusion in the group. It usually doesn’t happen in organizations, and they end up having a “DevOps Team” for operations, which again ends up in a siloed structure.

People would stop hiding the truth and stop blaming others for project issues once they understand that an issue in project delivery has to be addressed in a collaborative manner than pointing fingers. For example, a blameless postmortem.

Once you understand the DevOps culture, you would stop saying that “CI/CD and automation is DevOps.”

I would suggest reading the state of the DevOps report by puppet. must-read devops report for engineers and leaders.

Useful Resources:

  1. DevOps Culture and Mindset [Coursera]
  2. The Phoenix Project [Recomended eBook]

Learn about *nix Systems

We are in an era where we cannot live without Linux/Unix systems. You should get a better understanding and working knowledge of various Linux distributions highly used by organizations (RHEL, Centos, Ubuntu, CoreOS, etc.).

As per The Linux foundation case study, 90% of the public cloud workload runs on Linux.

Public cloud linux usage

Here is another interesting study from Redhat, which shows the different Linux distros used in the public cloud.

Linux distro use in public cloud

Now you have enough reasons why you should focus on Linux.

When it comes to Linux, it’s all terminal, GUI is less preferred in *nix world. Get your hands dirty with terminals of these systems.

You can use a Virtual box with Vagrant or AWS/GCP/Azure to spin up Linux servers.

You can start with the following.

  1. Understand the Linux booting process
  2. Install and Configure web servers (Apache, Nginx, Tomcat, etc..) and learn how web servers work.
  3. Learn how Linux processes work.
  4. Learn how SSH works.
  5. Learn about different file systems.
  6. Learn how volumes work in Linux.
  7. Learn about system logging, monitoring, and troubleshooting.
  8. Learn about important protocols (SSL, TLS, TCP, UDP, FTP, SFTP, SCP, SSH)
  9. Learn to manage services and try to create a service on your own (Initd, Systemd)
  10. Host static/Dynamic websites on web servers and play around with different confgurations.
  11. Setup Load balancers & Reverse Proxys (Nginx, HA proxy, etc). Understand each configuration and algortithms behind load balancing.
  12. Learn to optimize Linux perfomance.
  13. Break something and learn to troubleshoot.

Resources

  1. Introduction to Linux [edX]
  2. Learn Linux in 5 days [Udemy]
  3. Vagrant tutorial for beginners

Understand How Infrastructure Components Work

The basic building block of any organization is its Infrastructure. It could be on the cloud or on-premise Data Center.

An overall understanding of Infrastructure components is a must for a person who wants to practice or work in a DevOps environment. For example, when you get into meetings with network/security teams, with a fair amount of infrastructure knowledge you can ask the right questions, understand what they are saying and collaborate better.

There is a big difference when you say “It’s not working, can you look into this” and “Hey, I have done my initial troubleshooting, and here are my findings. Can you look into you further and help us understand what’s causing the issue”

You should spend some time and have a basic understanding of the following.

Networking


  1. Subnets
  2. Public network
  3. Private network
  4. CIDR Notations
  5. Static/Dynamic IP’s
  6. Firewall
  7. Proxy
  8. NAT
  9. Public & Private DNS
  10. Troubleshooting
  11. VPN

High Availability


  1. Clusters
  2. Fail Over Mechanisms
  3. Disaster Recovery

Security


  1. PKI Infrastructure
  2. SSL certificates

Storage


  1. SAN
  2. Backups
  3. NFS

Single Sign-On


  1. Active Directory/LDAP

Load Balancers

  1. L5 Load Balancers
  2. L7 Load Balancers
  3. Load balancing algorithms
  4. Reverse Proxy

VPN


  1. Site to Site VPN
  2. Client to site VPN

There could be more things, but I have highlighted the critical components in an IT Infrastructure.

Get Certified On Cloud

When I say “Get Certified,” please do not use the exam dumps to pass the certification. It adds significantly less value to you. It may be useful for the organization to show the clients that they have certified cloud engineers.

Most of the public cloud market share is currently owned by AWS. Here is the report from Businesswire.

public cloud market share

Pick any one public cloud, preferably AWS, and learn about all its core infrastructure services. Do hands-on on all the core services and understand how it works.

Watch AWS re-invent videos and understand how other organizations are using AWS services for hosting their applications.

Trust me, you will learn a lot from these videos, and no online training will provide that much information on how to run production workloads on AWS.

If you are planning to get certified GCP, watch their Google Next videos.

Use the certification to gauge yourself on the respective platform.

Resources:

  1. Ryans AWS Certification Courses
  2. Google Certified Associate Cloud Engineer Certification
  3. Microsoft Azure – Beginner’s Guide + AZ-900 preparation

Learn Infrastructure Automation

We no more create servers manually. Infrastructure automation has become an essential aspect of every organization. 

As per a report from Redhat, many organizations are investing in their automation initiatives. Check out this data.

Organization Devops Automation Budget

From provisioning servers, application configuration, deployment, everything should be automated. You can learn any of the following DevOps toolsets that fit your needs.

For Dev Environment


  1. Vagrant
  2. Docker Desktop
  3. Minikube
  4. Minishift

For infrastructure provisioning


  1. Terraform
  2. CLIs (of respective cloud provider)

For Configuration Management


  1. Ansible
  2. Chef
  3. Puppet
  4. Saltstack

VM image management


  1. Packer

Here are my tips on learning automation tools

  1. Learn the basics from the official documentation or through a course.
  2. If you want to write an Ansible playbook for Nginx, first configure Nginx manually and see how the components and configs work. Then start writing the playbook.
  3. Ensure you learn test-driven infrastructure development. There are testing tools for every automation tool. (Ansible-testterratest etc.)
  4. Community modules are a great reference to learn. You can learn complex logic from community modules.
  5. When using community modules, ensure you know what each block of code does.

Resources:

  1. Learn DevOps: Infrastructure Automation With Terraform
  2. Ansible for the Absolute Beginner – Hands-On – DevOps

Containers, Distributed Systems & Service Mesh

Container adoption is increasing day by day. The organization you work for might not be using containers now. However, it is best to have hands-on knowledge of container technology like Docker or podman. It will gain you some competitive edge among your peers.

Once you understand docker, you can start learning about container orchestration tools like Kubernetes, Docker Swarm, etc.

These platforms are best suited for microservices-based architecture.

Here is an interesting Kubernetes usage trend by Datadog.

kubernetes usage trends

The following image shows the five-year increasing search trends for Kubernetes.

kubernetes user trends

Also, many engineers are showing interest in learning kubernetes. 2021 will see many engineers getting certified in kubernetes. You can check out our CKA, CKAD, and CKS exam guides.

Service mesh is an advanced topic in the container space. If you are a beginner to container toolsets, you can learn this after gaining a good amount of knowledge in container orchestration and microservices-based architecture.

Resources

  1. Docker for the Absolute Beginner
  2. Podman tutorial for beginners
  3. Kubernetes Tutorials For Beginners: Getting Started Guide
  4. Best kubernetes courses
  5. Kubernetes the Hard wayd-way

Logging & Monitoring

Logging and monitoring are fundamental aspects of an infrastructure.

Most of the apps deployed in the infrastructure will produce logs and metrics. Based on architecture and design, logs are pushed and stored in a logging infrastructure.

Every company will have a logging and monitoring infrastructure. Commonly used logging stacks are Splunk and ELK. Also, there are few SaaS companies like Loggly, which provide logging infrastructure.

For monitoring, there are open source tools like Prometheus, Nagios and enterprise tools like AppDynamics, Datadog, SignalFx, etc. Check out our blog on the best open source monitoring tools.

Developers, operations teams, and security teams use logging systems to monitor, troubleshoot, and audit applications and infrastructure. Also, for AIOPS, log data plays a key role.

In every organization, mission-critical applications are monitored 24/7 using monitoring dashboards. Generally, dashboards use data from logging sources or metrics generated by the application.

Also, there will be alerting systems that use the rules configured in the monitoring systems for alerting.

For example, an alert could be triggered as a slack notification, Jira ticket, email alert, ServiceNow incident ticket, or xMatters phone call. Alerting workflows differ from organization to organization.

As a DevOps engineer, you should be able to query logs and troubleshoot issues in non-prod and prod environments. Understand regular expressions is very important to query logs in any logging tool.

Resources

  1. Elastic Stack – In-Depth & Hands-On
  2. Monitoring and Alerting with Prometheus
  3. Art of Monitoring [eBook]
  4. Regular Expressions (Regex) Tutorial

Understand Security Best Practices (DevSecOps)

DevSecOps is another area dealing with integrating security practices in each stage of DevOps.

Wikipedia says,

DevSecOps is an augmentation of DevOps to allow for security practices to be integrated into the DevOps approach. The traditional centralized security team model must adopt a federated model allowing each delivery team the ability to factor in the correct security controls into their DevOps practices.

Checkpoints 2020 security survey shows different cyber attacks by region.

cyberattack regions min

In cloud environments, crypto mining is one of the common attacks. This mostly happens when the cloud access secrets are maintained poorly so that hackers get access to it.

When it comes to DevOps, secret management for applications and infrastructure components should follow standard security practices.

The following image shows the key DevSecOps standard practices published by Redhat.

devsecops standards min
Source: Redhat.com

Hashicorp Vault is a great secret management tool you can look at. There are many workflows available to manage environment secrets.

Resources:

  1. HashiCorp Vault: The Advanced Course
  2. Vault Tutorial
  3. What is container security?
  4. Kubernetes vault setup guide
  5. Vault Injector tutorial

Learn Coding & Scripting

To become a true devops engineer, you need to understand the Developers’ world better. To do that, you need to know how a typical development process works.

So it is essential to have a good understanding of programming, APIs, etc. It will help you troubleshoot and collaborate better.

My suggestion is to pick a programming language and build an application from scratch. When I started my career, I built an entire ruby on rails web application from scratch. Even though development was not my main work, till today it has helped me in understanding many concepts in the developer’s world.

When you develop an application, you will understand the process and components involved in application development. Once you know this, you can effectively interact with developers and other teams.

Also, In today’s world, we treat everything as code. Even though there are enough tools to automate everything, you might need custom functionality that a tool may not offer. In such cases, coding/scripting comes in handy to achieve those functionalities.

For example,

  1. Jenkins pipeline as code requires an understanding of groovy
  2. Ansible custom module requires an understanding of python
  3. Writing Kubernetes operator requires Golang experience.

Also, if you look at AWS CDK or IaaC tool like Pulumi, you can use a programming language to define the infrastructure and do test-driven infrastructure development like you develop applications.

You can learn the following commonly used scripting languages.

  1. Bash/Shell
  2. Python
  3. Golang

Golang is really getting popular in the DevOps domain. Lots of DevOps tooling are done using Golang nowadays. In fact, tools like Kubernetes, terraform are written in go.

JFrog surveyed Golang adoption during GopherCon, and 18% of the respondents said they use Golang for DevOps-related work.

Golang devOps adoption survey

Resources

  1. Complete Python Bootcamp: Go from zero to hero in Python 3
  2. Learn How To Code: Google’s Go (golang)
  3. Linux Shell Scripting: A Project-Based Approach to Learning

Learn Git, Learn to Document, Learn about GitOps

It is essential to version control everything you do (except passwords and secrets :P). Git is the best version control tool. There are plenty of tutorials available on git, and it will not take much time to learn important git operations.

You can start with Github or Bitbucket as your remote code repository.

Note: Git Branching strategy is an important aspect of any application release process.

Once you understand Git, learn about GitOps.

So what is this GitOps anyway? here is what gitops.tech explains GitOps

GitOps is a way of implementing Continuous Deployment for cloud native applications. It focuses on a developer-centric experience when operating infrastructure, by using tools developers are already familiar with, including Git and Continuous Deployment tools.

You can read my explanation on Gitops.

The next important thing is to document every important thing you do. Every repository must have a README file, which should explain your code in a better way. Good documentation will help not only you but also someone who tries to use your code.

Resources:

  1. Git Complete: The definitive, step-by-step guide to Git
  2. Git Basics Every Developer and Administrator Should Know

Understand End To End Application Delivery Lifecycle

When it comes to the application delivery lifecycle, there are three important concepts you need to be aware of.

  1. Continuous Integration
  2. Continuous Delivery
  3. Continuous Deployment

Read this release process management article to understand how a typical application development, build, testing, deployment, approval process, and validation work.

Learn to use CI/CD tools like Jenkins, Travis CI, GoCD, etc

Here is a good pictorial representation of the CI/CD process by bmc.

CI/CD in devops
source: bmc

DevOps vs SRE

SRE is another evolving topic in the DevOps community.

SRE is a set of practices and philosophies that emerged from Google.

Here is what google says about DevOps and SRE

DevOps and SRE are not two competing methods for software development and operations, but rather close friends designed to break down organizational barriers to deliver better software faster.

I recommend these official documents from Google to understand more about SRE.

  1. What is SRE?
  2. How SRE relates to DevOps
  3. SRE vs. DevOps: competing standards or close friends?

Different Types of “DevOps Teams”

Nowadays, every organization tags people dealing with Infrastructure/CI-CD as “DevOps Engineer.” and makes them part of a “DevOps team.” However, their duties vary depending on the teams they work for.

There is a misconception about “DevOps Engineers” thinking they are responsible for everything. That’s not true. It might work for small teams.

In reality, If you are hired as a “DevOps Engineer,” you will fall in any one of the following teams in an organization.

  1. Central Platform Team: Responsible for provisioning Infrastructure on demand. This team is responsible for delivering a scalable platform when requested. They will not take care of applications but the underlying platforms. They will make sure the production systems are available 24×7 through continuous platform support and monitoring. Also, they will work on new tooling and automation to meet future needs. The end consumers of this team would be a development or App Ops team. So this is more of shared responsibility.
  2. DevOps Team: Although “DevOps team” doesn’t make any sense, organizations use it to tag the operations team with this name. This team normally works with developers closely and serves multiple development teams. They are responsible for end-to-end application delivery.
  3. App Ops Team: This team part of specific engineering teams working closely on a specific program in an organization with good knowledge of that particular domain. For example, the payments team. This team is responsible for deploying and managing payment applications. Platform management will be taken care of by the central platform team or by DevOps teams.
  4. SRE Team: This team deals with automation, availability, latency, performance, efficiency, change management, monitoring, emergency response, and capacity planning. They work closely with developers to solve operational issues. This team consists of engineers working on infrastructure with a development background.
  5. Dedicated Support Team: Support teams are meant to troubleshoot/handle production support tickets and direct the respective team’s issues based on the severity.

Read Read and Read

Nothing will gain knowledge like reading. Read at least one DevOps tech blog related to engineering.

Follow all the engineering blogs like Netflix, Twitter, Google, etc. Learn how they are using the right toolsets, deployment strategies, and their latest open source projects.

Follow like-minded people on LinkedIn, Reddit, Medium, Quora, etc.

Resources

  1. Best DevOps Blogs & Resources
  2. How they DevOps
  3. How they SRE

Write a Blog

It’s good to share with others about your experiences and learning. You can publish tutorials, learnings, and your experiences on your blog.

It will help others, and it will create a personal brand for yourself. It takes less than 30 minutes to set up a WordPress blog or a Medium blog. If you want help to start your blog, drop a message to us at [email protected]

Whenever you learn something new, you can write about it. It will be a reference to you as well as others. You can share it on Linked in groups, Dzone, etc.

Conclusion

The tools and processes involved in DevOps are not limited to what is mentioned in this article. However, these are commonly used open-source tools and technologies you can start with to become a DevOps engineer.

Now I’d like to hear your thoughts:

What’s your key takeaway from this?

Or maybe you have a question about different verticals explained.

Either way, leave a comment below right now.

26 Shares:
31 comments
  1. Wow, fantastic! This the best and most complete guide that I’ve read about this subject.

  2. Great Article dear Bibin , I was very much looking for some article like this , good job and thanks a lot for your effort , keep rocking

  3. Very comprehensive article and makes a very complicated subject accessible to many. 👍🏾

    Must read for anyone who is seeking a job in Kubernetes or DevOps.

  4. Hey Bibin, this post is really strong and helpful. I also liked the infographics and I just wanted to say thank-you for putting it up. Cheers, Mehmet

  5. a comprehensive guide, worth the read, every letter in this blog is worth!

    keep writing!

  6. It was a great read!
    I strongly agree with your statement that “DevOps is not a thing” . Its more of a philosophy, methodology, or you can say practice that fosters collaboration and communication within the teams. It puts a set of tools and practices at your disposal which you can leverage to achieve your business outcomes and competitiveness. DevOps is paramount if you want to deliver innovation and agility. Adding more to the skills, openness to change, adaptability, sense of shared responsibility, and people skills are must to blend in DevOps environment. Some sought-after technical skills required in DevOps are having clear-cut understanding of storage, networking, containers, automation tools, and source control systems.

  7. Its time to edit this Post now.

    Now organisations are also asking person who has web dev experience, knows Infra/Cloud and Automation.

    So basically he should also know Java or any high level programming language.

  8. These skills all point to a growing recognition that software isn’t written in the old way anymore. Where software used to be written from scratch in a highly complex and lengthy process, creating new products is now often a matter of choosing open source components and stitching them together with code. As for the infrastructure transparency of the entire cloud stack, I think nclouds is also a great service to look at.

Leave a Reply

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

You May Also Like