What is DevOps?
DevOps is a buzzword which has been trending in the industry for quite some time now. Recently I have been to a conference DocOn which was held by a Tech company. The host who had come down to the conference has asked: “What is DevOps?”. Then, people started giving different opinions about DevOps. I have come across different definitions of DevOps and decided to put my own words about DevOps. I’m not here to debate but I just want to give my own theory of DevOps.
I always believe that DevOps is a practice or process which results in improved software, delivered at a greater velocity. Let us understand what is DevOps with its life cycle.

The life cycle of DevOps
Continuous Development
In this phase, software is developed continuously. Unlike the waterfall model, all the deliverables are broken down into small sprints of shorter development cycles and then delivered in a short time. This stage involves coding and building phases which makes use of Git, Github etc for maintaining different versions of code and Maven, Gradle etc for building and packaging of code into an executable file.
Continuous Testing
In this phase, developed software is tested continuously. JUnit test cases will be useful to test the developed software during build phase itself. If the developed code fails to satisfy the JUnit test cases, build gets fail. They can also use Selenium which can be integrated further with DevOps tools used to test the software once the code is moved into the test environment.
Continuous Integration
Since there is continuous development of software, the updated code needs to be integrated continuously as well as smoothly with the systems to reflect changes to the end users. This need to be tested Continuously to make sure that it is working fine for end users. Jenkins will help us to achieve this for us. Whenever the developer pushes the changes, we can set a trigger on Jenkins to pull the code from Git, build the code and implement continuous testing.
Continuous Deployment
In this phase, the code is deployed to a production server. We have to ensure that code is deployed in the production server and it can handle enough traffic from end users. We have to come up with different scaling options to control the traffic. Puppet, Chef, SaltStack, and Ansible are some popular tools that are used in this stage. But recently Docker and Kubernetes are playing a crucial role in Continuous Deployment.
Continuous Monitoring
In the phases, we have to make sure that our application is up and running all the time. This practice involves the participation of the Operations team who will monitor the user activity for bugs / any improper behavior of the system. I use Zabbix, which helps us monitor the application and the servers closely to check the health of the system proactively. If some server goes down, it will send alerts and bring our applications back to a normal state.
Conclusion
I would define DevOps as a oneness between ‘Dev’ & ‘Ops’ teams which results in improved software, delivered at a greater velocity. It is a process that ensures the proper implementation of Continuous Development, Continous Testing, Continuous Integration, Continuous Deployment, and Continuous Monitoring. We will be discussing in detail of each build cycle and the tools involved in our upcoming stories.
