In this blog, we are going to discuss why there is a need to evolve DevOps in the IT industry. We will be going to Dive deep into the DevOps in order to understand what actually this thing is.
Now, what happen before DevOps, the model used for software development was the “WATERFALL” Model and this model is best suited when all the requirements are present at the planning stage.
Now after the planning phase we cannot add any features or changes. After the planning stage, we move to the Development phase -> Testing phase -> Deployment phase - > Maintenance phase. Remember during this whole cycle “No new feature is added”
Also, as there was no integrated build mechanism, the development team may use an environment while the operations team might try to maintain it in a different environment. So, at the time of integration, if the operations team gets any bug, the development team may respond that the feature is working fine in their development setup and they may ask to sync the same set of setup.
Now, different development teams might be using different development setups. It will be very difficult for the integration team to sync to every dev team setup and a lot of time gets wasted unnecessarily.
Agile methodology is a practice that promotes continuous repetition of development and testing throughout the software development life cycle of the project. Both development and testing activities are concurrent, unlike the Waterfall model. While the Agile approach brought agility to development, it was lost on Operations that did not come up to speed with agile practices.
There was a lack of collaboration between Developers and Operation Engineers and this slowed down the development process and releases.
Software companies had begun to realize the need for better collaboration between the teams and faster delivery of software. This gave birth to the DevOps approach. DevOps enabled continuous software delivery with less complex problems to fix and faster resolution of problems.
What is DevOps?
DevOps is made up of two things (Development + Operations).
In simple words, DevOps is a set of practices and tools that help an organization deliver better products faster by facilitating and Integration of the development and operations functions.
The aim of DevOps is to shorten the system’s development life cycle while delivering features, fixes, and updates frequently in close alignment with business objectives. DevOps is a software development approach through which superior quality software can be developed quickly and with more reliability.
Let us Understand this cycle and what this picture is depicting…
Now if you look into this picture closely it’s an infinite cycle of a process having various terms from planning to monitoring. Let's have a brief about each of the terms…
This is the phase that involves ‘planning’ and ‘coding’ of the software. There are no DevOps tools required for planning, but there are a number of tools required for maintaining the code. The most popular tools used are Git, SVN, Mercurial, CVS, and JIRA. Also, tools like Ant, Maven, and Gradle can be used in this phase for building/ packaging the code into an executable file that can be forwarded to any of the next phases.
This is the stage where the developed software is continuously tested for bugs. For Continuous Testing, automation testing tools like Selenium, TestNG, and Junit are used. Selenium does the automation testing, and the reports are generated by TestNG. This entire testing phase can be automated with the help of a Continuous Integration tool called Jenkins.
Suppose you have written a selenium code in Java to test your application. Now you can build this code using ant or maven. Once the code is built, it is tested for User Acceptance Testing (UAT). This entire process can be automated using Jenkins.
This is a very crucial stage of the entire DevOps cycle. In this stage, developers require to commit changes to the source code. Also building code not only involves compilation but also includes code review, unit testing, integration testing, and last but not least packaging.
The code which has supporting functionality is continuously integrated with the existing code. Since there is the continuous development of software, the updated code needs to be integrated continuously and smoothly with the systems to reflect changes to the end-users.
Jenkins is a very popular tool used in this phase. Whenever there is a change in the repository, Jenkins fetches the updated code and prepares a build of that in an executable file in the form of war or a jar. After this, the build is sent to the next stage means to the production server.
This is the stage where the code is deployed to the production servers. Configuration management and containerization tools help in achieving Continuous Development.
Configuration Management is a process of releasing deployments to servers, scheduling updates on all servers, and most importantly keeping the configurations consistent across all the servers. Some popular tools that are used here are Puppet, Chef, and Ansible.
Containerization tools play an equally important role in the deployment stage. Docker and Vagrant are the popular tools used for this purpose. These tools help produce consistency across Development, Test, Staging, and Production environments. It makes your application easy to run on different computers.
In this stage, you continuously monitor the performance of your application. Here the vital information about the use of the application is recorded. For example, system errors like low memory, and servers not being reachable are resolved in this stage. In this stage, the problem is fixed as soon as they got detected.
The popular tools that are used for this stage are Splunk, ELK Stack, Nagios, NewRelic, and Sensu. This stage helps in improving productivity and increases the reliability of the systems, which led to reducing the IT support costs. That’s why all the major IT companies have shifted to DevOps for building their products.
These DevOps stages are carried out on loop continuously till you achieve the desired product quality and that is why the DevOps cycle you saw above is in the shape of Infinite.
Now you’ve developed a basic understanding of DevOps Let's discuss the best Resources to learn the DevOps best practices.
- You can follow Kubesimplify.com an Initiative by Saiyam Pathak for encouraging beginners to get into the cloud world.
- Follow the Best DevOps Roadmap at DevOps Roadmap
- You can refer to Saiyam Pathak YouTube
- Join Kubesimplify's official Discord server Kubesimplify for the latest updates and any doubts regarding the cloud.
- You can follow Kubesimplify on Twitter.