DEVOPS
ROADMAP
TABLE OF CONTENTS
I. START HERE 3
II. DEVOPS ROADMAP
01 - Concepts of Software Development 4
02 - OS and Linux Basics 5
03 - Containerization - Docker 6
04 - CI/CD Pipelines 7
05 - Learn 1 Cloud Provider 8
06- Container Orchestration - Kubernetes 9
07- Monitoring and Observability 10
08 - Infrastructure as Code 11
09 - Scripting Language 12
10 - Version Control - Git 13
III. STARTING FROM...
Systems Administrator 15
Software Developer 16
Test Automation Engineer 17
Network Engineer 18
No or Little IT Background 19
IV. RECAP AND RESOURCES
Summary - DevOps Roadmap 21
Start Here
This is a step by step path I would take as a DevOps professional and educator, if
I was starting from zero again. Showing you what would be the most efficient
path to become a DevOps engineer based on the knowledge that I have now.
I hope with this I can help you in this highly rewarding, but challenging journey
into DevOps.
And I wanted to make it more individual for you
based on your background from which you are
transitioning into DevOps:
system administrator
software developer
test automation engineer
network engineer
someone with zero or very little IT knowledge
So after the DevOps roadmap, you will find
information on how to start in DevOps having any
of these backgrounds.
One important thing beforehand:
Since DevOps covers the whole software development lifecycle, it
means you work with lots of technologies. Plus DevOps is still
evolving and there are lots of new tools being developed all the
time.
So you have to be comfortable with constantly learning and
expanding your knowledge, even after you have become a DevOps
engineer.
01
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 and
collaborate
(Agile, Jira workflows)
What Git workflow
they use And generally understand what the
whole software development lifecycle
covers from idea to code, all the way to
releasing it to the end users!
How applications are
configured (Build &
packaging Tools)
Automated testing and
test scopes
02
OS & Linux Basics
As a DevOps engineer you are
responsible for preparing and
maintaining the infrastructure (servers)
on which the application is deployed.
So you need to know the basics of how
to administer a server and install
Since most servers us Linux OS, you
different tools on it.
need to know and feel comfortable
using Linux, especially its Command
Line Interface.
Basic concepts of Operating Systems
you need to understand:
You also need to know the basics of
Shell Commands Networking & Security in order to
configure the infrastructure, like:
Linux File System & Permissions Configure Firewalls to secure access
Understand how IP addresses, ports
and DNS works
SSH Key Management Load Balancers
Proxies
HTTP/HTTPS
Virtualization
However, to draw a line here between DevOps and IT Operations: You don't
need to be the SysAdmin. So no advanced knowledge of server
administration is needed here. It's enough to know the basics. There are own
professions like SysAdmins, Networking or Security Professionals for more
advanced use cases.
03
Containerization - Docker
As containers have become the new
standard of software packaging, you will
most probably run your application as a
container.
This means you need to generally
understand: Docker is by far the most popular
concepts of virtualization container technology!
concepts of containerization
how to manage containerized
applications on a server.
Some things you should know:
Run containers
Inspect active containers
A container is a Docker Networking
standard unit of
Persist data with Docker Volumes
software that
packages up code and Dockerize apps using Dockerfiles
all its dependencies Run multiple containers using
so the application runs quickly and Docker-Compose
reliably on any computing Work with Docker Repository
environment.
Containers and virtual machines have similar resource isolation and allocation
benefits, but function differently. VMs virtualize the whole OS. Containers
virtualize only the application level of the OS. Therefore, containers are more
lightweight and faster.
04
CI/CD Pipelines
CI/CD is kind of the heart of DevOps.
In DevOps, all code changes, like new
features or bug fixes, need to be
integrated in the existing application and
deployed for the end user continuously
and in an automated way. There are many CI/CD platforms out
there. The most popular one currently
Hence the term: is Jenkins
Continuous Integration and Continuous
Deployment (CI/CD)
Other popular ones: GitLab, GitHub
When the feature or bugfix is done, a
Actions, Travis CI, Bamboo
pipeline running on a CI server (e.g.
Jenkins) should be triggered
automatically, which:
Skills you need to learn here:
Setting up the CI/CD server
1. runs the tests
Integrate code repository to trigger
2. packages the application
pipeline automatically
3. builds a container Image
Build Tools & Package Manager Tools
4. pushes the container Image to an
to execute the tests and package the
image repository application
5. deploys the new version to a server Configuring artifact repositories (like
Nexus) and integrate with pipeline
05
Learn one Cloud Provider
Nowadays many companies use virtual
infrastructure on the cloud, instead of
managing their own infrastructure. These
are Infrastructure as a Service (IaaS)
platforms, which offer a range of
additional services, like backup, security,
load balancing etc. AWS is the most powerful and most
widely used IaaS platform, but also a
difficult one.
Other popular ones: Microsoft
Azure, Google Cloud
AWS has loads of services, but you only
These services are platform-specific. So need to learn the services you/your
you need to learn the services of that company actually needs. E.g. when the
specific platform and learn how to K8s cluster runs on AWS you need to
manage the whole deployment learn the EKS service as well.
infrastructure on it.
E.g. for AWS you should know the
fundamentals of:
Once you learn one IaaS
IAM service - managing users and
platform, it's easy to learn
permissions
others
VPC service - your private network
EC2 service - virtual servers
06
Container Orchestration -
Kubernetes
Since containers are popular and easy to
use, many companies are running
hundreds or thousands of containers on
multiple servers. This means these
containers need to be managed
somehow.
Kubernetes (also known as K8s) is the
For this purpose there are container most popular container orchestration
orchestration tools. tool
So you need to learn:
How Kubernetes works
How to administer and manage the
K8s cluster
How to deploy applications on K8s
Container orchestration tools like Specific K8s knowledge needed:
Kubernetes, automate the deployment, Learn core components like,
scaling and management of
Deployment, Service, ConfigMap,
containerized applications.
Secret, StatefulSet, Ingress
Kubernetes CLI (Kubectl)
Persisting data with K8s Volumes
Namespaces
07
Monitoring &
Observability
Once software is in production, it is
important to monitor it to track the Prometheus:
performance, discover problems in your A popular monitoring
infrastructure and the application. and alerting tool
So one of your responsibilities as a
DevOps engineer is to: Grafana:
setup software monitoring Analytics and
setup infrastructure monitoring, e.g. interactive visualization
for your Kubernetes cluster and tool
underlying servers
visualize the data
You should also understand how
systems can collect and aggregate data
with the goal of using it to troubleshoot,
gain business insights etc.
ELK Stack:
A popular log
management stack
08
Infrastructure as Code
Manually creating and maintaining
infrastructure is time consuming and
Terraform is the most
error prone. Especially when you need
popular infrastructure
to replicate the infrastructure, e.g. for a
provisioning tool
Development, Testing and Production
environment.
In DevOps, we want to automate as
much as possible and that's where
Infrastructure as Code comes into the Ansible is the most
picture. popular configuration
management tool
Benefits of having everything as code :
Encourage collaboration in a team
Document changes to infrastructure
DEV TEST PROD
Transparency of the infrastructure
state
With IaC we use code to create and
configure infrastructure and there are 2 Accessibility to that information in a
types of IaC tools you need to know: centralized place versus being
scattered on people's local machines
1. Infrastructure provisioning in the form of some scripts.
2. Configuration management
09
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 them.
Python is one of the most popular
For that, you will need some scripting or programming languages and easy to
basic programming skills. learn
Examples: utility scripts like flushing the
There are many programming languages,
cache, starting the builds and
but I would recommend starting with
deployments etc.
Python. Python is widely used, easy to
learn and used for many different use
cases, especially in DevOps.
This could be an OS-
specific scripting language
like bash or Powershell.
You don't need the same level
But what's more demanded is an OS- as a software developer.
independent language like Python, Ruby Learning how to write scripts
or Go. with Python will be enough.
And the good thing is, programming
concepts stay the same, so when you
learn one language well, you can easily
These languages are more powerful and learn new ones quite quickly.
flexible. If you know one of these, it will
make you much more valuable as a
DevOps engineer.
10
Version Control - Git
You write all automation logic as code.
And just application code, automation
code should also be managed and hosted
on a version control tool, like Git.
You need to learn Git. It's the most
popular and widely used version
control tool
Infrastructure as Code
K8s config files
Your files are stored centrally in a remote
Python scripts Git repository on the web. Most popular
Git repositories are GitHub and GitLab.
Git is a CLI Tool, which you install locally.
It enables the tracking of changes in the
source code and enables better
collaboration on code.
So you need to learn: Git repository
The core Git commands, like git clone,
git branch, git pull/push, git merge etc
But also how to collaborate on a
Do NOT store secrets and
project, like create pull requests, code
passwords in your Git
reviews, branching
repository
Starting from..
Having those DevOps skills is the final goal, but many of you start
your DevOps journey having various different backgrounds.
So the starting point is different for all of you. You may be starting
as a systems administrator or software engineer or test
automation engineer etc or may not have an IT background at all
and want to transition into DevOps:
Systems Administrator Software Developer
Test Automation Engineer Network Engineer
Starting as a...
Systems Administrator
You know how to administer servers and other
systems. So you already have some skills in:
setting up infrastructure
configuring and preparing it for deployment
working with operating systems, installing
and running software
security, networking configuration
Systems Administrator
Some other tasks you might do are things like:
monitoring systems,
health, backup and disaster recovery,
database administration,
network administration or
security administration
So you already have a lot of skills you can use
in the deployment and operations side of
DevOps.
The big part missing here to start in DevOps is
learning the software development basics:
Understanding the Git workflows
How developers work
How to create a CI/CD pipeline
Starting as a...
Software Developer
If you are a software developer, you have a
pretty good background, because you already
know important parts of DevOps, which are
software development workflows and release
pipelines.
Your programming skills will also
Software Developer be great help in writing automated
scripts for various parts of the
application development and
deployment processes.
But you are missing skills in server management.
So you need to start by learning about:
Linux, OS basics and virtual machines
creating and configuring servers
configuring infrastructure security,
networking etc.
And since most modern applications run on cloud, you need to learn how to do all
these on a cloud infrastructure.
So that would be your starting point when learning DevOps as a software developer.
And once you have that foundation you can build on that by learning about how
containers work on top of the virtual machines and how to run applications in
containers and how to run containers on a platform like Kubernetes etc.
Starting as a...
Test Automation Engineer
Another common background people have
when transitioning into DevOps is a test
automation engineering.
Here you may have a bit more catching up to do
and more skills to learn compared to developers
or systems administrators, but you can
Test Automation Engineer definitely reuse many of your skills in DevOps.
You most probably know how the developers work, like the agile processes, Jira
workflows and so on. And as part of your test automation knowledge you understand
the different testing scopes.
You also understand how to test different aspects of an application and that
knowledge is really helpful for setting up an automated CI/CD pipeline, because in
order to automate and streamline delivering your application changes all the way
to the production environment, you need extensive automated testing:
Like developers, you are missing skills in server management. So
you need to start by learning about:
virtual machines and Linux basics
creating and configuring servers
configuring infrastructure security, networking etc.
Starting as a...
Network Engineer
Another common background
people have when transitioning
into DevOps is network
engineering. This is probably the
farthest from DevOps compared
to the other three, but you still
have some skills that you can
bring into DevOps as a network
Network Engineer
engineer.
As a network engineer you know how to configure devices and networking between
devices. So you have valuable knowledge in configuring networking for
infrastructure on premise.
Transition to Cloud Network Engineer
But as most companies are moving their
infrastructure to cloud, many network engineers
transition to cloud network engineering,
configuring virtual routes, switches etc.
With this knowledge you have an advantage to understand networking in
containers and Kubernetes, which is how most modern applications are
running. Networking in containers and K8s is pretty complex, especially
when we need to secure and troubleshoot those networks.
Some network engineers even know scripting in bash or python for example, which
is another helpful skill when it comes to automation part of DevOps.
So a good starting point for network engineers is to move to cloud
engineering first and then move on to containers and Kubernetes
Starting with...
No or little IT Background
Some people want to get into DevOps having
very little to no IT background. This means there
are probably some of you reading this, thinking
about getting into DevOps without much IT pre-
knowledge and want to know what the path is to
DevOps.
Non IT Background
Now this is a very tricky one, because DevOps is NOT an entry-level profession in
IT. It's not the first thing you learn when you want to get into the IT field.
Now why is that?
DevOps is about automating processes in software
development and deployment lifecycle that
people have done manually before.
This means, before you automate processes and tasks that are done manually, you
first need to understand what those processes and tasks are in the first place. If you
don't understand those, you won't know what you're automating or why you even
need DevOps.
Starting with...
No or little IT Background
1 - Understand complete software
development lifecycle
Go find some example projects, where you create a super simple web application
and learn how to deploy it to a virtual server. In this process you will learn the steps
of developing, packaging, maybe automatically testing and then deploying an
example web application on a Linux server on a cloud platform.
This will teach you the basics of the complete software development lifecycle, but
most importantly it will make you understand each step in the complete workflow
and what goes into that.
2 - How software development teams collaborate
After that, go ahead and watch some tutorials about agile and
scrum methods and how software development teams
collaborate and work in IT projects.
3 - DevOps Pre-Requisites and 4 - DevOps Skills
These skills will actually be enough to start learning DevOps with our
DevOps Bootcamp for example, because in our bootcamp, you actually
learn Linux, Git and all these basic tools from scratch.
But again you need to understand those workflows first in order to
understand, why we're using Git, why we need Jenkins, why we're learning
Linux and scripting, we we use containers etc.
Summary
DevOps Roadmap
1 - Getting the prerequisites right
First step is to get the DevOps prerequisites right. So depending on which background and pre-
knowledge you have, you need to first make sure to get any missing prerequisite knowledge.
So as a system administrator or a network engineer, learn the
software development workflows. As a developer, learn the
basics of infrastructure, virtual servers etc.
Of course with zero IT background, you have to get all this
prerequisite knowledge from server administration to
development first. So you have a more difficult entry, but it is
possible if you know what to learn.
2 - Cloud, Docker, K8s 3 - Automation
After learning the prerequisites, you can As a DevOps professional automation skills are
already get started with important DevOps one of the most important ones. And as the
skills of working with containers and container heart of DevOps, learning to build CI/CD
orchestration tools. So basically learning pipelines is an essential skill.
Docker and Kubernetes to help your teams
deploy and efficiently run the application. Finally you will learn how to automate parts of
the complete DevOps processes one by one
And since most of the modern applications and using the concepts and tools of what's called X
Kubernetes clusters are running on cloud, you as code: IaC, Configuration as Code, Security
need to learn cloud infrastructure, how to work as Code, Policy as Code and so on, which
with cloud infrastructure, how to configure it, basically means just automating everything in
how to scale it and so on. the form of code!
4 - Go from there. Keep learning
DevOps is evolving and new tools are being developed all the time. So as a DevOps professional,
you should learn how to evaluate and test many new tools, always with the same goal to optimize
and automate existing processes and make them more efficient.