Companies are today looking for people skilled in container and cloud native technologies. In case you want to acquire these skills, make sure you do so the right way.
The 10th Annual Open Source Job Report received from the Linux Foundation (https://www.linuxfoundation.org/research/the-10th-annual-open-source-jobs-report) makes it evident that container and cloud native skills are the most in demand (Figure 1). Let’s first try to understand the scope of technologies covered under the umbrella term cloud native.
The Cloud Native Computing Foundation (CNCF) defines cloud native computing as the use of open source software, as well as technologies such as containers, microservices and service mesh, to develop and deploy scalable applications on cloud computing platforms.
The topics covered under cloud native are hence very vast, including the knowledge of different cloud computing platforms like AWS, Azure, Google Cloud, etc. If you want a list of the different tools and projects that are used under the hood of cloud native deployment, you can refer to https://landscape.cncf.io/card-mode?project=hosted.
There is no way one can master all of these. Such a breadth of topics overwhelms the learner, and creates confusion on where and how to begin as well. At the same time, if the basics are right, learning these topics does not take much time.
So, before learning about containers and cloud native technologies, one needs to make sure one’s foundation is very strong. By this I mean one should have a sound understanding of the following:
- Operating system and networking concepts
- Working knowledge of Linux
- Working knowledge of Git and GitHub
- General understanding of cloud and DevOps
One cannot skip or jump directly into advanced topics. The topics listed above are generally taught in colleges these days, but if you have not learned them earlier, there are many resources available — both online and offline.
Once you have mastered these subjects, you are ready to learn container and cloud native technologies. As these cover many topics, I would like to specifically call out the topics you must learn in order to become a cloud native engineer:
- Container runtimes like containerd, Docker
- Kubernetes
- Helm
- Working knowledge of any public cloud (Azure, AWS or Google Cloud)
- Prometheus
- OpenTelemetry
- Overview of service mesh
Every other topic after this is an add-on, to be learnt on a need basis.
Now let us take a look at what are the different ways in which you can learn these subjects.
YouTube
Almost everyone goes to YouTube first to learn about any new topic. But this comes with its own challenges:
- A lot to choose from, which is very confusing.
- There is no defined path, and one can move in endless cycles to watch some random videos.
- Content is not up-to-date.
- There is no mentor or instructor available to guide.
There are no hands-on labs available to practice while watching the videos.
In my opinion YouTube is not for serious learners. One can get a very good overview of a subject, which may be sufficient in a few cases.
Self-paced online training
Self-paced online training gives you the flexibility to go over the content anytime you wish to. Most such online courses are only video based but some of them now come with an in-built lab environment. So choose the latter, whenever possible.
When you start looking for courses, I would suggest exploring official free training, if available. CNCF has an introductory course on Kubernetes on Edx called ‘Introduction to Kubernetes’ (https://www.edx.org/course/introduction-to-kubernetes). Just for your information, I authored its initial version.
Once you have completed the official free courses, you can explore other courses from different online training websites, which offer some great content (refer to the box).
List of online resources for learning cloud native technologies |
https://training.linuxfoundation.org https://cloudyuga.guru https://kodekloud.com https://www.pluralsight.com https://cloudacademy.com https://learnk8s.io/academy https://www.udemy.com |
Self-paced mode of learning requires a lot of internal motivation and discipline to finish the courses, as learners are on their own. Active participation in local community events like meetups, workshops and becoming a part of the online communities is highly advisable in case you are pursuing this kind of training.
Instructor-led online training
Time bound learning opportunities are the best as you can complete them in a dedicated time frame with the help of an instructor, using hands-on labs. These trainings are scheduled more often than physical ones, as people can join them remotely as well.
You may not understand something fully during the sessions, but there is always the content/recording to refer to, in order to connect the dots.
Websites that offer instructor-led online training |
https://training.linuxfoundation.org https://cloudyuga.guru https://learnk8s.io/academy https://www.edureka.co/ https://www.simplilearn.com |
Make sure you look at the trainer profile before attending such training, as a good trainer can make things very simple to understand.
Offline training
This kind of training is the most expensive, but should not be missed if you happen to find it. Nothing can substitute live interaction. Companies can schedule such training easily for their employees.
It’s advisable to choose companies or institutes that specialise in cloud native and DevOps training rather than generic ones. Also, do check for the industry experience of the trainer before signing up for courses.
A note on advanced topics
For advanced topics like setting up a hybrid Kubernetes cluster, multi-cluster monitoring, security, etc, one should get trained only by a practitioner or professional trainer.
One need not pay from one’s own pocket for advanced training, as this can be quite expensive, unless there is a real use case for which it is needed. In that case, your organisation will be happy to sponsor it.
In a nutshell, one must first get the basics right and then go for the advanced topics by choosing the right training programme and method.