So, I am taking up this challenge of #90DaysOfDevOps with the #TrainWithShubham Community.
In this blog, I am discussing the :
Introduction of DevOps
Why do we need DevOps?
What are Automation, Scaling, and Infrastructure?
Tools that are going to learn in DevOps
So let's start and discuss one by one point:
Introduction to DevOps :
DevOps is a software development methodology that is a combination of software developers and an operations team. It basically makes the bridge between the developer and the operations team that fulfills the positions of the tester, QA Engineer, and system engineer. The development team writes the code, builds it, and pushed it to Version Control System (GitHub) (Don't worry we'll be discussing this in upcoming blogs), and then the operations team tests the code and deploy it to the production servers. Both teams will work together to deploy an application with a faster rate of release. This is the all about "DEVOPS"
DevOps Lifecycle
Why do we need DevOps ??
Before DevOps, SDLC (Software Development LifeCycle) has some traditional methods. The first method was Waterfall Model.
WATERFALL MODEL:
You all have seen a waterfall in real how the water every time goes down never goes up exactly the same as with this model in the SDLC phase. Suppose the developer started writing code and it gives to testers to test the code but in the code, some errors are there. Now, the testers can't go back it was only one-way, you have to forward this code to another phase then after completing all the phases of the waterfall model then it repeats the process again.
This is the big problem with this model there is
1) Time-consuming
2) Only once delivery, customer satisfaction is not done.
3) While developing the project, only developers will engage the rest of the employees will be free.
AGILE MODEL:
But all these problems are solved by Agile Model, which follows 12 principles for developing to deploying the project or we can say it follows an iterative and incremental model.
In the Agile model, the project splits into several sprints which involve several iterations means if any errors came in the development phase we can go back and rectify the errors. Based on customer satisfaction we gonna iterate our next requirements.
But, this model arises some problems as I said on the basis of customer satisfaction we will next iterate our requirements, so this will delay the time between the developer team and operations team. Let's say the developer was continuously changing the code so obviously, there will be some delay to review the code and deploying the application.
So, DevOps is the solution to all these problems i.e combination of the Development (Dev) and Operation teams (Ops) together.
Automation :
Automation means automating all the tasks without any human intervention. It is the backbone of DevOps methodology. In DevOps whole, CI/CD pipelines are going to automate that takes a couple of seconds to test the code, build the code, and deploy it on servers. It helps to reduce the time, and cost, and release the new set of features in a faster way.
Scaling :
It is an automation-driven environment where companies can scale their business very quickly with the help of the right DevOps tools.
Infrastructure :
Infrastructure means your managed systems like servers ( whole computer). In DevOps, we have to scale the infrastructure very quickly i.e we are going to use cloud computing companies that offer services to scale the infrastructure like AWS, GCP, Microsoft Azure, etc. By automating the infrastructure we can test the code in the early development phase by creating many production environments. This helps to increase the speed and efficiency of the development phase.
Tools that are going to learn in DevOps:
1) Version Control System: Git, GitHub
2) Cloud-Computing: AWS, GCP (Google Cloud Provider), Microsoft Azure. As AWS is currently leading the market so I would prefer to learn AWS (Amazon Web Services).
3) Infrastructure As Code (IaC): Terraform
4) Automate the Creation of Virtual Machines: Vagrant
5) Configuration Management: Ansible (PUSH Model), Chef (PULL Model)
6) CI/CD Tools: Jenkins, SonarQube, Maven, Docker, Kubernetes
THANK YOU !!
You can follow me on Twitter and Hashnode for Linux and DevOps upcoming blogs.