Straightforward learning path for your DevOps transformation journey
December 20, 2022
Catalin Baboi
We can confidently say that the DevOps Engineer is one of the key people in the software development process since the role is involved in all stages of application development, such as planning, coding, building, testing, releasing, deploying, scaling, and monitoring.
Automating and increasing the performance of those processes should be the focus of this role, and with the right tools and knowledge, you could fulfill this role yourself.
The picture below might seem scary at first glance since most companies use several of these technologies for each development stage.
In reality, this is exactly the advantage that learning DevOps offers you on this journey. Each of these tools is very focused on what it delivers, and after understanding the key concepts, the knowledge required to operate it is limited to applying those concepts to your projects.
One could argue that learning each tool is like learning to ride a bicycle, although you may need to revisit the documentation on some of those bicycles. What will also make this transformation easier is learning or revisiting these tools in a suitable order, and we’ll list that below:
The first thing to mention is that although being comfortable with a programming language is not required, it will help a lot for scripting purposes when dealing with Infrastructure as Code. Our recommendation here will be Bash, Python, and Golang.
Linux. You’ll use it daily. There are a ton of resources online, but if none seems really inspiring I would personally recommend this series.
Docker. This is the first DevOps-specific step of your journey and will enable you to make the most of your Cloud-provider learning in the future. Run some containers, then build some. Your endgame here would be to fully containerize an existing application by yourself.
Git. For your version control as well as for the Continious Integration part that will follow.
Ansible. Since you should know your way around Linux machines and containers by now, we can apply a configuration management solution.
Cloud. You should now be able to take your existing knowledge to a cloud provider of your choice. Amazon Web Services and Microsoft Azure are currently leading the cloud market.
Networking. You will pick up some concepts just by tinkering with the above-mentioned tools, but some theoretical knowledge will also serve you well.
Kubernetes. Since you know your way around containers by now you can explore the leading container orchestration solution and fully leverage it with Cloud deployment.
Terraform. Also focused on Cloud, Terraform helps you automate infrastructure provisioning for any cloud provider.
CI/CD. Jenkins, GitHub Actions, or Azure DevOps should help you automate the integration and deployment of your application.
Logging. At some point, you may want a solution to have your project logs centralized in one application. We recommend the Elasticsearch stack or Splunk.
Monitoring. At any point, you should be able to check your infrastructure health or receive alerts when something is wrong. Prometheus, Grafana, or Zabbix should come in helpful in this regard.
Technologies are constantly evolving and new, better, more modern alternatives to the specific tools we mentioned may appear at any time. Be sure to keep an eye open for those, as we cannot automate learning!