By Amaela Wiley, Google Cloud Fellow
Continuous integration and continuous delivery, also known as continuous deployment (CI/CD), is at the core of dynamic application development, delivery, and deployment. Its value is measured and proven by the large-scale customer-based apps that require frequent updates and a reliable infrastructure to deliver. The iterative cycle is continuous and well oiled.
When we look at the benefits of CI/CD, there are many, but a few really bring home the point. In a top 10 list compiled by Katalon.com, “Smaller Code Changes” was listed as number one. Other key benefits include smaller backlog, fault isolations, more test reliability, and increased team transparency and accountability.
Smaller Code Changes - By using smaller chunks of code, issues can be addressed at a molecular level, and prevent a large number of issues that would need to be repaired down the road. According to the piece, “One technical advantage of continuous integration and continuous delivery is that it allows you to integrate small pieces of code at one time.”
Smaller Backlog - “The benefits of solving non-critical issues ahead-of-time are many. For example, your developers have more time to focus on larger problems or improving the system and your testers can focus less on small problems so they can find larger problems before being released.”
Fault Isolations - “Designing your system with CI/CD ensures that fault isolations are faster to detect and easier to implement.”
More Test Reliability - “Using CI/CD, test reliability improves due to the bite-size and specific changes introduced to the system, allowing for more accurate positive and negative tests to be conducted”
Increase Team Transparency and Accountability - This approach increases the transparency of any problems within the team and promotes responsible accountability of all team members.
Mark Snodgrass, managing director of Hararei, Inc., describes CI/CD as follows:
Continuous Delivery benefits business users because as soon as code is successfully accepted in the CI stage and a logical function can be tested, it is released to users. They verify that the features meet their expectations and provide feedback to developers who then address the feedback in this stage. This feedback loop between users and developers is continuous and seamless. Whereas in traditional waterfall method, users could wait weeks/months to see the features for the first time, this approach can dramatically reduce the time to just hours/days.
Director of Product at Clearbridge Mobile, Kofi Senaya says:
Continuous Integration is a development practice that requires developers to integrate or merge code into a shared repository, continuously (preferably daily). The code is verified by the automated build which allows teams to identify problems before it’s too late. If you wait too long to integrate the code and there’s an issue, it becomes a bigger problem.
Differences Between CI/CD, Agile & DevOps
The difference between CI/CD and agile and/or DevOps is important to note when considering the best way to handle your project needs. According to Shreya Bose at Browserstack.com, the only real difference among the three is the level of operation.
Agile is a large framework that encompasses the other two practices. It is a philosophy of software development that is implemented in various methodologies – Scrum, Kanban, Scaled Agile Framework (SAFe), etc.
DevOps is an agile development practice and mindset that uses agile principles (collaboration, communication, utilizing the right tools) to streamline software building, testing, and release.
CI/CD is a DevOps tactic, which makes use of the right automated testing tools to implement agile development.
Cons of CI/CD
There are a few arguments against CI/CD that might impact the decision to use this method. · Digital Marketing Specialist Tarun Manrai says business buy-in is crucial. “The businesses have to be alert and iterative enough. Avoid wrong automation process done first and be extra cautious in picking the right order of process.” He goes on to say, “The code base has to be ready and be immediately put to production once the current result is successful. This immediacy can lead to panic in businesses.”
If we look at the model of manual delivery, it provides a clear rationale for the case against using manual versus continuous integration. In the traditional development cycle, deployments were spread over a long periods, i.e., every six months. The pitfalls were obvious in that the bugs would be detected much farther in the process, and often not until customers were unable to complete their desired transactions. CI/CD allows developers to meet the demands of the marketing teams and stakeholders without compromising the quality of the product and mitigating risks of system shutdowns, extended downtime for apps, and difficulty pinpointing the location of the bug.
Business Needs Determine Methodology
Overall, business needs and client capabilities regarding technology determine if CI/CD is the best approach. And still, even clients with legacy products and infrastructure can benefit from the CI/CD iterative method. The impact on the bottom line is clear. The potential for cost savings as well as increased usage and profit is something that the manual deployment model can’t replicate.
Sources:
https://codilime.com/blog/business-benefits-of-ci-cd/
https://www.browserstack.com/guide/ci-cd-vs-agile-vs-devops
https://www.katalon.com/resources-center/blog/benefits-continuous-integration-delivery/