Interested to find out what skills are needed to chase a DevOps/Cloud engineer role? Let’s explore together the chaotic landscape around the DevOps model.
These days everyone has its own definition of DevOps. For me, it’s an umbrella term. It gathers
everything around the development software lifecycle and the effort to continually improve the software & value delivery.
It’s an attempt to bring together Operations and Development, two traditionally separate teams with different perspectives and priorities. Developers want to bring new features to the table as fast as possible while Ops teams focus on stability and want to ensure that everything keeps running.
Combining these two roles, we end up with a hybrid one. A role of someone that shares the pains and responsibilities of both teams and tries to align them in the same direction. Which is
to build a battle-tested software development & delivery process focused on operational excellence that brings value as soon as possible.
Originally, DevOps was supposed to be a culture that spreads equally between developers and operations rather than a specific role but the reality is different.
Based on the above, I’ll try to gather a set of tools and technologies a DevOps engineer should know. Of course, this list is highly affected by my personal taste and experiences and it’s not supposed to be a thorough one, but a guide towards the DevOps path.
I’ll by analyzing overtime each of these subjects in detail as separate articles so stay tuned.
My grouping of consists of these categories:
OS & server management,
Infra as a code ,
Knowledge of at least one programming language, mainly for automation and scripting.
Go would be my two main picks here.
Python due to its wide adoption, ease of learning, suitability for automation, and popularity with anything data related.
Go because it’s fast, well-scaled, focused on system programming and has given birth to lots of foundational DevOps tools like
Istio among others.
OS knowledge & server management
The main focus here should be
Linux as the OS that serves the majority of systems and workloads. Mastering Linux takes time and practice and there is no shortcut.
OS administration is the basic skill here since it provides you with the ability to navigate Linux and perform various operations.
bash scripting, text manipulation tools like
grep etc., text editors,
systemd, resources management, filesystems,
process management & monitoring.
Google Cloud are my choices here, two of the most used cloud platforms. The main point is to have a solid understanding of any cloud provider’s tools, processes and be able to design and operate cloud-based solutions comfortably.
So far the choice here is quite straightforward,
Docker is the main tool around. Check my Docker mini-tutorial series here for more info.
No need to be a network engineer but a solid basis of networking and how some fundamental protocols function is essential.
Generic knowledge around how
FTP work along with some basic network debugging skills in Linux with tools as
ssh are also some important topics.
Basic ideas around webservers and their usage.
Apache the two obvious choices here.
Knowledge of the concepts of
reverse and forward proxies&
loadbalancer and the ability to configure them are super handy.
Infrastructure as a Code
configuration management together here and my selection consists of
Treat your servers like cattle not pets. Spawn them, use them, and replace them auto-magically.
Continuous Integration & Continuous Delivery/Deployment
Lots of new exciting tools to pick from. My personal taste leans more towards newer tools like,
Github Actions and
Knowledge on how to set up and maintain automated digital pipelines is at the core of a DevOps role.
Observability is crucial in modern complex systems so knowing your way around infrastructure and application monitoring goes a long way.
The most popular choices here include
Elastic Stack among others.
Versioning, code repository & collaboration
Versioning is a building block for various DevOps processes as without it we wouldn’t be able to achieve a high level of automation and digital pipelines.
Gitlab are the two main players on this subject.
For more complex solutions with numerous containers, a container orchestration solution is a necessary evil.
The industry standard here is
kubernetes but is a complex tool that requires practice.
Docker swarm can also be an easier alternative to begin with.
Alright, that was it, my quick guide around the DevOps jungle. Stay tuned for more details on each subject and tool.