When we talk about DevOps, a certain quote comes to mind… “Continuous improvement is better than delayed perfection” - Mark Twain. DevOps is a methodology and toolset which automates and integrates processes between software development and IT teams. Let us jump into understanding why DevOps started and the basics of each DevOps lifecycle.
Why DevOps started
The first DevOps methodology emerged back in 2007 - 2008. Concerns were raised between developers and operations about the traditional software development model. With both groups reporting to different managers and the motivation for each were different.
Operations were responsible for keeping the systems stable and up and running and not introducing too many changes, developers on the other hand were producing new features that they wanted to ship to customers quickly. This caused friction between the groups, blaming each other, and pointing fingers if the code did not run.
The idea behind DevOps was to break down the barrier or wall between the developers and operations teams to a single merged team where they can work together on shipping new features to the customer much faster and safer.
The DevOps lifecycle
DevOps uses the infinity loop to describe the continuous integration and development processes.
Let us take look at each of the processes below.
This is the initial planning phase where a business analyst goes and gathers information and requirements from the stakeholders. The work is then planned in an Agile fashion with sprints, allocating the prioritized work from the sprint to developers.
Developers will now grab a cup of coffee and start working on the allocated tasks. Ensuring that the work that was allocated is completed before the end of the sprint.
The building phase is where we can really start seeing the magic using tools like Azure DevOps. Developers will commit and merge their code with a pull request and a review of course! However, now we can see how the code is built, running through all the unit testing and only once all tests are satisfied will it be merged.
Once all the tests succeed, the deployment will occur. The code will be deployed to a staging environment for Quality Assurance (QA) testers to test manually and send back any bugs that they may find. This can also include automated testing as well.
Once the User Acceptance Testing (UAT) is accepted and QA testers are happy, we will proceed to release the phase in the pipeline. This is where we can setup features we want to include in the release and we can setup which individuals we would like to approve the release of this version.
The build is now finally ready for the deployment to the production environment. Once the approvals are in place, deployment can take place.
This version of the software is live, and customers are utilizing the software. Operations are working hard to ensure everything is running smoothly. We have also created a way for the customers to provide feedback on the product.
As we can see in the infinity symbol, this is the final phase in the DevOps cycle where we monitor the environment and build on the customer feedback, collecting data and analytics.
At the very center of DevOps is the key word “Continuous” we are trying to achieve a process where we are continuously delivering, deploying, and receiving feedback. The ultimate end goal of DevOps is then to produce great, fast, and reliable software to our end users in a timeously manner.
Thank you for reading, happy coding and remember to continuously improve.
Pieter van Zyl