A roadmap of how to become a DevOps engineer in 2023
What does DevOps actually mean? And what is a DevOps Engineer? π€
DevOps is a software development approach involving Continuous Development, Continuous Testing, Continuous Integration, Deployment and Monitoring.
The above process spans across the traditionally siloed teams of Development and Operations and DevOps tries to remove the barriers between them.
So, a DevOps Engineer works basically with the DEVelopment and OPerations team. It's the link between those 2 main parts.
Concepts vs Tools π
DevOps includes concepts like Build Automation, CI/CD, Infrastructure as Code, etc.. And there are numerous tools that enable these concepts to be implemented. And because of these vast number of tools, it can get confusing and overwhelming.
The most important thing is to understand the concepts and learn 1 specific tool for each category. E.g. when you already know what CI/CD is exactly and know how to use Jenkins, it will be easy to learn an alternative tool as well.
βοΈ DevOps Roadmap to get started as a DevOps Engineer βοΈ
Let's get straight into the roadmap of what skills you need to learn.
βοΈ 1) Concepts of Software Development
As a DevOps engineer you will not be programming the application, but as you are working closely with the development team to improve and automate tasks for them, you need to understand the concepts of:
- how developers work
- which git workflow they are using
- how applications are configured
- automated testing
βοΈ 2) Operating Systems & Linux Basics π§
As a DevOps engineer you are responsible for preparing the infrastructure (servers) on which the application is deployed.
And since most of the servers are Linux servers, you need to know Linux OS and feel comfortable using the Command Line Interface. So you need to know:
- basic Shell Commands
- Linux File System
- basics of how to administer a server
- SSH Key Management
- installing different tools on servers
βοΈ 3) Networking & Security
You also need to know the basics of Networking & Security in order to configure the infrastructure, e.g.:
- configure Firewalls to secure the application
- understand how IP addresses, ports and DNS works
- Load Balancers
- Proxy Server
- HTTP/HTTPS
However, to draw a line here between DevOps and IT Operations: You are not the SysAdmin. So you don't need advanced knowledge here. It's enough to understand and know the basics, because there are own professions like SysAdmins, Networking or Security Engineers
βοΈ 4) Containerization - Docker π³
As containers are becoming the new standard, you will probably run your application as a container. This means you need to generally understand:
- concepts of virtualization
- concepts of containers
Which tool to learn?
DOCKER - the most popular container technology today
ππΌ FREE Docker Course
βοΈ 5) Continuous Integration and Deployment (CI/CD) π
In DevOps, all the code changes, like new features and bug fixes of developers, should be integrated in the existing application and deployed to the end user continuously and in an automated way. Hence the term: Continuous Integration and Continuous Deployment.
And setting up a complete CI/CD pipeline is the main task and responsibility of a DevOps engineer.
So when the feature or bugfix is done, a pipeline running on a CI server (e.g. Jenkins) should be triggered automatically, which:
- runs the tests
- packages the application
- builds the Docker Image
- pushes the Docker Image to an artifact repository and finally
- deploys the new version to a server (which could be a DEVELOPMENT, TESTING or PRODUCTION server)
So skills you need to learn here:
- setting up the CI/CD server
- build Tools & Package Manager Tools to execute the tests and package the application
- configuring artifact repositories (like Nexus)
Of course, there can be more steps integrated, but this flow represents the core of the CI/CD pipeline and is the heart of the DevOps tasks and responsibilities.
Which tool to learn?
Jenkins is one of the most popular. Others: Bamboo, Gitlab, TeamCity, CircleCI, TravisCI
βοΈ 6) Cloud provider β οΈ
Nowadays many companies are using virtual infrastructure on the cloud, instead of managing their own infrastructure. These are Infrastructure as a Service (IaaS) platforms, which offer a range of services, like backup, security, load balancing etc.
These services are platform-specfic. So you need to learn the services of that specific platform. E.g. for AWS you should know the fundamentals of:
- IAM service - managing users and permission
- VPC service - your private network
- EC2 service - virtual server
AWS has much more services, but you only need to learn the services you/your company actually needs. E.g. when the K8s cluster runs on AWS you need to learn the EKS service as well.
AWS is the most powerful and most widely used one, but also most difficult one.
Which tool to learn?
AWS is the most popular one.
Other popular ones: Azure, Google Cloud
βοΈ 7) Container Orchestration - Kubernetes β
As I mentioned before, containers are widely used and in big companies hundreds or thousands of containers are running on multiple servers. This means these containers need to be managed somehow.
For this purpose there are container orchestration tools and the most popular one is Kubernetes. So you need to learn:
- how Kubernetes works
- administer and manage the Kubernetes cluster
- as well as deploy applications in it
Which tool to learn?
KUBERNETES - most popular
ππΌ FREE Kubernetes Course
βοΈ 8) Monitoring and Log Management π
Once software is in production, it is important to monitor it to track the performance, discover problems in your infrastructure as well as application. So one of your responsibilities as a DevOps engineer is to:
- setup software monitoring
- setup infrastructure monitoring, e.g. for your Kubernetes cluster and underlying servers.
Which tool to learn?
Prometheus, Nagios ...
ππΌ Prometheus Monitoring explained
βοΈ 9) Infrastructure as Code
Manually creating and maintaining infrastructure is time consuming and error prone. Especially when you need to replicate the infrastructure, e.g. for a Development, Testing and Production environment.
In DevOps again, we want to automate as much as possible and that's when Infrastructure as Code comes into the picture.
With IaC we use code to create and configure infrastructure and there are 2 types of IaC tools you need to know:
- infrastructure provisioning
- configuration management
With these tools it's easy to replicate and recover the infrastructure. So you should know 1 tool in each category to make your own work more efficient as well as to improve the collaboration with your co-workers.
Which tool to learn?
Infrastructure provisioning: Terraform is the most popular one
Configuration Management: Ansible, Puppet, Chef
ππΌ Terraform explained
ππΌ Ansible explained
βοΈ 10) Scripting Language π©π»βπ»
Since you are closely working with developers and system administrators to also automate tasks for development and operations, you will need to write scripts and small applications to automate tasks.
In order to be able to do that you need to know a scripting or programming language.
This could be an OS-specific scripting language like bash or Powershell.
But what's more demanded is an OS-independent language like Python, Ruby or Go. These languages are more powerful and flexible. If you know one of these, it will make you much more valuable in the job market.
Which tool to learn?
Python: currently the most demanded one, which is easy to learn, easy to read and has many libraries available.
Others: Ruby, Go, NodeJS
ππΌ FREE Python Course
βοΈ 11) Version Control - Git
You write all these automation logic mentioned above as code.
Just like the application code of developers, you manage this code and configuration files also with a version control tool, like Git.
Which tool to learn?
GIT - most popular and widely used
Good luck on your DevOps journey! π πͺ
Complete DevOps bootcamp to start your career as a DevOps engineer π
βΊ More infos here: https://bit.ly/3gEwf4V
βΊ Reduced EARLY BIRD prices until 28th of February π
As the whole process is overwhelming, we constructed this program considering the above roadmap with the focus to get you job-ready and to help you learn these concepts and tools faster and more efficiently.
The bootcamp focuses on practical hands-on demos to follow along and to actually get confident to use these tools.
Like, share and follow me π for more content:
Top comments (9)
Very well written article Nana! Just a few suggestions from personal experience, hoping they help:
Hands-on knowledge with fair understanding of number 3 can save one's life, especially at a small company/startup where one is given the reins of the entire infrastructure.
It also would help when one works with concepts like microservices, service mesh & distributed tracing.
Points no 4, 7, and 8 are simply too vast to be covered in a roadmap, especially at the beginning of one's career. They are better grasped as one progresses along.
Focusing on the why of things before coding to problem-solve as it's a transferable skill that'll serve one well regardless of workplaces.
Looking forward to more of your articles & videos, cheers!
Thank you Vinay for the feedback and for your valuable insights!
you have created best tutorials with a great animation and a clear explanation. Thanks For that. If possible please let me know the software you use for your presentation,animation,video making. This will help me as im also a Tutor in Udemy.
Great info Nana! I have been doing 'DevOps' role here in South Africa since 2000. The resources and information you gave here is very valuable for newbies. Great job.
This is awesome, thanks for writing this!
Hello Nana,
Thank you for the article. I am interested to change my career to DevOps engineer. What would be the required timeframe required? I am following CloudGuru's Devops Path(learn.acloud.guru/learning-path/cl...). Do you have any suggestions? Thank you in advance :)
Thanks for preparing this informative article.
Thank you
Hi Nana,
Is the Devops boot camp mostly meant for developers & System administrators or can someone who has no programming experience also take the course ?