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: programming language, OS & server management, cloud , containers , networking , web servers, Infra as a code , CI/CD , monitoring versioning, container orchestration.

Programming language

Knowledge of at least one programming language, mainly for automation and scripting. Python or 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 Docker, Kubernetes, Terraform, 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.

Start with ubuntu, centos or fedora. OS administration is the basic skill here since it provides you with the ability to navigate Linux and perform various operations.

Practice in bash scripting, text manipulation tools like awk, sed, grep etc., text editors, systemd, resources management, filesystems, process management & monitoring.

Cloud

AWS or 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.

Containers

So far the choice here is quite straightforward, Docker is the main tool around. Check my Docker mini-tutorial series here for more info.

Networking

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 HTTP/HTTPS, SSL/TLS, FTP work along with some basic network debugging skills in Linux with tools as traceroute, tcpdump ping, nmap netstat etc. Firewall, routing, ssh are also some important topics.

Web Servers

Basic ideas around webservers and their usage. Nginx or 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

I’ll group IAC and configuration management together here and my selection consists of Ansible and Terraform.

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, Circle CI, Github Actions and Gitlab CI.

Knowledge on how to set up and maintain automated digital pipelines is at the core of a DevOps role.

Monitoring

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 Grafana, Prometheus, 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.

Github & Gitlab are the two main players on this subject.

Container orchestration

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.