DevOps is currently very popular, and this article is geared towards becoming a
DevOps engineer and covers the most comprehensive DevOps guide for beginners. Most of the friends, colleagues, and senior developers I know are working hard to become DevOps engineers and leaders in
DevOps in R&D organizations. Although I admit the benefits of DevOps, which are directly related to improving the software development and deployment process, from my limited experience, this is not an easy task. It is very difficult to choose the right learning path among so many tools and practices. As a Java blogger, many readers often ask me:
How to become a DevOps engineer?
What tools should I learn?
What practices should be followed?
Are Maven and Jenkins necessary skills for DevOps engineers?
What about Docker and Kubernetes?
Is infrastructure automation part of DevOps?
Should I learn Chef, Puppet or Ansible?
The above are just some of the questions that readers often mention. I try to use my shallow experience to answer those questions, but I will not just throw those answers together in a simple and rough and repeated way. Today I will share a very good resource-2019 DevOps RoadMap, which will help you become the dream DevOps engineer.
Yesterday I was surfing the Internet, and I met the excellent GitHub page of Kamranahmedse. There are many roadmaps for readers who are determined to become front-end developers, back-end developers, full-stack web developers, and DevOps engineers. This RoadMap is valuable in any sense, because it not only highlights the role of
DevOps engineer, but also talks about the tools and techniques that need to be learned to cover this field. Most importantly, it is visually pleasing (don't you like the yellow and cream blue lines?), so you can print it and stick it on the table for reference.
Although the roadmap is good, it tells you what to learn, but it does not tell you how and where to learn. To supplement the roadmap, I shared some useful free and paid online courses so that you can learn and improve the tools or areas you want to master.
Now let us understand step by step the basic skills needed to become a DevOps master:
1. Programming language
You must know one of the following three mainstream programming languages, namely Java, Python, or JavaScript. I strongly recommend that you study at least one of them.
Java
Python
JavaScript
2. Operating system
This is the content of the Ops part, and the person who is responsible for understanding the operating system and hardware and the system administrator should master the operating system earlier. But for DevOps, developers now need to understand them. At least you need to understand the recommendations in the roadmap: process management, multi-threading and high concurrency, Sockets, I/O management, virtualization, memory storage, and file system.
3. Terminal commands
For DevOps personnel, it is important to master the commonly used and easy-to-use operating system commands, especially the R&D personnel working on the Linux operating system, at least need to know some necessary Linux shell commands, such as Bash, Ksh, Network commands such as find, grep, awk, sed, lsof, nslookup, and netstat.
4. Network and Security
Gone are the days of information islands. In today's world, everything is connected, which also makes
network and security very important. In order to become an excellent DevOps engineer, you must understand basic network and security concepts such as DNS, OSI model, HTTP, HTTPS, FTP, SSL, TLS, etc.
5. Server configuration
As a DevOps master, you should know what is set up on your machine and how to set it up, so that you can think about how to
automate it. Usually DevOps engineers should know how to set up Web servers such as IIS, Apache Tomcat, etc.; they should also understand cache servers, load balancers, reverse proxies, and firewalls.
6. Infrastructure is the code
For DevOps engineers, this is probably the most important thing, which is also a very broad field. As a DevOps engineer, you should understand container technologies such as Docker and Kubernetes; configuration management tools such as Ansible, Chef, Salt, and Puppet; and infrastructure configurations such as Terraform and Cloud Formation.
7. Continuous integration/delivery
For DevOps masters, this is another very important thing: to establish a
continuous integration and delivery pipeline. There are many tools in the CI/CD field, such as Jenkins, TeamCity, Drone, etc.
But I strongly recommend learning at least Jenkins because it is the most widely used and probably the most mature CI/CD tool on the market.
8. Monitoring software and infrastructure
In addition to configuration and deployment, monitoring is another important aspect of DevOps, which is why DevOps engineers understand infrastructure and application monitoring.
There are many tools in this field, such as Nagios, Icing, Datadog, Zabbix, Monit, AppDynanic, New Relic, etc. You can choose some of them to learn according to your needs.
9. Cloud provider
The cloud is the next important thing. Sooner or later you will have to move your applications to the cloud, so it is important for DevOps engineers to understand some popular cloud providers and their basics.
Although AWS is clearly the leader in cloud computing,
Alibaba Cloud is slowly catching up.