A Case Study for Continuous Delivery in the Cloud
Paul M. Duvall, author of the book "Continuous Integration", wrote about a case study for adopting continuous delivery in the cloud by a large organization in the public healthcare sector. The post discusses the problems, tools and solutions they found in the process.
This case study shows that it is possible to achieve a cost-effective cloud-based solution for developing software. Benefits include reduced delivery time, better leverage on resource usage and reproducibility of (ephemeral) environments. Disadvantages include lack of control over network latency and managing the risks of a cloud-based development platform such as cloud outages.
At a time when cloud-hosted applications have become a mainstream option, this case study reflects the upcoming trend to also develop and test in the cloud. This combination seems particularly fit for organizations adopting a continuous delivery approach where dev, test and ops environments are managed homogeneously.
Some of the problems that this particular organization was trying to solve included long delivery cycle time (partly due to bureaucratic provisioning processes), lack of visibility on infrastructure costs (leading to underutilized resources) and misconfiguration of environments.
Moving to Amazon Web Services (AWS) allowed on-demand one-click provisioning of EC2 instances to authorized team members (developers, testers, managers, etc). Such instances are automatically configured for the target usage thus ensuring any environment is reproducible from scratch. At the same time monitoring (and stopping) these virtual instances provided the usage analysis capabilities required for the organization to dynamically assess and leverage infrastructure costs.
Creating a continuous delivery pipeline (customized Jenkins) further reduced the time required to develop and deliver reliable software to testers. The full continuous delivery implementation involved setting up build and dependency management automation, continuous integration, database change management, automated testing and static analysis and remote deployment support. A full development infrastructure on the cloud required also the installation and setup on EC2 instances of several tools for requirements management, test management and execution. For version control and issue tracking the choice was a SaaS solution (Jira Studio).
Managing redundant cloud resources in different regions of the world is already being done by organizations that need to ensure certain security and availability levels for their software and/or services. The same cloud brokers services could potentially be used to manage multi-cloud continuous delivery platforms. In particular their aggregation capabilities could ease interoperability issues arising from deployment pipelines with stages distributed across different clouds.