As a DevOps professional, sometimes I forget how
it is getting into DevOps from the perspective of a beginner. So I wanted to create this video
outlining a path I would take if I was starting from zero again. And having the knowledge that I
have now, what would be the most efficient path to get there. So basically what are the steps to
becoming a DevOps engineer, what you need to learn and in which order. I already made a video about
DevOps roadmap, explaining what concepts and tools are part of DevOps, but in this video I wanted to
approach it from a different perspective and show how you can become a DevOps engineer, if you were
starting from zero. And I wanted to make it more individual for the people with the most common
backgrounds of transitioning into DevOps and based on your replies on LinkedIn, I picked five of the
most common backgrounds: system administrators, software developers and engineers, test automation
engineers, network engineers and people with zero or very very little IT knowledge. So if you have
one of those backgrounds, this video will be very useful for you showing your individual
path into the DevOps. So let's get started! Now first in order to understand how to become
a DevOps professional, let's define exactly what skill set you require for that. Software
Development Basics. You need to understand how software developers work and what workflows they
use, how they collaborate on developing features, the modern processes like agile and scrum, what
Git workflow they use and generally understand what software development life cycle covers from
idea to code all the way to releasing it to the end users. Now here it's important to mention that
you don't need to be a software developer or the one implementing those agile and scrum processes.
You need to understand how those things work on a high level, conceptually. The next one is software
deployment. Once the feature is developed, it needs to be released to the end users,
which means you need an environment, where your application will be running and available
for the end users and as a DevOps engineer you need to know how to provision and prepare these
environments and how to maintain them. And for that you need knowledge of general server
administration like creating virtual machines, mostly with Linux operating system, installing
software, doing patches, configure networking on premise as well as on cloud and so on. And as
part of the more modern infrastructure concepts you need to understand how to work with containers
and the most popular container technology, which is Docker and for projects with tens
or hundreds of Docker containers you need to know how to work with container orchestration
platforms like Kubernetes, which is the most popular one nowadays and again, all these tools
can be used either on premise or on cloud. And if you're working on cloud like AWS, which is the
most popular and most used cloud platform for now, you also need to know AWS specific services and
how to manage the whole deployment infrastructure on AWS and connecting all these pieces together.
And kind of the heart of the DevOps processes is CI CD pipelines. How do you connect these two
software development and deployment? In other words, when software is being developed, how
do you deploy those developed features? It's not just about deploying it to the deployment
environment, we don't just take it and throw it on there. Why? Because humans make mistakes,
either because of lack of knowledge in some area or just accidentally. So instead we add
many gatekeepers before the deployment, so the deployed code needs to go through various
of these gate checks in order to be allowed on the final environment and that's what the
DevOps CI/CD pipeline is for: testing code, packaging it and deploying all the way to the end
environment to deliver it to their end users. Now what are those gatekeepers. Well, testing the
code quality, testing code logic, testing that it didn't break any previously existing code,
checking for any security issues, testing that it functions as it's supposed to etc. So tools
for implementing this whole CI/CD pipelines with all those gatekeepers is a super important
skillset. So knowing any CI/CD tools like Jenkins, Gitlab cicd, GitHub actions, Circle CI and so on.
And most importantly how to integrate this tool with all other technologies to test things,
deploy the code and so on is very important. Now again we are humans and we can assume that
even with the most cautious measures and a lot of extensive testing, we can't always 100% test
every single aspect of the deployment and some issue may slip through in the production. That's
why we have bugs in production and that's okay as long as we have a plan for handling a bug or
issue when it appears in production. So again a part of DevOps skillset is to create a process of
handling discovered issues in production instead of having a panic mode. So what does that skillset
include? Well it's a thing called "monitoring and observability". So in the last stage of CD or
continuous deployment, after deploying the code changes, we don't just say: "hey we're done,
that's deployed so now let's move on to the next task", instead we observe and monitor closely
what happens. If some user encounters an error, if something crashes or doesn't work, so
we know we need to proactively fix that. So maybe for a couple of hours or within the next
days of deployment, we're actively looking and observing whether some kind of issue appears in
production. And finally the last missing piece of really conquering DevOps is automating all this.
So basically you automate most of your own work and work of other engineers, automating especially
in areas where the same task needs to be repeated. Let me give you some examples: for every new code
released you always need to test your application you always need to check for security you always
need to package and deploy application changes so these tasks should happen automatically
so you make sure to execute automated tests that developers or test Engineers write you have
automated Security checks quality checks and you have scripts or automation code that deploys that
code to the end environment so the CI CD pipeline deploys the application so you don't deploy the
application locally from your own machine but rather CI CD pipeline deploys it automatically
another one is monitoring obviously you don't want to be sitting in front of a computer and
observing and waiting to see if something breaks in the application instead you want to deploy
tools that monitor the application and notify you if something's off or if something happens
so monitoring and observability tools go under your devops to belt as well but in devops we don't
stop there with automation we also automate things that don't repeat on every code change deployment
but still prove to be incredibly efficient so for example provisioning infrastructure or setting
up a kubernetes cluster is not something you do very often but we still automate it in devops why
because we want to be able to easily replicate our deployment environments if they get corrupted
or if we need multiple staging environments like Dev test and production and generally having
everything in code versus some manual scripts that some person on a team executes and no one knows
about has many benefits first of all encouraging collaboration in a team on infrastructure
configuration documenting changes to infrastructure transparency of the infrastructure
State and accessibility to that information in a centralized Place versus being scattered around
on people's local machine machines in the form of some scripts this is an infrastructure as
code concept as part of the whole movement towards automating all workflows to make them
more efficient and some of the most popular tools in this area are terraform ansible puppet
and so on so what you see here is the complete devops skill set and exactly what we teach in our
six month devops bootcamp so these are the basic fundamental processes and respective tools that
are part of devops so any other devops tools you may come across and there are hundreds of them are
simply optimizing or improving different parts of this workflow so having those devops skills is the
final goal and you're starting from zero but many of you are transitioning to devops or starting
your devops journey having various different backgrounds so the zero or that starting point
is different for all of you and as I mentioned at the beginning you may be assist system
administrator or software engineer or QA engineer Etc or may not have an I.T background at all and
want to transition into devops so now I want to show you how you can transition to devops and
basically learn all these tools that I just mentioned starting from your specific background
starting as a systems administrator if you are 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 so working with operating systems installing and running software
security networking configuration Etc is already familiar for you some of the other tasks you do
as systems administrator or things like monitoring systems Health backup and Disaster Recovery
installing and patching servers and so on in smaller projects you may have to also do database
Administration Network Administration Security Administration all of these are very useful
skills if you want to become a devops engineer so you already have a lot of skills you can use
in the deployment and operations side of devops this includes Day Zero activities such as initial
setup of the infrastructure but also day one tasks like maintaining and operating this infrastructure
many systems administrators also know scripting so that will be helpful in automation part of
devops so as a systems administrator you already have a very good foundation to get into DeVos
however the big part missing here to start in devops is learning the software development
Basics understanding the git workflows how developers work and so on now very important to
note even though some devops Engineers do know how to program it's not an essential skill in devops
because as a devops engineer your main task is not developing and programming the application it's
creating automated processes for delivering the developed software to the end users efficiently
with as few bugs and issues as possible but to be able to deliver the Apple changes of course
you need to understand how that application was built developed and how it works before moving
on I want to give a shout out to CrowdSec, who made this video possible. CrowdSec is a
free open source and collaborative intrusion prevention and detection system which is being
developed for devops in order to help you in your day-to-day responsibilities crowdsec acts
on two levels locally on your servers where crowdsec agent analyzes activity logs in real time
identifies suspicious Behavior acts upon IPS and shares the data with the community and globally
by aggregating and redistributing block lists to the community to preventively block all flagged
IPS on every crowdsec users machine crowdsec is easy to deploy and integrated with a large number
of services to ensure you are protected regardless of your ITR architecture with the console you
have a cockpit to monitor your server's security and can visualize intrusion attempts get alerts
on unusual activities and obtain Intelligence on IP addresses so if you are looking for such kind
of protection and would like to benefit from the biggest CTI Network check them out the link is
in the video description starting as a software developer if you started as a software developer
again you have a pretty good background because you already know an important part of devops
which is the software development processes and how these work but most probably you are missing
skills in server management so you need to start by learning about virtual machines creating and
configuring servers configuring infrastructure security networking Etc and since most modern
applications run on cloud you need to also learn how to do all these on 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 and of course your programming skills will be great help in writing automated
Scripts for various parts of the application development and deployment processes another
common background people have when transitioning into devops is a test automation engineer now 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 definitely reuse many of your skills in devops as a test engineer you
most probably know how the software developers are working like the agile processes jira workflows
and so on and as part of your test automation knowledge you understand the different testing
Scopes like testing on code level testing the whole application on a more abstract level testing
how the application integrates with other services Etc 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 the pipeline and streamline delivering your application changes
all the way to the production environment you need extensive automated testing because as soon
as you need a human element you will break the automated Pipeline and add a bottleneck and since
you know how to write automated tests in various programming languages your skills in various
testing Frameworks is definitely helpful here for scripting and coding some automation parts
of devops processes so let's say it won't be completely new to you the last honorable mention
of a background going into devops is network engineering this is probably the farthest from
devops compared to the other three that I just mentioned but you still have some skills that
you can bring into devops as a network 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 but as most companies are moving their infrastructure to Cloud many
Network Engineers transition to Cloud network engineering so they do all of that on cloud
platforms and instead of configuring rods and switches and networks on on-premise infrastructure
they configure virtual routes and virtual switches and virtual networks on cloud infrastructure with
networking and virtual networking knowledge you have an advantage to understand meta working in
Virtual machines and containers which is a big part of how modern applications are running so
it will be easier for you to understand Docker and kubernetes networking for example and these
are usually pretty difficult parts to manage and troubleshoot or secure when you're configuring
and maintaining the deployment environments with kubernetes and containers on them so you can
definitely use your knowledge and expertise in this area 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 now all of these backgrounds we actually considered when creating
our devops bootcamp curriculum so we added the Linux Basics module where you learn everything
about operating systems and Linux as well as networking uh bash scripting and so on everything
from scratch so if you are a software developer or a test automation engineer this will give you the
prerequisite knowledge and foundation for learning things like provisioning deployment servers
configuring servers and preparing for deployment Etc as well as how to administer some devops
tools like Jenkins and kubernetes cluster and so on obviously as a system administrator you
would skip that part but instead you would need to learn git and how to work with Git workflows
to use it for writing infrastructure as code for example you also need to learn about build
and packaging tools to package the applications written in various languages so as you see there
are some prerequisites you need to have in devops and various backgrounds bring various of those
prerequisites with them and we included those prerequisites as well for those missing them but
after those prerequisites are fulfilled the path pretty much looks the same for everybody because
tools like kubernetes terraform eks even Docker are pretty new to many professionals and there is
no one profession that was specifically dedicated to those tools previously so everyone needs to
learn them no matter what their I.T background is finally we also get many questions about
starting our Devil's bootcamp with very little to no it background which means there are
probably many of you watching this video who are thinking about getting into devops without much
it pre-knowledge and want to know what the path is to devops now this is a very tricky one because
devops is not really the 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 because devops is about automating processes and
software development and deployment that people have done manually for a very long time 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 so if you're completely new to it and already know
you want to eventually become a devops engineer here then you should start by understanding the
complete software development life cycle first and the good news is it's easier than it sounds you
don't need to go and learn software development for month for that and you definitely don't need
to become an expert in managing infrastructure and configuring servers if you learn the right
things you can actually do it in a relatively short time go find some example projects where
you create a super simple application and learn how to deploy to a virtual server so learning
the steps of developing packaging maybe even automatically testing and then deploying an
example application on a Linux server on a cloud platform will actually be a very good
foundational knowledge for building on it to learn devops in this process you will learn
the basics of creating an application you will learn how to create a virtual machine with a Linux
server on some easy to use cloud platform and host your application there and then repeat the whole
process once more simulating making an update to your application and this will teach you basic
skills for each part of the software development process but most importantly it will make you
understand the complete workflow of what goes into that you don't need any fancy tools for
that no Jenkins no fancy programming framework not even git again these are to understand
the basic concepts and then you can start learning those devops tools like Jenkins Docker
kubernetes and so on because this phase is not about learning the tools it's about understanding
the concepts and the complete workflow after that go ahead and watch some tutorials about agile
and scrum methods and how software development teams collaborate and work in software development
projects and these skills will actually be enough to start our DevOps bootcamp because Linux gets
in all these basic tools you actually learn in our bootcamp 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 Etc and because of a lot of requests
for our bootcamp from it beginners we actually also decided to create a complete
bootcamp prerequisites course so if you're interested in that you can already sign
up to get notified when the course is out so you can of course learn this as I said
all by yourself following those steps and put a learning path together by yourself or you
can use our prerequisites course when it's out so to summarize there are four phases first one
getting the 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 second step is learning
cloud Docker and kubernetes after learning the prerequisites you can already get started with
important devops skills of working with containers and container orchestration tools so basically
learning Docker and kubernetes to help your teams deploy and efficiently run the application
kubernetes itself is a very complex tool so it may take some time to master it and make it production
ready and since most of the modern applications and kubernetes clusters are running on cloud
you need to learn Cloud infrastructure how to work with Cloud infrastructure how to configure
it how to scale it and so on the third step is automation once you have mastered the above skills
and Technologies it's time to learn how how to optimize and automate the existing processes and
as a devops professional automation skills are one of the most important ones as the heart of devops
learning to build cicd pipelines is an essential skill and finally you will learn how to automate
parts of the complete DevOps processes one by one using the concepts and tools of what's called
access code including infrastructure as code, configuration as code, security as code, policy
as code and so on which basically means just automating everything in the form of code and
number four is just go from there devops is evolving and new tools are being developed all the
time so as a devil's 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 efficient I also
have a video where I explain how I personally learn new technologies fast and efficiently
which I will also link right here now I hope this information is going to be useful for you
and I was able to show you what your next steps are for getting into devops and with that thank
you for watching and see you in the next video