To reduce time-to-market of new features and products, RightScale leverages a variety of modern development practices, including agile development, continuous integration (CI), and continuous delivery (CD). We don’t follow a one-size-fits-all approach. Rather, the development practices we choose for each product or component depend on the business goals we are trying to achieve. In addition, we leverage our RightScale Cloud Portfolio Management platform heavily to automate provisioning and management of all of our cloud infrastructure and tightly integrate with our development processes.
In this initial article, I will provide some basic background on CI/CD in the cloud. Additional articles will highlight three use cases from RightScale and describe how we’ve implemented each one:
- Continuous Testing in the Cloud: In this use case, we explain how the RightScale team leverages Jenkins, RightScale, and various test tools to automate testing of RightScale ServerTemplates™ across a large matrix of clouds and operating systems.
- Scalable Continuous Integration for RightScale Core: This use case describes how we use RightScale to manage and auto-scale a cloud-based Jenkins environment to optimize throughput of our integration tests across all of our developers and code commits.
- Dynamic Scaling of Jenkins in the Cloud: In this example, we cover how we implement continuous integration and continuous delivery of nightly builds for packaged software using Jenkins and RightScale.
Continuous Integration and Continuous Delivery Explained
Continuous integration is the practice of automatically integrating and testing a piece of software each time code is committed by a developer. Continuous delivery goes a step further to package the software, perform regression testing, and ensure that the software is ready for release. Continuous deployment, sometimes used interchangeably with continuous delivery, is most relevant for web-hosted and SaaS applications and automates the process all the way through to deployment into production.
CI/CD: Why It’s a Perfect Fit for the Cloud
To accelerate the application lifecycle via CI and CD, organizations will need to leverage infrastructure resources (virtual machines, storage, and networking) to automate the build, integration, and testing the code under development. The amount of infrastructure required will vary greatly depending on the number of simultaneous teams or projects, and the phase of each project in the development process. In addition, resource needs may increase during business hours and decrease during non-working time. As a result, companies are increasingly turning to cloud-based options, both public and private, to supply resources for CI and CD processes.
To leverage cloud environments as part of a CI/CD development model, companies need to automate not only the build, integration and testing processes, but also the provisioning and de-provisioning of infrastructure needed to support these processes. In addition, organizations need to ensure consistency between the various infrastructure environments as code moves from development to test to staging and then production.
At RightScale, we leverage our own platform to manage and automate infrastructure as part of CI/CD processes. We leverage three key capabilities:
- Multi-cloud support: The RightScale platform provides a multi-cloud API that enables us to deploy our infrastructure to any cloud at any point in the lifecycle. For example, we can leverage capacity in a VMware vSphere environment during development phases then deploy to a public cloud for testing and production.
- “Infrastructure-as-code”: RightScale supports a variety of configuration management options that enable us to configure servers using code with such tools as Chef, Puppet, and Ansible. This ensures consistency between development, test, staging, and production environments.
- Automate infrastructure: With the RightScale API, we can automate all of the provisioning, updating, scaling, and deprovisioning of infrastructure and integrate those processes into our CI/CD tools and processes.
Check out the next three blogs in the series to learn about each of these use cases: