What is CI/CD as a Service?
Continuous integration (CI) and continuous delivery (CD) enable rapid, frequent delivery of high-quality software to customers. Traditionally, CI/CD tools were deployed on-premises on physical servers, or via virtual machines (VMs) or containers managed by development teams. CI/CD as a service is A new deployment model, allowing development teams to access an online service that provides full CI/CD capabilities.
For example, instead of using a dedicated machine to host Jenkins, an organization can use a managed cloud service. CI/CD services provide an end-to-end DevOps toolchain for software development and deployment, including agile project management, collaboration tools, automated testing tools, repository and pipeline automation, and deployment automation.
In this article:
- Cloud CI/CD: Why Host CI/CD in the Cloud?
- Key Considerations for Choosing a Cloud-based CI/CD Platform
- CI/CD as a Service with Spot.io
Cloud CI/CD: Why Host CI/CD in the Cloud?
Hosting a CI/CD platform on-premises is an option for most organizations. However, this requires time and technical expertise to maintain the infrastructure, and requires some capital expenditures for CI/CD servers.
For most organizations, hosting CI/CD in the cloud is beneficial for several reasons:
- No upfront capital expenditure and moderate operating costs.
- The range of services provided, including onboarding, infrastructure maintenance, security, and support, can save valuable time for development teams.
- If your source code repository is also hosted in the cloud, hosting CI/CD in the same cloud enables easier communication and integration.
- Cloud-based CI/CD makes it easier for geographically distributed teams to collaborate.
CI/CD can also be deployed with a mix of on-premises and cloud-based servers. Modern CI/CD solutions leverage container technology and Kubernetes clusters, which operate well across on-premises and public cloud environments, supporting hybrid infrastructure scenarios.
Related content: Read our guide to Kubernetes CI/CD (coming soon)
Key Considerations for Choosing a Cloud-based CI/CD Platform
1. Third-party vs. Cloud-native CI/CD Tools
AWS, Microsoft, and Google each provide platform-specific CI/CD pipeline tools (AWS CodeBuild, Azure Pipelines, and Google Cloud Build, respectively). These services often lag behind third-party CI/CD tools due to lack of support for certain technology stacks, insufficient version control integration, or a limited feature set. These cloud-native options can also increase vendor lock-in and make multi-cloud infrastructure difficult to adopt.
Unlike these cloud offerings, third-party CI/CD tools integrate with a variety of other tools and services. This gives you greater flexibility because you are not limited to a single cloud provider or a small set of language and tool support.
2. Support for Docker Containers
Traditionally, CI/CD platforms were installed in virtual machines (VMs), which are digital versions of physical computers. Jobs used to run on the host VM where the agent is installed. Many of these platforms now allow you to run jobs in Docker environments.
This means more control over the context where your tasks run. Each step in the deployment pipeline is run in its own container with its own jobs.
This has the following advantages:
- Reusability—container-based pipelines allow blocks to be reused in other workflows.
- Versatility—you can rely on the same software stack on all platforms.
- Isolation—Containerized pipelines allow for isolation between pipeline jobs. Every single job runs off of a container image which includes all the dependencies needed for that application.
- Portability—as the de facto delivery standard, Docker is not tied to any specific cloud provider, operating system, or framework.
3. CI/CD Tools Should Support Your Programming Languages and Tools
Each programming language or language group (JVM languages, LLVM compiled languages, .NET languages, etc.) tends to have its own build and test tools. To be useful, a CI/CD tool must support all languages belonging to a particular project. Otherwise, you will need to create one or more plugins for the tool.
Docker images are becoming increasingly important for distributed, modular, and microservices software deployments. If your CI/CD tool can process Docker images, it can be useful for:
- Creating images from sources and binaries
- Deploying images to specific environments
Without this feature, you may have to write plugins or scripts to implement the desired Docker features. Similarly, CI/CD tools must support Kubernetes and other container orchestration systems used in the environment.
4. CI/CD Must Integrate with Your Repositories
Repositories are important for CI and CD. In addition to being the end point of the check-in and testing process, the software repository is also the recommended location for storing CI and CD scripts and configuration files. Many CI/CD platforms can store scripts and other files internally, but it’s usually a good idea to store them in version control outside the tool.
Almost all CI/CD tools can interact with Git. Others integrate directly with GitHub, GitHub Enterprise, GitLab, and Bitbucket. Some support Subversion and Mercurial.
5. Extensions and Plugins
Plugins are created to extend or enhance the functionality of the software and to support integration with other technologies and environments. The more add-ons a tool has, the wider its capabilities will be.
Open source solutions often provide greater benefits because many users are constantly developing new extensions and uploading them to public repositories. Not all of these plugins are helpful, but choosing wisely can significantly improve your CI/CD automation process.
6. Evaluate Costs
When planning your budget, consider current and projected needs, such as staffing goals, expansion plans, and products and services to be deployed. To determine which service plan is right for you, consider the following factors:
- How much time your team spends per day building software releases
- Number of concurrent builds
- Number of users
- Amount of data you maintain
Continuous Delivery as a Service with Spot.io
Continuous Delivery has entered a new phase as more and more applications are migrating to microservices, with Kubernetes as the container orchestrator of choice for many. Kubernetes enables agility and faster software development cycles, but as release frequency increases, supporting delivery at large-scale becomes complex and inefficient.
Spot by NetApp introduced Ocean CD as part of the Ocean suite for Kubernetes to address the specific challenges of modern delivery release cycles. Ocean CD provides complete deployment and verification automation in one fully-managed solution, making it easy for users to execute deployments with high confidence. Key features of Ocean CD include:
Out-of-the-box progressive delivery strategies
Canary and blue/green strategies are easy to define, automate and customize. Developers commit code, use any CI tool and Ocean CD detects the deployments, automatically initiating the assigned rollout strategy.
Continuous verification automation
Ensure stability and quality of deployments even as release frequency increases. Routine verifications of deployments are conducted automatically and based on metrics from monitoring tools like DataDog ,New Relic, Prometheus, and CloudWatch.
Identify and mitigate incidents in the early stages of your releases. When issues are detected, Ocean CD initiates safe rollbacks to application deployments based on both Kubernetes warnings and metrics collected during verification processes. Save hundreds of hours when production is unstable as a result of an unsuccessful release.
Granular visibility for developers and service owners
Monitor deployment phases with real-time data and visualization into rollout processes. Provide a single source of truth for code changes in all your clusters and for all cloud providers. Allow R&D teams to get real-time insights, make decisions and automate the desired actions.