From Zero to DevOps Engineer - DevOps Roadmap for YOUR specific background

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
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
Info
Channel: TechWorld with Nana
Views: 372,102
Rating: undefined out of 5
Keywords: devops engineer, how to become a devops engineer, devops engineer skills, devops engineer roles and responsibilities, devops roadmap, devops career path, devops career, how to become a devops engineer without experience, how to become a devops engineer from scratch, devops for developers, devops for beginners, learn devops from scratch, devops path, become a devops engineer learning-path, become a devops engineer, techworld with nana, devops toolkit, devops roadmap 2023
Id: G_nVMUtaqCk
Channel Id: undefined
Length: 25min 11sec (1511 seconds)
Published: Thu Oct 13 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.