How to become a DevOps Engineer in 2021 - DevOps Roadmap

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
in this video we're going to have a look at all the tools and technologies you need to be proficient with to be a successful devops engineer in 2021 so the first practical skill that you're going to want to pick up is a programming language there's a lot of different programming languages out there but when it comes to devops python node and ruby are always common options now if you don't know any of these languages and you're looking to pick up one my suggestion is to go with python it's going to be the easiest one to pick up it's definitely the most popular nowadays and it allows you to build tools and applications really quickly which is really important when it comes to devops now when it comes to learning python there's literally hundreds of different resources out on the internet that you can use my suggestion is to pick a book maybe watch a couple of videos on youtube and then to start building your own scripts and applications python is a pretty simple programming language to learn but you're not really going to get proficient at it unless you're building your own projects so building your own web scraper or something like that is a great way to start up next we have source control and source control is more important than ever nowadays this is a skill set that you should be picking up as you're learning your programming languages and devops tools everything is code nowadays you've probably heard the term infrastructure as code so it's really important to understand source control and how we can store changes to scripts as well as our infrastructure configurations now there's two main things that you should understand with source control there's the get versioning tool and then we have the code repositories the most popular one being github of course and if you're in the it field you've probably run into it before but to really understand all the concepts with them you just need to integrate them into your own projects and get as much exposure as possible the next key concepts that you're going to need to understand is the fundamentals of operating systems and when it comes to devops linux really is king and i say that coming from a windows background myself i'm actually a microsoft certified systems engineer and from what i'm seeing in the industry even companies that are microsoft focused microsoft shops in the past they're introducing more and more linux into their environments so when it comes to linux the key concepts that you need to understand is first the bash shell it's very important to be comfortable in the bash shell and just know how to get things done know how to install software know how to open up ports know how to check to see if a port is open various system administrative stuff like that the next thing that you need to be familiar with is the linux file system you need to be able to understand the linux file system permissions and how to set them and you also need to be familiar with the directory structure you should be able to name off all the directories within a linux file system and be able to name the function of each of these directories the last key component of the basics of linux comes with ssh and understanding ssh key management since devops is an operations role you could potentially be managing thousands of servers and just understanding ssh key management is just really a bare minimum requirement moving on to networking now when it comes to networking the more you know the better but these are the key concepts that i think you need to understand as a bare minimum when starting out in devops the first component is dns resolution most services rely heavily on dns name resolution to work properly you need to be comfortable with how dns name resolution works as well as the tools that you use to troubleshoot dns problems the other basic concepts that you need to understand is just basic networking you need to understand what a subnet is what a gateway is and then you need to be familiar with concepts like dhcp and network address translation for protocols the one that you're going to be using the most is definitely going to be http so you'll need to have a good functional understanding of how it works after you understand those various topics i would then dive into firewalls load balancers and proxy servers for firewalls you should understand the difference between incoming traffic and outgoing traffic what a stateful firewall is as well as what a non-stateful firewall is and then like what the difference is between a layer 3 firewall versus a layer 7. load balancers are pretty self-explanatory when it comes to load balancers probably the most important takeaway is understanding the types of load balancing algorithms that are available for example you have round robin weighted round robin lease connections resource base and just having a fundamental understanding of the differences of those queue types is really important to understand for proxy servers you're going to want to be familiar with what the traffic flow to a proxy server looks like and the difference between a forward and reverse proxy the next section is cloud so there's currently three different major cloud providers and you really just need to understand at least one of these providers once you have the basic understanding of how one of them works it's very easy to pick up the tools that the other ones use they all use similar concepts it's just the naming and interfaces that are a little bit different so my advice is just to pick one and stick with it and the best way to just pick one is if you're already employed find out which one your employer uses and use that one if you're not currently employed or you're still a student then go out and look at the job openings that you're interested in and find out that way which platform they're looking for experience in when it comes to learning these platforms experience is definitely the king so once you've chosen your platform the next step is to get the experience all these platforms provide a free tier or trial tier where you can go out and test the basics of them so what i would do is just bring up your own project maybe host your own website on one of these platforms and that's going to be the best experience you can get don't worry about taking a course or getting certified right away experience is king when it comes to these providers infrastructure as code so this is a huge buzzword that's been picking up more and more momentum over the years and that's with good reason systems and environments can get pretty complex and they always drift away from how they were originally designed in the real world it's expected that documentation gets updated and everyone's in line with the different changes that happened over the years but that's rarely the case and when it comes to troubleshooting these environments you really have no idea how they're actually created you're really just depending on some outdated physio diagram and how some engineer said it was supposed to be set up so the goal of infrastructure as code is to codify the entire infrastructure and this really helps the operations and development teams to understand what's actually in place and what changes are actually made so the next sections of this video are really dedicated to help you learn and understand how to make infrastructure as code a reality so the first concept we're going to head on are containers containers are becoming more and more popular everywhere in the it world and it's really just a key component that you need to understand when you're getting into devops when it comes to learning containers the tool that i recommend starting out with is docker so when it comes to understanding containers just understand that they are environments that you create that your software can run on these containers are super lightweight much more lightweight than say a virtual machine and they're also very easy to transfer example if i build a docker container on my windows machine and then transfer that docker file over to a linux server that's on a totally different architecture and operating system docker can take that container interpret it and create the environment for the application to run on that's a very simplified explanation of what containers are and what they can do for you when it comes to docker and containers i really recommend taking some practical training and learning them from the bottom up i have a course that i do on docker that i will link to it's completely free just keep in mind that it was one of my first videos that i created so the sound quality isn't as good but the content in my mind is great and it's really going to teach you the key concepts that you need to know and understand for docker the next concept you need to be familiar with is container orchestration think of your workload as an orchestra each container is like a musician responsible for their own workload each of these musicians are looking to the conductor for guidance kubernetes is like the conductor to the orchestra let's have a look at a real world example we have three servers available to us kubernetes is installed on all the servers and forms a cluster we then take our containers and organize them into what's called pods pods contain one or more containers in our example we have two pods each containing three containers of a web application one is for the production instance of the application while the other is for the development instance through kubernetes we can assign pods to the worker nodes kubernetes make sure that the workload is distributed throughout the nodes if any of the nodes go offline kubernetes can make sure the workload is moved to another node when it comes to kubernetes there's a lot to know and learn before you get started you'll need adequate knowledge of docker and containers after that the best suggestion is to create your own lab environment you can either create your own three node cluster or you can install minicube which allows you to virtualize three node cluster on a single server if you're looking for a more simple option just to get your feet wet with container orchestration you may want to look at docker swarm it'll allow you to get your feet wet without going into all the complexities that come with kubernetes to truly have infrastructure as code we need to provision our servers and network as code that's where tools like terraform come in terraform is the tool for building changing and versioning infrastructure safely and efficiently it allows you to completely codify your infrastructure by creating a plan file this plan file allows you to create change or remove components of your infrastructure no matter what cloud provider you're using terraform is also an idiom potent tool and in devops this is a term that you should be very familiar with that means it's aware of the current state of your system and it will only make the changes that it needs to terraform is definitely a tool that's going to see more frequent use in the upcoming years so once you have your infrastructure provisioned the next step is to make sure that everything is configured and that's where configuration management tools come into play when it comes to configuration management the most popular tools out there right now is ansible salt stack puppet and chiff if you're just getting started out in devops and you haven't used any of these before my recommendation is to look straight at ansible this is definitely the best option to use for configuration management in my opinion it beats all the other options in every category but the most important one in my mind is the ease of setting it up for an entire infrastructure if you use something like chef or puppet you need to get a client agent on each of your devices that you're managing but with ansible you just need to make sure that you have a working ssh connection which you usually do by default this also lets you manage a wide range of different types of devices for example it's very easy to manage network gear like routers and switches using ansible where using something like chef and puppet would be very difficult since there wouldn't be an easy way to install the client software on those devices continuous integration and continuous delivery or ci cd for short continuous integration is the act of automating the qa of new code when a new commit comes into a code repository a ci tool can automatically launch it in a container and run tests if the tests fail the developer is notified and they can have a look at their code and fix it if the tests pass then you can move on to the continuous delivery portion which will automatically deploy the code the code can be delivered to any environment either qa staging or even production the act of using ci cd pipelines helps automate the testing and delivery of code saving a lot of developer time some of the common tests performed by ci tools include linting the process of checking code to make sure it's formatted to a certain standard no more arguing about tabs versus spaces dependency checks this could be something like a python script requiring a certain module and then that module not being added to the requirements.txt file a ci test would fail this code unit tests you know those fun things that you had to program in your college university courses they're finally coming into use architecture tests you could have your code run in different types of containers or architectures and see if it runs properly in all of them when it comes to the tools of ci cd there's a lot of different choices and you can't really go wrong with any of them you'll just have to have a look at each of them and just see which one works out the best for you just like in this video in it monitoring and log management is somewhat of an afterthought however recently more and more companies have been embracing proper data analytics and log management if you do find yourself in a devops role you'll probably find yourself having to learn one of these many tools for log management and data analytics my only real advice here is to go out there and check to see what's available and maybe play with them in your lab environment and see what you can do i've done a couple videos showing off grafana and influx db so some practical labs like that might be beneficial but other than that if you're just getting into devops i would focus more on the beginning topics of this video the linux fundamentals the networking programming and of course infrastructure as code if you found this video helpful at all please go ahead and hit that like button other than that if you're looking to learn more about devops programming or just anything it in general go ahead and check out my channel thanks so much for watching and i hope to see you all in the next video [Music] you
Info
Channel: DevOps Journey
Views: 162,429
Rating: undefined out of 5
Keywords: devops engineer, how to become a devops engineer, devops engineer roles and responsibilities, how to be a devops engineer, devops training, devops career, devops tutorial, how to become a devops engineer without experience, how to become a devops engineer in 2021, skills required for devops engineer, devops engineer skills, devops roadmap, devops roadmap 2021, how to learn devops, devops for beginners, devops tools, how to become devops engineer, what is devops engineer role
Id: 5pxbp6FyTfk
Channel Id: undefined
Length: 14min 0sec (840 seconds)
Published: Fri Jan 08 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.