DevOps Roadmap - How to become a DevOps Engineer
Tags: devops, career, beginners, cloud
Published: 2021-01-17 16:40:29

A roadmap of how to become a DevOps engineer in 2023
---------
{% youtube 9pZ2xmsSDdo %}
----------

###What does DevOps actually mean? And what is a DevOps Engineer? 🤔 ###
DevOps is a software development approach involving Continuous Development, Continuous Testing, Continuous Integration, Deployment and Monitoring.

The above process spans across the traditionally siloed teams of Development and Operations and DevOps tries to remove the barriers between them.

So, a DevOps Engineer works basically with the **DEV**elopment and **OP**erations team. It's the link between those 2 main parts.

###Concepts vs Tools 👀 ###
DevOps includes concepts like Build Automation, CI/CD, Infrastructure as Code, etc.. And there are numerous tools that enable these concepts to be implemented. And because of these vast number of tools, it can get confusing and overwhelming. 

The most important thing is to understand the concepts and learn 1 specific tool for each category. E.g. when you already know what CI/CD is exactly and know how to use Jenkins, it will be easy to learn an alternative tool as well.

## ⭐️ DevOps Roadmap to get started as a DevOps Engineer ⭐️  ##
Let's get straight into the roadmap of what skills you need to learn.

### ⭐️ 1) Concepts of Software Development ###
As a DevOps engineer you will not be programming the application, but as you are working closely with the development team to improve and automate tasks for them, you need to understand the concepts of:
- how developers work
- which git workflow they are using
- how applications are configured
- automated testing

### ⭐️ 2) Operating Systems & Linux Basics 🐧 ###
As a DevOps engineer you are responsible for preparing the infrastructure (servers) on which the application is deployed.

And since most of the servers are Linux servers, you need to know Linux OS and feel comfortable using the Command Line Interface. So you need to know:
- basic Shell Commands
- Linux File System
- basics of how to administer a server
- SSH Key Management
- installing different tools on servers


### ⭐️ 3) Networking & Security ###
You also need to know the basics of Networking & Security in order to configure the infrastructure, e.g.:
- configure Firewalls to secure the application
- understand how IP addresses, ports and DNS works
- Load Balancers
- Proxy Server
- HTTP/HTTPS

>However, to draw a line here between DevOps and IT Operations: You are **not** the SysAdmin. So you don't need advanced knowledge here. It's enough to understand and know the basics, because there are own professions like SysAdmins, Networking or Security Engineers

### ⭐️ 4) Containerization - Docker 🐳 ###
As containers are becoming the new standard, you will probably run your application as a container. This means you need to generally understand:
- concepts of virtualization
- concepts of containers

**Which tool to learn?**
DOCKER - the most popular container technology today

👉🏼 [FREE Docker Course](https://youtu.be/3c-iBn73dDE)


### ⭐️ 5) Continuous Integration and Deployment (CI/CD) 🔁 ###
In DevOps, all the code changes, like new features and bug fixes of developers, should be integrated in the existing application and deployed to the end user **continuously** and in an **automated** way. Hence the term: Continuous Integration and Continuous Deployment.

And setting up a complete CI/CD pipeline is the main task and responsibility of a DevOps engineer. 

So when the feature or bugfix is done, a pipeline running on a CI server (e.g. Jenkins) should be triggered automatically, which:
- *runs the tests*
- *packages the application*
- *builds the Docker Image*
- *pushes the Docker Image to an artifact repository* and finally 
- *deploys the new version to a server (which could be a DEVELOPMENT, TESTING or PRODUCTION server)*

![CICD Pipeline](https://dev-to-uploads.s3.amazonaws.com/i/xileuiue1yw0be8t8bxi.png)

So skills you need to learn here:
- setting up the CI/CD server
- build Tools & Package Manager Tools to execute the tests and package the application
- configuring artifact repositories (like Nexus)

Of course, there can be more steps integrated, but this flow represents the core of the CI/CD pipeline and is the heart of the DevOps tasks and responsibilities.

**Which tool to learn?**
Jenkins is one of the most popular. Others: Bamboo, Gitlab, TeamCity, CircleCI, TravisCI


### ⭐️ 6) Cloud provider ⛅️ ###
Nowadays many companies are using virtual infrastructure on the cloud, instead of managing their own infrastructure. These are Infrastructure as a Service (IaaS) platforms, which offer a range of services, like backup, security, load balancing etc. 

These services are **platform-specfic**. So you need to learn the services of that specific platform. E.g. for AWS you should know the fundamentals of:
- IAM service - managing users and permission
- VPC service - your private network
- EC2 service - virtual server

AWS has much more services, but you only need to learn the services you/your company actually needs. E.g. when the K8s cluster runs on AWS you need to learn the EKS service as well.

AWS is the most powerful and most widely used one, but also most difficult one.

**Which tool to learn?**
AWS is the most popular one. 
Other popular ones: Azure, Google Cloud

### ⭐️  7) Container Orchestration - Kubernetes ⎈ ###
As I mentioned before, containers are widely used and in big companies hundreds or thousands of containers are running on multiple servers. This means these containers need to be managed somehow.

For this purpose there are container orchestration tools and the most popular one is Kubernetes. So you need to learn:
- how Kubernetes works
- administer and manage the Kubernetes cluster
- as well as deploy applications in it

**Which tool to learn?**
KUBERNETES - most popular

👉🏼 [FREE Kubernetes Course](https://youtu.be/X48VuDVv0do)

### ⭐️  8) Monitoring and Log Management 🔍 ###
Once software is in production, it is important to monitor it to track the performance, discover problems in your infrastructure as well as application. So one of your responsibilities as a DevOps engineer is to:
- setup software monitoring
- setup infrastructure monitoring, e.g. for your Kubernetes cluster and underlying servers.

**Which tool to learn?**
Prometheus, Nagios ...

👉🏼 [Prometheus Monitoring explained](https://youtu.be/h4Sl21AKiDg)

### ⭐️  9) Infrastructure as Code ###
Manually creating and maintaining infrastructure is time consuming and error prone. Especially when you need to replicate the infrastructure, e.g. for a Development, Testing and Production environment. 

In DevOps again, we want to automate as much as possible and that's when Infrastructure as Code comes into the picture.
With IaC we use code to create and configure infrastructure and there are 2 types of IaC tools you need to know:
- infrastructure provisioning
- configuration management

With these tools it's easy to replicate and recover the infrastructure. So you should know 1 tool in each category to make your own work more efficient as well as to improve the collaboration with your co-workers.

**Which tool to learn?**
Infrastructure provisioning: Terraform is the most popular one
Configuration Management: Ansible, Puppet, Chef

👉🏼 [Terraform explained](https://youtu.be/l5k1ai_GBDE)
👉🏼 [Ansible explained](https://youtu.be/1id6ERvfozo)

### ⭐️  10) Scripting Language 👩🏻‍💻 ###
Since you are closely working with developers and system administrators to also automate tasks for development and operations, you will need to write scripts and small applications to automate tasks. 

In order to be able to do that you need to know a scripting or programming language. 
This could be an **OS-specific scripting language** like bash or Powershell.

But what's more demanded is an **OS-independent language** like Python, Ruby or Go. These languages are more powerful and flexible. If you know one of these, it will make you much more valuable in the job market. 

**Which tool to learn?**
Python: currently the most demanded one, which is easy to learn, easy to read and has many libraries available.
Others: Ruby, Go, NodeJS

👉🏼 [FREE Python Course](https://youtu.be/t8pPdKYpowI)


### ⭐️  11) Version Control - Git ###
You write all these automation logic mentioned above as code. 
Just like the application code of developers, you manage this code and configuration files also with a version control tool, like Git.

**Which tool to learn?**
GIT - most popular and widely used


-----------

### Good luck on your DevOps journey! 🎉 💪 ###

----------

### [Complete DevOps bootcamp to start your career as a DevOps engineer 🚀](https://www.techworld-with-nana.com/devops-bootcamp) ###
 
►   More infos here: https://bit.ly/3gEwf4V
►   Reduced EARLY BIRD prices until 28th of February  🎉

As the whole process is overwhelming, we constructed [this program](https://www.techworld-with-nana.com/devops-bootcamp) considering the above roadmap with the focus to get you job-ready and to help you **learn these concepts and tools faster and more efficiently**.

The bootcamp focuses on **practical hands-on demos** to follow along and to actually get confident to use these tools.

-----------

**Like, share and follow me** 😍 for more content:
- [YouTube](https://www.youtube.com/channel/UCdngmbVKX1Tgre699-XLlUA?sub_confirmation=1)
- [Instagram - for behind-the-scenes and previews](https://www.instagram.com/techworld_with_nana/)
- [Twitter](https://twitter.com/Njuchi_)
- [Private FB group](https://www.facebook.com/groups/techworldwithnana)
- [LinkedIn](linkedin.com/in/nana-janashia)