What is DevOps? Understanding DevOps terms and Tools

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
devops is confusing with so many different terms like infrastructure as code containerization configuration management Version Control Systems microservices cicd and so much more not to mention the different devops schools like terraform ansible kubernetes Jenkins GitHub gitlab Prometheus grafana and so much more so in this video I am going to explain you all these different terms with the real world example to make you understand where to use all these different tools in the deployment process this video is going to be very helpful for you so watch this video till the end hey everyone Welcome to Cloud champ in this video we are going to understand devops completely so if you're new to devops and have no idea what are these different devops terms or don't know when to use terraform or Jenkins or Prometheus in the devops process then this video is for you throughout this video we are going to take an example and understand how is an application deployed from scratch discussing all the different devops terms and the tools used along with best practices so please like this video if you're new subscribe to the channel and let's start before we move ahead let's understand what is devops which is one of the most confusing terms and there are so many different definitions for it so to explain your devops in very simple way devops is a process of delivering applications or softwares in a fast and reliable Manner and a devops engineer is a person who is responsible for application building testing and deployment also some stages after deployment like monitoring and logging to make sure your application is running fine now that we have an idea of what is devops so let's take a scenario consider you are working as a developer engineer at a company where you are given a task to deploy an application so the code for this application has been written and given it to you by developer you have your code in your local machine and now you are ready to deploy it but there are issues when you have your code in your local machine so if you lose your machine your code is gone if you don't have access to your machine you don't have access to your code and that is why it's a best practice to First create a repository and push your code on Version Control Systems like GitHub gitlab or bitbucket pushing your code to Version Control Systems like GitHub and gitlab can provide you with so many different benefits you can have different branches for different versions of your applications different people working on your application you can also have a way to roll back if there's an issue and you also have a place where you can securely push your code and access it from anywhere in the world so first thing you should always do when starting with an application is pushing your code on GitHub and gitlab or bitbucket anything so you decided to push your code on GitHub repositories and for that you use git to push your code on GitHub repositories understand there is a difference between git and GitHub GitHub is a web-based platform where you can create repositories and push your code but for you to push the code you require git which is created by Lena store walls the same person who created Linux so get is the underlying Version Control System whereas GitHub or gitlab or bitbucket are all web-based platforms where you can create repositories and store your code these repositories can also be used for CI CD purposes which we are going to learn later on but for now we are using GitHub to push our code from a local machine to GitHub repositories through which we can access our code from anywhere now the code is on GitHub and we can clone it on any machine and try to run it locally when we run an application locally it's only accessible to us it's not accessible to the internet and for you to make it accessible you have to deploy it on the cloud so to reply the cloud you have two options you can either deploy this application on servers or on containers let's say for now you don't have much traffic and you don't want to have scaling so you decided to go with the servers so you want to deploy this application on servers and for that you need to create servers on the cloud and to create a service on the cloud you need to go to the cloud provider let's say AWS you went to ec2 dashboard clicked on launch instance fill in all the details what operating system you want what Security Group should be there what should be the key keypad what should be the volume and all of that and you created an instance but that's not how devops Engineers do so if you want to create a server you will be using tools like terraform cloud formation or pulumi where you write the infrastructure in the form of code so you will be defining I want to have two ec2 instances with Linux operating systems 8GB storage and all of that in the form of code something like this and then you can run the command turn off apply to have that server on the cloud using infrastructure as code tools like terraform you can easily reuse the code to create infrastructure in different environments like staging development and Broad also reducing the time and effort required to set up your infrastructure now only this you can also store your code on Version Control Systems to maintain versions and rollbacks if necessary so companies use different infrastructure as code tools like terraform pulumi cloudformation Azure Ram templates Google Cloud deployment manager and much more now you have your server ready which is created through infrastructure as code practice but there is something more you need to do before you deploy your application on the server so this application is written in Python language and for you to run it on server you need to install python on it along with some other dependencies that might be required for the application to run so you can run the commands to configure it or to install python or any other database or any dependencies let's say flask or Django but a devops Engineers won't be doing it manually so to automate this configuration you can use configuration management tools like ansible Chef puppet salt and a lot more using these tools you can configure your servers and install the necessary software so the idea is you need to define the configuration in the form of code so you can tell install python install this database start the database add this query all that stuff in the form of code and run it on the service when you do this you can configure multiple servers at once so you can configure your infrastructure using tools like ansible puppet Chef salt and lot more so now you have your server ready and configured to run your application so you cloned the code from the repository on the server now and you have deployed your application which is running properly you also connected your IP address with the domain name using DNS so now anyone on the internet can access your application through your domain name so now your application is working properly on the servers and your users are happy as well let's say you want to include some feature or new version of your application so you will get the code from the developer create a build and deploy it on your server get the code create a build Deploy on server get the code create the build and deployment server so this is all manual process and to automate all of this you can use CI CD or continuous integration and continuous deployment using CI CD pipeline you can automate the process of building testing and deploying your application on the server so everything done automatically so the idea is you can connect it with your version control system whenever there's a push mate to GitHub or gitlab the build should be created and automatically deployed on the servers this can be done using different tools like Jenkins GitHub actions gitlab cicd Travis CI Circle CI and a lot more CI CD is one of the most important aspect of devops and is used by all the companies now so you should have an idea of what is a CI CD till now we have discussed everything required to deploy an application on the servers we have seen how you can push your code on repositories how to create a server using infrastructure as code tools like terraform you can you have also seen how to configure your servers using configuration management tools like ansible we have seen how to deploy our applications on the servers and to automate all of this stuff we have seen how we can use CI CD pipelines using tools like Jenkins gitlab or GitHub right now now let's consider that your application is viral and you have a lot more traffic so you want to convert your application in a micro service architecture where you want to deploy all of your components in separate containers using Docker so let's understand what is a microservice architecture and what is a monolith architecture so monolith is an architecture where your application is deployed as a single unit and there are some disadvantages whereas some advantages as well for this so Advantage is that it is very easy for you to develop and deploy your application whereas it is difficult for you to maintain and scale this also if one of the component in the monolith architecture fails the entire application is brought down whereas if you look at microservices micro service architecture microservice architecture is a collection of small and independent services that work together to form a large application each service is responsible for different functions so let's say one of the container or one of the service is a database second is a message queue it can be a web application or anything and all of them talk to each other through apis so they are very Loosely coupled unlike monolith which are very tightly coupled even if one of the application one of the service is down the other services are not affected where you can easily scale and maintain it but disadvantage is you have to have lot of knowledge and it's very complex for you to develop and deploy microservices application so let's say you decided to my create an application in the form of microservices and you want to deploy it in the form of containers and whenever you want to deploy application in the form of container the most popular tool is Docker so using Docker you can containerize your application to make it run on containers so now your application was running on servers but you won't deploy it on containers and for you to do that you need to create Docker file so a Docker file what is a Docker file Docker file is a instructions written down in a file for your application to make it run as a Docker container using Docker file you can create an image so you will create a Docker file run the build command Docker build hyphen T my image name and then it will create an image for you now you have your image which you can store on Docker Hub or ECR repositories this image can be pulled by anyone if it is a Public Image but if it isn't private people in your organization can pull that image and run your application in the form of container after you have your image you will now you can running the containers and your application has multiple containers one container for database one for message queue one for your application and a lot more so there are multiple containers and for you to manage them you need to use something known as container orchestration and there are different tools for container orchestration like kubernetes openshift mezos launcher and a lot more the most popular One is kubernetes using kubernetes you can manage different containers of your application you can Define how much replica should be running what should be the image running for your application how much should be the volume and all of that stuff so overall the container orchestration tools like kubernetes are responsible to provide a way to manage and automate the deployment of applications that are running on Docker containers now you have your application running on containers using kubernetes which is very awesome so I hope you have understood everything till now if you have any questions feel free to note down in the comment section after you have kubernetes you can use something known as git Ops using githubs with kubernetes you can automate the deployment and management of containerized applications so the main popular GitHub foreign city and the idea is you define your manifest files on git repositories and whenever there's a change the change is going to be reflected on your kubernetes cluster so if you added a new service it will be shown on here you don't need to run any commands you don't need to run cubicle apply as well and everything will be defined on your kubernetes cluster when you make the change in your git repositories because the git repositories are usually connected with these get offs tools now your application is running on kubernetes you can also enable CI CD to automate all this process whenever you have a new application that should be deployed on kubernetes so cicdu using tools like Jenkins or Travis Ci or GitHub actions or gitlab cicd you can automate the process of deploying your applications on kubernetes now once your application is ready you need to make sure that it is running properly so you need to monitor them and monitoring means checking the health of your applications and making sure that an application is responsing to all the requests you can use different tools like Prometheus grafana nagios for your monitoring purposes or you can also use alerting tools like SNS on AWS you can use slack you can use pager Duty so whenever there's an issue or your application is down cluster is down or container is not creating you can get a notification on slack and you can easily look into it so these are all the different steps all the processes required for deploying your applications on servers or on containers including different terms like infrastructure as code configuration management Version Control System containerization CI CD and a lot more I hope this video was helpful throughout the video we have learned everything from the start right from the start from building the application to pushing or pushing on git repositories to deploying on servers setting up CI CD then deploying on containers using kubernetes to for container orchestration monitoring your application using tools like Prometheus grafana and alerting as well so I hope this video was helpful if you have any questions any doubt to feel free to drop a comment below and you can also reach me on LinkedIn I hope this was informative please like this video subscribe to my channel and have a good day
Info
Channel: Cloud Champ
Views: 8,332
Rating: undefined out of 5
Keywords: what is devops for beginners, what is devops and how it works, devops, devops explained, devops tools, devops terms explained, devops in layman terms, devops tools explained, devops tools explanation, devops basics, devops basics for beginners, devops pipeline, devops project, devops explained with example, what is devops, devops tutorial for beginners
Id: Gkp8wLZAtpY
Channel Id: undefined
Length: 12min 42sec (762 seconds)
Published: Sun May 14 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.