In this comprehensive guide, I have shared my DevOps Engineering experience in different projects and tips to become a DevOps Engineer. It is a detailed roadmap to start your DevOps engineering journey.
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?“
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 has now gotten used to the term “DevOps engineer, ” and as long as you understand the DevOps philosophy, these titles don’t matter much.
Toward the end of the article, I added the different teams a DevOps engineer can be part of.
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.
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 (Developers, Platforms teams, QA, Performance, etc) 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.
Who is a DevOps Engineer?
Organizations trying to practice DevOps requires people with collaborative skills who are willing to change and adopt new technologies & methodologies. They are DevOps Engineers.
From a tooling perspective, a DevOps Engineer is someone who has a good understanding of systems, automation tools, CI tools, Version control systems, monitoring & observability tools, networking, and experience in using project management software.
I have seen teams babysitting pipeline jobs for the infra/app build and release process. In the world of DevOps Engineers, the CI/CD pipeline designed/developed by the team should deliver small updates or releases without much manual intervention. It happens only if there is a cultural shift in the way different teams work.
For example, From my experience working as a DevOps Engineer, sitting with different teams and having an open conversation on pain points would solve many problems than plainly following a team-wise rule book. (And trust me, it is not easy as it sounds 🙂
Another goal of DevOps engineers is to automate repeated tasks and spend 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, and 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, support engineer, etc. You can be a DevOps engineer because you are already part of an IT ecosystem that is responsible for deploying and managing applications to production.
This article explains 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.
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 (OS, Networking, 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 teams. 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 infrastructure automation is DevOps.”
I would suggest reading the state of the DevOps report by puppet. A must-read DevOps report for engineers and leaders.
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.
Here is another interesting study from Redhat, which shows the different Linux distros used in the 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 the 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.
- Understand the Linux booting process
- Understand systemd
- Install and Configure web servers (Apache, Nginx, Tomcat, etc..) and learn how web servers work.
- Learn how Linux processes work.
- Learn how SSH works.
- Learn about different file systems.
- Learn how volumes work in Linux.
- Learn about system logging, monitoring, and troubleshooting.
- Learn about important protocols (SSL, TLS, TCP, UDP, FTP, SFTP, SCP, SSH)
- Learn to manage services and try to create a service on your own (Initd, Systemd)
- Host static/Dynamic websites on web servers and play around with different configurations.
- Setup Load balancers & Reverse Proxys (Nginx, HA proxy, etc). Understand each configuration and algorithm behind load balancing.
- Learn to optimize Linux performance.
- Setup and Database and understand its configurations and management. (Eg: PostgreSQL Setup)
- Break something and learn to troubleshoot.
Learn 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 this further and help us understand what’s causing the issue”
You should spend some time and have a basic understanding of the following.
|1. OSI Model/TCP-IP Model|
2. Network Topologies
3. CIDR Notations
5. Public network
6. Private network
7. Static/Dynamic IPs
11. Public & Private DNS
13. IPv4 & IPv6 Protocols
5. Object storage
6. Disk IOPS/throughput/latency
8. Key-Value Stores
|High Availability||Single Sign-On|
2. Fail-Over Mechanisms
3. Disaster Recovery
4. Vertical scaling
5. Horizontal scaling
|1. Active Directory/LDAP|
|1. SSL certificates|
2. PKI Infrastructure
3. Zero trust security
4. Password/secret rotation
5. Security Compliance
6. Site-to-site VPN
7. Client-to-site VPN
1. L4 Load Balancers
2. L7 Load Balancers
3. Load balancing algorithms
4. Reverse Proxy
There are more things, but I have highlighted the critical components of an IT Infrastructure that you might encounter in your day-to-day job.
Learn Cloud Computing & Virtualization
Cloud computing and virtualization are the basic building blocks of today’s DevOps practices.
You can start learning virtualization concepts using tools like Virtualbox & Vagrant (Type 2 virtualization). It is the foundation of cloud computing.
In terms of Cloud computing, you need to learn and get certified on cloud platforms.
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 latest report from Statista.
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.
Learn Infrastructure Automation
We no more create servers manually. Infrastructure automation tools have become an essential aspect of every organization. Also, all modern infrastructure deployments follow the immutable infrastructure model.
As per a report from Redhat, many organizations are investing in their automation initiatives. Check out this data.
From provisioning servers to application configuration, and deployment, everything should be automated. You can learn any of the following DevOps toolsets that fit your needs.
|For Dev Environment||For Infrastructure Provisioning|
2. Docker Desktop
3. Minikube (k8s)
4. Minishift (k8s)
5. Kind (k8s)
|1. Terraform (preferable)|
2. Cloudformation for AWS
3. CLIs (of respective cloud provider)
|For Configuration Management||VM image/Container management|
|1. Ansible (preferable)|
|1. Hashicorp Packer|
Following are my tips on learning automation tools
- Learn the basics from the official documentation or through a course.
- 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.
- Ensure you learn test-driven infrastructure development. There are testing tools for every automation tool. (Ansible-test, terratest etc.)
- Community modules are a great reference to learning. You can learn complex logic from community modules.
- When using community modules, ensure you know what each block of code does.
Learn Container Orchestration and Distributed Systems
Distributed systems are the basic building blocks for modern scalable infrastructure. You need to understand the basic concepts of distributed systems because most tools that you use for microservices are distributed in nature. For example, Kubernetes.
Also, 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.
The following image shows the five-year increasing search trends for Kubernetes.
Also, many engineers and even fresh college graduates are showing interest in learning Kubernetes. 2023 will see many engineers getting certified in Kubernetes. You can check out our CKA, CKAD, and CKS exam guides. You can pick the best Kubernetes certification based on the domain you want to work with.
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. There are many service mesh tools from the CNCF foundation. You can take a look at the best service mesh tools for microservices.
Logging & Monitoring & Observability
Observability, Logging, and monitoring are fundamental aspects of an infrastructure.
All apps deployed in the infrastructure will produce logs and metrics. Logs are pushed and stored in a logging infrastructure based on architecture and design.
Every company would have a logging and monitoring infrastructure. Commonly used logging stacks are Splunk and ELK. Also, there are a few SaaS companies like Loggly, which provide logging infrastructure.
For monitoring, there are open-source tools like Prometheus, and Nagios and enterprise tools like AppDynamics, Datadog, SignalFx, etc. You can 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 would 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. Understanding regular expressions are very important to query logs in any logging tool
Learn Security Best Practices (DevSecOps)
DevSecOps is another area dealing with integrating security practices in each stage of DevOps.
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.
One of the discussed topics in DevSecOps is the Shift-left security approach. Shift Left Security is nothing but adopting security practices in the design/development stages itself.
Cloud security alliance says,
Security can be achieved only when it has been designed in. Applying security measures as an afterthought is a recipe for disaster.Cloud security alliance
You can check out The Six Pillars of DevSecOps by the Cloud security alliance.
Here is an interesting Checkpoint 2020 security survey that shows different cyber attacks by region.
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. You can also read about Zero trust security practices.
The following image shows the key DevSecOps standard practices published by Redhat.
Hashicorp Vault is a great secret management tool you can look at. There are many workflows available to manage environment secrets.
The State of API security report by Salt Security shows that there is a 681% increase in API attack
Learn Coding & Scripting
Scripting is essential for a DevOps Engineer. Nowadays, for DevOps interviews, every decent company has a preliminary scripting/coding round.
In one or another way, you will end up using scripts in the CI/CD workflow. You can learn the following commonly used scripting languages.
Also, 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. Even to understand Kubernetes better, you need to have knowledge of APIs.
My suggestion is to pick a programming language and build an application from scratch.
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 have meaningful conversations.
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.
- Jenkins pipeline as code requires an understanding of groovy
- Ansible custom module requires an understanding of python
- 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.
Golang is really getting popular in the DevOps domain. Lots of DevOps tooling are done using Golang nowadays. In fact, tools like Kubernetes, and terraform are written in go.
JFrog surveyed Golang adoption during GopherCon, and 18% of the respondents said they use Golang for DevOps-related work.
Learn Git, GitOps & Learn to Document
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. It is an evolving technical practice not commonly used by companies. However, it will become a mainstream practice someday.
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.
The following image shows the whole history of GitOps by weave works.
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.
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.
- Continuous Integration
- Continuous Delivery
- Continuous Deployment
Read this example release process management article to understand how a typical application development, build, testing, deployment, approval process, and validation work.
Learn to use any of the following CI/CD tools.
|CI Tools||CD Tools|
|Drone CI||Jenkins X|
Here is a good pictorial representation of the CI/CD process by bmc.
Also, here is a list of topics related to the application development and release lifecycle. You can connect with people in the industry and understand how it is done in their organization.
- Planning process.
- Architectural approval & signoff process by Enterprise architects.
- Enterprise Security signoff on infrastructure & application design/tools.
- Data Compliance
- Config /Secret management
- QA/Performance testing & Approvals
- Monitoring KPIs documentation & setup
- Change management process.
- Production release process.
- Post-production validation activities
- Rollbacks scenarios and strategies.
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. “Class SRE Implements DevOps”
I recommend these official documents from Google to understand more about SRE.
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 might fall into any one of the following teams in an organization.
- Central Platform Team (Platform engineering): 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.
- 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.
- App Ops Team: This team is 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.
- 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.
- Dedicated Support Team: Support teams are meant to troubleshoot/handle production support tickets and direct the respective team’s issues based on severity. This team has further L1, L2, and L3 lever classifications.
For experienced candidates, It is very important that you understand the nature of day-to-day tasks before you join an organization.
DevOps Engineer Roles & Responsibilities
DevOps job seekers, it is better to understand the DevOps engineer roles and responsibilities before you join an organization.
Each company has different roles and responsibilities.
You can ask the following questions to get a clear picture of what you will be doing as a DevOps engineer.
- What would be the Day to Day project activities?
- Is there any active automation work, or is it a maintenance project?
- What DevOps tools are currently used in the project?
- Is there any new migration or development activity in the pipeline?
- What is the future roadmap of the project?
- How often would there be on-call support? Is there compensation for on-call support?
- Will there be any rotational night shifts?
- Are the work timings fixed or get changed if the project changes?
- Is there a culture of working on weekends?
- Ask about the team size..definitely, don’t want to get burned out!
You can ask more questions that you think to align with your learning and career goals. Just because the brand name is good, it doesn’t mean you will have quality work.
Overall, here is what you should know about DevOps engineers day to day work.
- DevOps engineers don’t create pipelines and automation every day. Instead, most of the automation work is a one-time activity.
- DevOps engineers will have to participate in on-call activities to support the project. There are exceptions in a few projects though.
- You could be part of the platform team, application team, support team,
- If you are part of a platform engineering team, continuous development and innovations happen as part of building platform tools. It will be a great learning experience.
- If you are going to be part of the AppOps team, you will have to use the tools developed by platform teams, and there might be options to extend it as per the requirements. But you get to be part of daily meetings to understand what is going on in the project.
- If you are part of the support team, you get a playbook on solving issues, but there is less chance you get to be part of design discussions.
Try to avoid night shifts and rotational shifts. Health is more important than anything.
DevOps Engineer FAQs
How to get into DevOps?
There is no single roadmap for DevOps. If you are from a development, QA, Performance, or support background, you need to learn about Infrastructure automation and CI/CD. If you are a fresher, you need to concentrate on programming, OS concepts, Cloud, and Containers to get into DevOps. Most importantly, you need to pick a real-world use case and work on them before appearing for interviews. Here is an example list of DevOps POC tasks.
Do DevOps need coding?
It depends on the project you are working on. For example, there are DevOps engineer jobs that concentrate on platform development. In that case, coding is a must. You need to know coding to develop custom requirements in infrastructure automation and CI/CD. Also, for most DevOps interviews, you need to clear a coding/scripting round.
What exactly does a DevOps engineer do?
DevOps engineers’ work is to collaborate with developers and cross-functional teams to make the CI/CD process easy. Most importantly, to spend more time on engineering to automate repeated tasks. Along with infrastructure automation, DevOps engineers need to look into troubleshooting and monitoring production and non-production platforms and applications.
What skills are needed for DevOps?
The common skills required for DevOps are programming, Operating System concepts, Distributed systems, Networking, Monitoring, Troubleshooting, Containers, Infrastructure automation, configuration management, Version control, and CI/CD tools like Jenkins, GitlabCI, GitHub action, etc.
Which is the best certification for DevOps Engineer?
There are many certifications for DevOps engineers. Unfortunately, there is no one right certificate for everyone; your choice depends on what technology or tool interests you. For example, if you want to be a Cloud DevOps engineer, cloud certifications make more sense, and if you work on containers, Kubernetes certifications will help you. You can check out the best DevOps certification guide to know more about it.
Read DevOps Blogs
If you want to be a knowledgeable DevOps engineer, read more. Read at least one DevOps tech blog related to engineering. Read topics that are not part of your day-to-day job to broaden your thinking.
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.
Document Your Learnings
It’s good to share with others your experiences and learning. You can publish tutorials, learnings, and 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.
Whenever you learn something new about DevOps, 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.
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.
If you want personal training or mentorship please reach out to me here.