What is DevOps

The Concept of DevOps

DevOps is a cultural shift to the Software Development Lifecycle (SDLC) which provides continues update to the end-users without facing any downtime in the servers. Now cultural shift is introduced by changing the workflow to a continuous process delivery mindset in the team. The team must work on the infinite loop of some steps to process the optimal user experience. Thats why there is always a loop in DevOps logo. Now about creating the Zero Downtime in the servers DevOps comes with some set of tools. This delivers continuous update without any downtime.

Diagram

History

On early days software is built with the Waterfall Model. The Waterfall model follows the characteristics of a waterfall, as water flows in steps from up to down software are also build like this. There is no way to go back to the previous step. Take all the customer needs at once and note that, start building the software from that note, test the application and then deploy it. Now a customer is ready to use the software completely. But what if a new feature update request comes from customer? There is no way to integrate it, the whole process must repeat from scratch. From this problem New SDLC process comes to existence. Like Agile, Scrum, Spiral, DevOps. These days Agile and Scrum are integrated with DevOps as per need.

Need of DevOps

We get the idea of DevOps as cultural shift, but how its implemented practically? In working process of software development, we have two teams generally, One for Development another for Operations. A Developer writes a code and push into code repository, then the Operations team creates the server environment, fetches that code and deploys that on Server. Now in ideal case the software will run without any issue. But what if some piece of code working on Development Environment and badly fails on Production. Now the Operations team doesn’t have any idea of that piece of code, but the Developer will say everything is working fine on their side. Now to solve this issue we need something to bridge this gap between production and development. That is DevOps. It will make the changes in the code for production, provision the deployment architecture and create a continues flow of code deployment. Now the Development team does not worry about the code running on production server and Operations team have their predefined architecture as a per the code to work on. This is the need of DevOps in production.

DevOps Workflow

DevOps is infinite loop of some process. These Process are ..

  • Plan
  • Code
  • Build
  • Test
  • Release
  • Deploy
  • Operate
  • Monitor

Planning is like the first part of Waterfall Model, writing down all the initial needs and overview of the software. Now Code the software, then build it as a package after that this will be Tested by the testing team. After successful testing this package will be Released for deployment through a pipeline. Finally, it will be Deployed on the server and ready to interact. But DevOps process is not done. The next step Operations which will do any required changes in that deployment and send it to the development team also, next this deployment will be Monitored consistently to check any issue. After that the whole process will start again by Planning the next changes to do as operations team provided.

Tools Involved

This whole process need automation to save time. For that some tools are used. For planning Kanban Boards are used; to push the code Git is used, Continues Integration of code and Continuous Delivery of code Pipelines are build. They are built with the software like Jenkins, GitLab, TravisCI, ArgoCD. For building code, they packaged into Docker images, which can run on any Operating System. To Test the builds Sonar Cube, Trivy this type of software are used. Kubernetes is used to Deploy the Docker images, they will run on Kubernetes Orchestrated containers. For Monitoring Prometheus, Grafana, Datadog these tools are used.

Conclusion

DevOps is all about creating a seamless software delivery experience, the Tools may change, some set of practices may change but the Concept of DevOps must remain the same.

--