Software development has seen a lot of changes in the last decade. So what’s next? On the back of the agile transformation wave, we expect the next big evolution in development to be continuous delivery, which has become the leading initiative for IT organisations large and small.
As more companies embrace cloud services, product management has evolved to become more dynamic. This means organisations must adapt by becoming more agile, enabling them to respond to customer needs and deliver results faster than before.
Why opt for continuous delivery?
Continuous delivery is more that just a fad – similar to the way in which agile development has transformed the IT landscape, continuous delivery will help drive transformation in how software is developed and shipped. Continuous delivery allows organisations to ship software faster, with lower risk of failure, and helps bridge the collaborative gap between development and other teams.
A continuous delivery approach can also help teams to:
- Innovate faster: understand through experimentation what features are most desired by customers, and as a result gain traction in the market.
- Realise value more quickly: by shipping features faster and in small increments, businesses can increase the time-to-value from the investment in research and development.
- Reduce costs and increase quality: shipping more often requires investing in quality development infrastructure, while writing automated tests to decrease testing time.
Implementing continuous delivery
All modern CI servers – including Bamboo and Jenkins – have evolved from the continuous integration phase to serve this growing customer need.
Bamboo uses stages and build pipelines to manage the entire build process, from Committing code -> Testing -> Staging builds -> Deploying to production.
Jenkins, on the other hand, supports continuous delivery mostly via build pipelines.
This blog will not cover how to set-up build pipelines for continuous delivery using either tools, as it’s a wider discussion topic, but you can refer to:
- Atlassian resources on how to configure Bamboo for continuous deployment.
- Jenkins’ blog on how to orchestrate build pipelines.
Bamboo vs. Jenkins
Picking the right tool is important. While both Bamboo and Jenkins can be used for continuous delivery, they have different strengths. Let’s take a closer look:
|Ease of setup and configuration||✓||✓||Setting up both Bamboo and Jenkins is fairly simple. Both applications are JAVA-based and thus platform agnostic. They can be deployed on any platforms with an Oracle JDK.|
|Usability||✓||×||Although not a critical factor in choosing a CI/CD tool, Bamboo wins due to its up-to-date UI. However, you can customise the Jenkins UI with external plugins.|
|Integration with build tools||✓||✓||Both Bamboo and Jenkins have a healthy eco-system of third party plugins, along with flexible public APIs to extend the tools.|
|Branch management (DVCS tools)||✓||×||Bamboo comes with support for DVCS systems out of the box – the support extends to automatic branch detection and management.
· Bamboo can be configured to create plans on the fly, as new feature branches are configured.
· Bamboo can auto-merge once a build suceeds.
· Bamboo can clean-up unused branches.
· Jenkins can do branch management, but this needs to be configured via scripts and plugins.
|Pipelines||✓||✓||Bamboo can be easily configured for build pipeline, with a build configuration paradigm catering for complex build workflows. Jenkins doesn’t support build pipelines out of the box, but there are third party plugins which provide this functionality.|
|Scaling with remote builds||✓||✓||Both Bamboo and Jenkins provide support for remote agents (known in Jenkins as slaves).|
|Integration with Atlassian suite||✓||×||A key selling point for Bamboo is its integration with other Atlassian toolsets (JIRA, Bitbucket Server and more). This provides visibility into the branches in which a bug or JIRA task was fixed, along with the status of the build. Jenkins has some integration with JIRA, but the depth of information is fairly limited.|
I like to think of continuous delivery as an evolution of agile philosophy – after all, what good are scrums and sprints if teams are not able to shift software effectively? Continuous delivery will transform the way that organisations interact with customers, building on the experience of agile processes and continuous integration.
Similar to the change management aspect of agile transformation, the major road block for organisations in shifting to a continuous delivery model will be a lack of commitment to cultural transformation as development and operational teams learn how to collaborate. That said, the benefits of continuous delivery can be vast.