There is no one-size-fits-all answer when it comes to the right roadmap for a successful SRE or DevOps engineer. However, there are some key principles that should be followed in order to ensure that your organization's engineers are able to thrive in this rapidly growing role. There are many roadmaps for an SRE and DevOps Engineer around the internet, forums, and social networks but in this article, we are covering the SRE and DevOps Engineer Roadmap the Opensource Way.
What is DevOps?
All over the internet, there are many descriptions of what DevOps is. So, what is DevOps really for those who do not know? DevOps is a software development model emphasizing collaboration and coordination across distributed teams. It has become popular over the past decade because it helps developers manage and deploy software products more effectively. It is designed to speed up the process of creating software by breaking down silos and reducing communication barriers. It aims to improve the overall quality of software development and reduce errors.
DevOps is a subdivision of Site Reliability Engineering. DevOps/Platform Engineers are professionals that usually come from either a systems background that has deep experience in coding and scripting or a backend developer who shifted interest more towards distributed systems.
Operating Systems – Learn & Master Linux
I can not stress how crucial it is to learn and master Linux as an SRE and DevOps Engineer. Linux is the core of the craft as an SRE and DevOps Engineer should be the magician behind the scenes in building, maintaining, and securing the core operating system layer for all the software stacks. Everything in the world, well let me rephrase almost and I mean almost everything in the world runs on Linux. Learn the difference between a hard link and a soft link, permissions, Linux commands from beginner to advanced, processes, networking, routing, performance tuning, and troubleshooting. There are a bunch of Linux Operating Systems that you can pick and choose from like Ubuntu Linux, Arch, Redhat, CentOS, and many more. Choose your destined Linux OS for your SRE and DevOps journey.
Web Servers & Proxies – Learn Nginx or Traefik
Nginx would be your best bet to learn as it is a front-running web server in the global technology market. Nginx powers large websites around the world and almost every other organization makes use of Nginx in some form. It can perform as a reverse proxy, load balancer, and web server. Traefik is also another great open-source load balancer and HTTP reverse proxy.
CI/CD - Learn Jenkins or Gitlab
Jenkins and GitLab are the most popular open-source continuous integration and delivery (CI/CD) tools. They can be used to automate the process of building, testing, and deploying software and have the ability to incorporate plenty of plugins. Both tools have a large development community that keeps growing by the day. There are perhaps other open-source CI tools worth mentioning as well such as GoCD and Drone CI.
Logging – Learn Loki, ELK or EFK
System and platform logs are just as important as performance metrics. Engineers require certain information from logs to troubleshoot and trace issues. Just like performance metrics tools, there are a bunch of open-source logging tools, from ELK stack to Flaunt D and Loki to name a few. Master any of these stacks and tools on your open-source DevOps journey.
Metrics & Monitoring – Learn Grafana and Prometheus
How do organizations measure the performance and reliability of their applications? There are plenty of metrics collection tools such as Prometheus an open-source backend metrics scraper and Grafana an open-source frontend to display all your metrics and performance charts for your platform. Nagios is also an open-source alternative to Prometheus and Grafana.
Virtualization & Cloud – Learn Proxmox and Openstack
The open source route is not typically using public clouds even though all public clouds are built on top of open source virtualization and cloud compute software. With Proxmox you can make use of one of the best free and open source virtualization hypervisors and quite stable with a large community that shares tips and support. If you are looking to build your own private cloud then Openstack is definitely a top possibility to learn and master. In my opinion, those two are the best combo for building your own private cloud.
Containers – Learn Docker and Kubernetes
Really not much to say here and I think everyone that has been in the industry even for a short amount of time can agree with me that Docker and Kubernetes are the way to go here. As a DevOps Engineer and SRE you have to master containers, everyone in the IT industry has to learn and master containers as we are transitioning more and more to a microservices world. Docker is the most utilized container engine but there are others such as podman and containerd which are also open source options. Kubernetes runs the world of microservices, yes Docker Swarm is also an open-source alternative but there are no and I mean almost no organizations that would run any other container orchestration tool besides Kubernetes in most cases. The world is adopting Kubernetes at an extreme pace and learning and mastering Kubernetes is crucial as an SRE and DevOps Engineer.
Programming – Learn Bash, Python, and GoLang
SRE and DevOps/Platform Engineers should be good programmers/scripters to develop system and platform automation and tooling. Bash and Python would be your go-to programming/scripting languages for DevOps/SRE but more so GoLang is also another good programming language to learn for SRE and DevOps Engineering.
Infrastructure as Code – Learn Terraform
In the SRE and DevOps/Platform Engineering world learning Terraform is almost a non-negotiable skill and by that I mean it is a must-know, I repeat a MUST KNOW skill in the DevOps space. I personally use Terraform to a great extent from building out architecture in the cloud like AWS, Azure, and GCP or to a private cloud like Openstack. There are also Terraform libraries for Proxmox if you are using it to run virtual machines. Terraform rules the Infrastructure as Code world. There are other open-source alternatives such as Pulumi as well that you can steer interest towards.
Configuration Management – Learn Ansible
Ansible is used widely across the DevOps space. I am an Ansible and automation junky and thrive on automating my system and platform tasks with Ansible which is an incredible open-source Configuration Management tool. There are many alternative open-source configuration management tools such as SaltStack, Rundeck, Puppet, and Chef that you can also learn as an alternative or primary tool.
If there are any skillsets or tools you think should be mentioned in this article, please feel free to comment below. Thanks for reading and do not forget to share if you think this roadmap would be useful to someone.