All Courses
Login / Sign up
Get started

By signing up, you agree to our Terms of Use and Privacy Policy.
Reset your password
Enter your email and we'll send you instructions on how to reset your password.

Importance of Continuous Integration and Delivery in Agile Software Development
  • By: Rajkumar Dileep
  • 09 Jun 2019

Importance of Continuous Integration and Delivery in Agile Software Development

“Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”

– Foremost principle of the ‘Agile Manifesto’

Overview

In the current DevOps world, it is important that the technical landscape is capable enough to enable developers to maximize throughput of features from “code complete” {Continuous Integration} to “in production” {Continuous Delivery}, without causing much disruption to the IT environment. DevOps is a philosophy with the primary goal of merging Dev and Ops roles and processes together, to achieve business goals. CICD is all about automating the product delivery pipeline.

According to a leading survey conducted across top organizations in the world, nearly a third (32%) is not using any type of CI/CD platform. Also, almost 60% of organizations have yet to take full advantage of automation. This automation is to accelerate application development and deployment. Once an organization is able to get the right balance between these two elements, it allows faster migration to composite applications with little risk. It also helps with accelerated innovation and support for the growing process needs in terms of business.  

In this blog, I’ll try and explain some basic elements of CICD and what advantages it may bring. So let’s read on.

What is CI/CD?

Continuous Integration:

Continuous integration is a disciplined methodology. It enables the programmers to check in to the code base. The code base can be any completed code, and its associated tests several times a day. The code may only be checked in if all its associated unit tests and all of the unit tests of the entire code base pass. This is one of the first steps or the actual foundation, or even the cornerstone, of everything that will follow afterward.  As most of us would already know, agility always begins at the level of one or more scrum teams. Also, continuous integration is often the first thing a Scrum team would intend to do.

continuous integration

Source: https://cloud.google.com/solutions/continuous-integration/

How do you idenfity the implementation of continuous integration in your team?

As stated by Jez Humble (award-winning co-author of Continuous Delivery), all we need to do is ask the below 3 questions to the team members:

  1. Is the code pushed into trunk/master by the developers on a daily basis?

  2. Are the automated unit tests triggered by every commit?

  3. Are 10 minutes enough to typically fix a broken build?

If the answer to all the 3 questions is a ‘Yes’, then you can be confident that the team is really doing continuous integration. If the answer to any of the question is a ‘No’, then it’s time to Inspect & Adapt.

CI in fact, (from a process perspective) requires development, test, and operations. It is to work together to create a collaborative release environment. To enable this, the key is automation. Often barriers are created with manual testing. As time is of the essence and manual testing can be a painfully sluggish process, especially if there are multiple check-ins (to the main branch) happening on a daily basis. Hence there is the necessity of TDD/BDD based test approach/product development. This approach will enhance the overall purpose of having a CI/CD pipeline.

Continuous Delivery:

continuous integration and continuous delivery

A sample CI/CD depiction

As an immediate extension to continuous integration, continuous delivery is to make sure that the integrated & tested components/new changes can be released to the customers, quickly and in a sustainable manner. Theoretically, with continuous delivery, you will be in a position to decide whether to release daily, weekly, fortnightly or whatever suits your business requirements. Another key aspect of continuous delivery is continuous deployment, which basically creates an early feedback loop with your end users/customers.

Benefits of CI/CD:

As the saying goes, “An organization is only as Agile as their ability to deliver/ship frequently in a smooth continuous manner”. Without a robust, automated CI/CD platform, this is almost impossible to be achieved. The benefits obviously are multi-fold.

1. Fully functional Increment:

When integration happens frequently, it automatically makes sure that the different roles and functions on the team are actually placed in a position to be able to create/deliver a consistent output: the team's incremental product increment; at the end of each iteration.

2. Increased velocity/productivity:

A well-oiled CI/CD pipeline will help any organization to respond to market changes better. Bug fixes are faster and productivity translates to happiness, and happy teams are more engaged.

3. Reduced Test efforts/Cost:

Automated testing and design by the tests not only ensure reduced manual efforts but at the same time makes the team realize the real value of continuous integration and the benefits of having a good battery of automated tests, both unitary and acceptance.

4. Increased code coverage:

Test coverage is performed by CI server by checking the code. It also highlights any gaps as part of the visible build pipeline. Continuous Integration encourages transparency and accountability among the team.

5. Faster Time to market:

Modern development teams are building efficient software delivery engines by creating repeatable processes that standardize development best practices. CI/CD is one such thing that enables the organization to deliver incremental software in a much shorter time span, thus enabling quicker feedback from end users.

Common challenges in implementing CI/CD:

1. Business alignment:

One of the direct enablers of CI/CD is to make sure that we have automated acceptance tests. This sometimes tends to upset the business people, e.g., the product owner. It will force them to cut out their stories in a different way and think in the use case. Acceptance criteria should be well defined for sprint planning.

2. Prioritizing pipeline setup:

Most projects focus on overcoming the competition by releasing new features that can amuse the users. The product features and pipelines are weighed to be traded off in each sprint plan, which causes a lack in recognizing the existing problems.

Widely used CI/CD Tools:

Let’s have a look at some of the most commonly used CI/CD tools in the software industry today.

continuous integration and continuous delivery tools

1. GIT: 

Among various DevOps tools In the software industry, GIT is widely used by open source contributors and remote teams as it is a distributed Source Code Management (SCM) tool. 

2. JENKINS: 

Jenkins is the most opted automation tool among software development teams. Automation of different stages of delivery can be performed with this open course CI/CD server.

3. DOCKER: 

Since the launch of Docker in 2013, it has been a well-known container platform. It’s also thought of as one of the most important DevOps tools out there.

4. PUPPET: 

Puppet, a configuration management platform, helps in managing the infrastructure as a code. It helps in delivering the software quickly and with more security by automating infrastructure management.  

5. OCTOPUS: 

Octopus is the deployment automation server for your entire team, designed to make it easy to orchestrate releases and deploy applications, whether on-premises or in the cloud.

6. TEST AUTOMATION:

Selenium is the most preferred automated test scripting tool out there in the market. Combined with either SpecFlow (for .NET base code) or Cucumber (java based code) it is a brilliant enabler to complete your CI/CD pipeline.

Key Takeaways:

  • Every agile team needs to have their CI/CD or DevOps ‘Aha’ moment. I can remember mine which was when we started doing one-click deployments. We were able to set up a .NET based Azure VSTS delivery pipeline with the help of Jenkins, Bitbucket, and Octopus enabled by SpecFlow & Selenium for automated testing.

  • However, complicated technical stuff you may be working on in setting up your delivery pipeline, never (ever) overlook the human side of things. It’s essential that the message is understood and resonates throughout your community/organization. This is important for the idea to succeed. 

  • You are not DevOps ready yet if you have just set up a delivery pipeline. It’s only one layer of cream on your so-called DevOps cake. DevOps is a much bigger phenomenon. 

  • Always make sure to keep the goal in sight. Complete with all of its esoteric terminology, which CI/CD is —it’s pretty easy (most of the time) to lose sight of why it actually matters. Ultimately, CI/CD is essential because it is required for us to meet our business goals.

Thanks for your patience and wish you all the very best in your Agile journey. In case you want me to write about any specific topic, please feel free to comment below, and I’ll be more than happy to add them to my ‘Blog Backlog’.

Hope to see you soon, with more such interesting topics.

Get ahead. Get Agile Certified!

About The Author

Rajkumar Dileep is an enthusiastic Agile practitioner, with over a decade of strong IT project delivery experience. A self-motivated individual, Raj specializes in helping various teams and individuals to improve their agile way of working and provides guidance to realize their potential in order to deliver quality (incremental) software. 

Rajkumar Dileep

4 Comments

Mark Whitton 2019-06-11 11:49:22 -0500

Nice article. Every organisation needs to look out for the challenges as listed here in the article. Its all in the mindset.

Mark Whitton replied to .. Nice article. Every organisation needs to look out for the challenges as listed here in the article. Its all in the mindset. (read comment)

Rajkumar Dileep 2019-06-11 12:46:56 -0500

Thanks Mark. Absolutely agree :)

rohan 2019-06-14 06:23:43 -0500

thank you

rohan replied to .. thank you(read comment)

Rajkumar Dileep 2019-06-14 08:56:02 -0500

You are welcome Rohan ! Thanks for reading.

Add Comment

Subject to Moderate