DevOps for any organization is a cultural shift, and it’s not just about tools and technologies but a continuous practice needed for building and maintaining scalable web applications. DevOps practices when properly implemented bring agility to a modern organization. But DevOps is not easy, and it’s difficult for a DevOps engineer to choose the right path with so many tools and practices.
In this article, I will walk you through a very popular DevOps roadmap that you can use as a reference guide in your journey to be an amazing DevOps engineer.
Let’s go through each milestone in detail further detail.
Learn a programming language(just enough)
There is no end to learning and practicing concepts in any programming language. But the question is, how much is enough to get started. In DevOps, you do need programming skills, but not to the extent of a software developer.
Companies hiring DevOps engineers do look for skills in one programming language. As a DevOps engineer, you will be responsible to write scripts in languages like Python. You can start practicing scripting after learning the fundamentals of a language. Python can be a great language to learn for DevOps engineers.Understand different OS concepts
As a DevOps engineer, you will be solving problems with your clients and developers to create servers and manage the infrastructure. Concepts like I/O management, process management, threads and concurrency, sockets, file systems, etc. will help you with your role as well as interview preparation.Operating System
You need to get some administration knowledge in terms of OS. You will mostly be working with linux machines, so you can use any Linux distro for this like Debian, Ubuntu, CentOS, RHEL, etc.Operating in the terminal
In most companies, you will not get a GUI to operate in your Linux environment. So you should become very comfortable with working on terminals. A few things you should focus on are bash scripting, text manipulation tools like grep, awk, sed, sort, uniq, etc., process monitoring, network and power shell.Networking, Security, and Protocols
Concepts like HTTP, HTTPs, SMTP are very important from an interview perspective. You should also learn about caching server, reverse proxy, forward proxy and load balancer.Web Server
You can focus on one web server like Nginx to learn concepts around web server.Learn Infrastructure as code
This is one of the most critical components in the learning path of a DevOps engineer. You need to learn about app containerization and have a thorough understanding of container tools like Docker and Kubernetes. Configuration management tools like Ansible, Chef, Salt & Puppet. Other areas include container orchestration and infrastructure provisioning.Learn some Continuous Integration and Delivery (CI/CD) tools
Continuous Integration/Continuous Deployment is now a core part of setting a DevOps culture. So you should get familiar with CI/CD tools like Gitlab, Jenkins, Github actions, etc.
I would suggest you get familiar with at least Jenkins and Gitlab CI/CD.Learn to monitor software and infrastructure
When you have thousands of services running, it's important to make sure that the system is running in fine health. Both your infrastructure and application should be continuously monitored. Tools like SigNoz can help you in setting up a robust monitoring system for your applications.Learn about Cloud Providers
Most of the apps today are built as cloud-native. So you need to make yourself familiar with major cloud providers. AWS, Azure, and Google Cloud are the leading players and they provide free courses about their tools too.
Hope this roadmap comes in handy in your journey of becoming a DevOps engineer. There is a lot to learn in this field, but with a good foundation and practice, you can build a solid career in this field which is growing very quickly.
We share more DevOps content on our Twitter handle. If you liked this, let's be friends on Twitter 👋
A sneak peek of our tweets 👇
Top comments (8)
I know im bitchin' about nitty gritty things but it would make me happy if you could include MacOS under the unix flavours. It's a certified unix distro :).
Also I was wondering why cicd comes after infra as code. Cicd can help out most projects big and small but infra as code is really at a higher level if you'd ask me, and is probably way overkill for a lot of projects.
Why is infra as code overkill? It allows you reuse patterns from other people and makes your infra reproducible. Even for small things I am falling back to it
DevOps is a culture not a role. Because if 1 person is doing DevOps it means that the rest of the company isn't. And then you end up doing all the stuff nobody else wants to do. It is much better to but a strict label on the engineers driving DevOps, eg Automation Engineer, Platform Engineer, SRE, Infrastructure Engineer. At least it sets some boundaries of what they can do instead of being glorified sh*t shovellers.
Very aptly described @darkmukke 👍
This is a great summary guys. Thank you very much. But I want to give my take on this respectfully, apologizing beforehand if I took it wrongly.
I think this is a thorough computer science career. I don't believe--at least me doing all those specialties. I propose attack this career modularly.
For instance, on my side, I'd learn everything related to programming. Those things related to networking and OS's, I'd leave to other guys.
Having DevOps knowledge is quite common these days especially if you are a full-stack developer.
Useful!
Thanks.
I started my devops journey recently and thanks for this post