DevOps scores over legacy, monolithic and agile software development. This article discusses the various stages of the DevOps software development cycle and delineates the appropriate FOSS tools that can be used at each of the stages.
DevOps is a method of software engineering that combines both software development (Dev) and information technology operations (Ops) to create high quality software within a short period of time. DevOps shortens the time taken for software development through continuous delivery and the integration of code. As the name suggests, DevOps is a combination of development and operations. Traditionally, software development is done by a team of stakeholders comprising business analysts, software engineers, programmers and software testers. The software development is done by the development team through a software life cycle comprising various stages like customer requirement(s), planning, modelling, construction and deployment. However, such a development cycle could take a lot of time and collaborative effort to successfully deliver software to the customer. This is also known as agile software development.
DevOps can help overcome the drawbacks of the agile software development life cycle. In the agile method, to develop software, every stage of the life cycle needs to be completed prior to the final release and that could take a lot of time for the software to reach maturity. In the case of DevOps, instead of delivering the whole software, small chunks of code are updated, and the updated software is released to the operations team continuously, which speeds up the software development cycle. The DevOps life cycle can be automated using various development tools and requires less manual activity. The DevOps concept first originated in 2008 during a discussion between Patrick Debois and Andrew Clay Shafer. However, the idea only started to spread in 2009 with the advent of the first DevOps Days event held in Belgium. Now, most tech giants like Facebook, Google, Amazon, Netflix, etc, have adopted the DevOps culture.
DevOps life cycle and tools
The DevOps life cycle consists of eight stages – plan, code, build, test, release, deploy, operate and monitor. There are various free and open source software (FOSS) tools that can be used to improve and automate the DevOps life cycle.
The eight stages of DevOps are explained below.
- Plan: This is the starting stage of DevOps where the planning for the software development is done by the development team. Everything from the software requirements to the development timeline is planned and the team works accordingly. FOSS tools like Redmine, Trac and Git are used at this stage.
- Code: After everything is planned, the coding for the software development is done. Coding can be done from scratch or can be reused, depending on the requirements. Many FOSS tools can be used for coding. Git is one such tool that is used to automate the process.
- Build: After the coding is done, it is shared with other software engineers of the development team. The code is either approved or rejected after it is reviewed. If it’s approved, then it is merged with the main codebase of the repository. FOSS tools like Gradle can be used to automate this process.
- Test: Once the new code is merged with the codebase, it is tested in a virtual environment, using a VM or Kubernetes. A series of both manual and automated tests are conducted at this stage. This is the most crucial stage of DevOps and should go through without failure. This stage could also cause bottlenecks and increase the timeline. In order to complete the stage successfully without much delay, various continuous testing tools are used. FOSS tools like CruiseControl and Selenium are used to automate the process.
- Release: After the code is tested successfully, it is prepared for release. At this stage the development team decides which features of the software product should be enabled or disabled by default and when it should be released. This is the final stage for the DevOps development cycle, and after this the software/code is delivered to the operations team. This stage can also be automated using FOSS tools like Jenkins and Bamboo.
- Deploy: This stage belongs to the operations team and it starts after the release of the software by the development team. The software is then deployed by the operations team using various tools. The release is configured according to the requirements of the operations team. FOSS tools like Puppet, Ansible and Saltstack are used to automate the deployment process.
- Operate: After the software has been updated and configured, the operations team starts operating the products and services with the updated software. This is done by either using proprietary or FOSS tools.
- Monitor: This is the final stage for the IT operations team and also for the DevOps life cycle. Here the customer requirements are gathered and the data is sent to the development team to update the software product/service for the next iteration of DevOps. FOSS tools like Nagios are used by the operations team to automate the monitoring process.
Benefits of DevOps
DevOps has many more benefits than the agile software development process. In case of the latter, the development process progresses through four main stages – planning, coding, testing and release. The planning for the software development is done based on customer requirements and involves assigning various tasks to the stakeholders, like designing flowcharts, writing documentation, estimating timelines, etc. After the planning is done, the coding for the software development starts and a working prototype is created. The prototype is then tested in the third (testing) stage. The testing stage is the most important part of the agile software development life cycle because it can affect the overall quality of the software. This stage can also cause bottlenecks because the time required for software testing cannot be estimated precisely and could go beyond the project’s timeline.
After successfully testing the software, it is then released to the customer in the fourth stage. However, if the customer finds any problems with the software, then the development team takes the customer’s feedback for another iteration of the development cycle. Then the whole development process takes place again, with the four stages, to improve the software and then it is released again, with another version number. Once again the customer’s feedback is taken, and if any improvements are required then the development cycle goes into the iteration stage again and the cycle keeps continuing until the software reaches maturity (a stable software). This type of development cycle could take an indefinite amount of time and causes delays in software development. That’s why using DevOps can make the development cycle quicker and more effective.
With DevOps, the development team communicates with the operations team and does not deal with the customers. In DevOps, only small chunks of code are continuously coded and tested, which prevents any bottlenecks or delays in delivering the code. DevOps provides continuous delivery and integration of the code. This is why it is better than agile software development.
As DevOps has many benefits over agile software development, many software companies are resorting to the DevOps culture. Because it provides continuous delivery and integration, DevOps can help software products and services to reach maturity in a very short period of time. DevOps is mainly suitable for the development of cloud computing products and services, because it needs collaboration between the development team and the IT operations team. As there is a growing demand for cloud computing products and services, DevOps is the right choice for most software companies and has a great future.