Continuous Integration and Continuous Delivery CI CD The Key to Seamless Software Delivery
27 February 2018 Juan Garcia
As businesses are increasingly reliant on a large number of software applications to operate smoothly, agencies and software providers are under more pressure to deliver frequent updates without compromising the quality and without impacting the end user.
The use of the Agile methodologies in software development has allowed us to develop new features and fixes more rapidly to meet customer expectations. However, with the complexity of today’s business-critical applications, the process of rolling out an iteration has become one of the biggest bottlenecks in new feature releases.
As teams focus on developing new features, they also need to ensure that everything is thoroughly tested to prevent production issues that can have major impacts to customers and internal teams.
For teams and businesses that rely on software applications, Continuous Integration and Continuous Delivery (CI/CD) is the key to staying ahead and reducing the risks involved in the deployment of software applications.
"For teams and businesses that rely on software applications, Continuous Integration and Continuous Delivery (CI/CD) is the key to staying ahead and reducing the risks involved in software deployment."
Continuous Integration and Continuous Delivery (CI/CD)
Continuous Integration and Continuous Delivery (CI/CD) are strategies for building and releasing updates through an automated process that empowers teams to deliver new iterations to end users safer, faster, and with better quality.
Here at Deepend, we believe in daily commits and code reviews using pull requests to ensure that all changes are integrated frequently to the main repository, reviewed at least twice by two different team members, and then validated by the build server.
This helps avoid problems caused by team members developing features in isolation and waiting to merge the changes until the end of an iteration only to realize that the new changes don’t integrate and the updates required for the integration have a major impact in quality and timelines.
CI helps minimize the cost of development by allowing developers to integrate changes at any time as often as they wish with minimal effort required.
This helps with testing during the cycle by allowing the team to discover and resolve conflicts at the early stages of the iteration instead of having defects crop up at the later stage as they can delay the deployment timeline and are costly to fix, and a total mood killer.
CD is the automated process of releasing new features to all environments without manual intervention.
Combining CI/CD makes the development and release of new features a simple and repeatable process by eliminating manual workflows. It reduces the time and effort required to develop new features and lowers the risks associated with manual changes.
By automating the process, teams can become more efficient while reducing the risks in developing and releasing new features.
Choosing the right tools is the key to executing a successful CI/CD strategy. Here’s how we implemented it for one of our customers:
Case Study: Continuous Integration and Continuous Delivery using Microsoft Azure
In the past we have used tools like Jenkins, TeamCity, and Octopus Deploy with different configurations for CI and CD. Currently, we have seen a trend with Bamboo CI, which is fully integrated with the Atlassian stack making it the perfect tool for teams using Jira and Confluence.
Our team enjoys the transparency offered by the Atlassian stack (BitBucket + Jira + Bamboo + Confluence,) which allows all code changes and releases to be visible to all team members, including clients. Using Jira and Bamboo has become one of our favorite ways to implement CI/CD.
We helped Teachers Health Fund / UNI Health / Nurses Health to implement CI/CD for a different number of applications including websites using Umbraco CMS all hosted on Microsoft Azure.
The tools setup is pretty straightforward. We use Jira as the product backlog management tool, BitBucket for source control, Bamboo as a build server, and Azure Cloud App Services for hosting all production environments.
The combination of PaaS and SaaS allowed the customer to have the flexibility and scalability required for their production applications. The use of with on-premise infrastructure helps save hosting costs on all non-production environments to maximize ROI.
With the help of GitFlow in Bitbucket and Bamboo Build servers, we have fully automated the build, deployment, and rollback process across all environments – removing manual processes and any inefficiencies, errors, and bottlenecks associated with them.
In addition, redundancy and autoscaling were configured into all critical applications to allow for unforeseeable circumstances and future evolution of the system.
Advantages of Using Continuous Integration and Continuous Delivery for Business-Critical Applications
CI and CD has allowed us to maintain >99.95% uptime while having the ability to deploy any release to any environment in under 2 minutes without interruptions.
In addition, if anything goes wrong during the process our automated deployment enables instantaneous rollback to avoid unnecessary disruption.
CI and CD helps lowering the costs and increasing the efficiency during the development and deployment of new features in the following ways:
- Reducing the complexity, costs, and risks associated with integrating new features.
- Minimizing the time developers spend on preparing and deploying a release so they can focus on developing new features and fixing critical items instead of deploying them.
- Allowing for faster deployment and rollback through automation.
- Speeding up the feedback loop so you can make the necessary changes suggested by customers and deploy them quickly to increase customer retention.
- Facilitating collaboration among teams by removing risks associated with deployment and managing tests with live audiences.
- Reducing risks and costs associated with “surprises” that frequently happen during the final stage of development cycles.
- Offering more innovative features at a faster pace to attract new prospects and improve customer satisfaction.
That means your team will be able to get more done and you’ll be able to offer a better product to your customers while optimizing your ROI.
Find out more about developing and maintaining your technical infrastructure to help leverage the value technology assets you have.