What is DevOps | How to become a DevOps Engineer | DevOps Roadmap 2022

Опубликовано: 16 Октябрь 2024
на канале: Nguyen Duc Hoang
549
14

What is Devops?
In this video, you will learn what it is, which tools you need to know to become a DevOps Engineer
Which responsibilies and tasks that a Devops Engineer must know
Firstly, you should know that DevOps is the abbreviation of Development and Operations
Developments is a stage where developers write the application and test it
Operations part is when the application is deployed and maintained on a server(maybe a cloud or dedicated server)
DevOps is the link between the 2 above parts, so let dive into the details to really understand what devops really do.
Software development refers to a set of computer science activities dedicated to the process of designing,coding,testing software applications.
Firstly, developers or development team start writing the application with any technology, with different programming languages(Java, C#, PHP, GoLang,...), build tools, etc
The application code is stored in a repository like git, svn, etc
Now, that you as a DevOps Engineer will not program the software app, but you need to know the concepts of how the Application works, you must also know the software's configurations(like databases, web services) and automation testing, so on and so forth.
Now the application is finished, pass almost test cases and need to be deployed in a server, then the users or customers can use it .
That's why we need to deploy it, we also need an infrastructure on-premise servers or cloud servers.
You also have knowledge of networking and security, for example: configure firewall to secure your application, but open some ports to make the application accessible outside.
You need to know what is IP Addresses how IP addresses and DNS works
Maybe some network administrators or security engineers has worked with these tasks
Nowadays, containers has become the new standards, your applications are containers on a server.
That was the main task of a DevOps engineer, we do it continously(CI/CD) in an automated way.
You can build Docker images from your Application, this image is saved to an Image Repository(like Docker Hub, or Nexus).
You donot want to do this manually, instead you want a pipeline to do every steps in a sequential way, let's use Jenkins.
You need to connect Jenkins with git repository, this is a part of a continuous integration process.
When your code pushed to repository, then it is continuously tested, then it is built and packaged to the deployment server, the next step in this pipeline is to send notification to the development team about the pipeline state or handling failed deployments, etc

This flow represents the core concept of CI/CD pipeline and the CI-CD is the heart of DevOps tasks and responsibilities.
So as a DevOps Engineer, you should be able to configure the CI/CD pipeline for your Application in a continous way.
This is an infinite cycle because the application improvement is infinite.
You application will update new versions, features, fix more bugs,...
Nowadays many companies are using cloud servers instead of creating their own physical infrastructure. This is called Infrastructure as a service, like Amazon Web Service, Google Cloud Platform, Microsoft Azure.
It help you minimize your cost, supports some services like load balancing, backup, clustering, security,...
But many of these features and services are platform specific, so you need to learn how to manage it.

For example, AWS has many serices, but you donot learn all, only focus on which your company needs.

Now your company's application is built with docker images and containers. I neet to be managed by using Docker Compose or Docker Swarm.
Now if you have thousands of containers running in Kubernetes, on many servers, how can you track your specific application's performance, how to check whether the system is running smoothly, how many problems in your system.
There are 2 main steps:
Step 1. Create infrastructure with tool like Terraform(it is Infrastructure provisioning tool)
Step 2. Configure, run, and deploy your app in production environment. Tools maybe Ansible, Puppet, Chef,...
But you should know only one of these tools.

Sometime, as a DevOps engineer, your manager ask you backup data, do system monitoring cron jobs, so on and so forth.
You need to know scripting language to do that automatically, like bash shell for linux, powershell for windows, or python, ruby, Go, etc,...
Python has many libraries which can work with many databases.
Finally, how to manage your code ? Very easy, let's use git repositories like github, gitlab. So many things to learn as a DevOps Engineer. This video show you an overview of DevOps and which tasks a DevOps Engineer should do.
Support - https://www.paypal.me/sunlight4d
SUBSCRIBE TO MY CHANNEL FOR MORE INTERESTING VIDEOS:
   / nguyenduchoang  
You can see code in github:
https://github.com/sunlight3d?tab=rep...
Twitter:   / nguyend97601913  
Facebook:   / nguyen.duc.hoang.bk