# How (and Why) We Moved to Spinnaker

DevFeed: [How (and Why) We Moved to Spinnaker](<https://devfeed.tech/articles/how-and-why-we-moved-to-spinnaker-20404.md>)

Original publisher: [Read original article](<https://target.github.io/how-and-why-we-moved-to-spinnaker>)

Author: Target Brands, Inc

Published: 2017-04-07T05:00:00Z

Content type: article

Language: en

Sources: [Target](<https://devfeed.tech/sources/target.md>)

Topics: [CI/CD](<https://devfeed.tech/topics/cicd.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [Jenkins](<https://devfeed.tech/topics/jenkins.md>), [Provisioning](<https://devfeed.tech/topics/provisioning.md>), [Terraform](<https://devfeed.tech/topics/terraform.md>), [Microservices](<https://devfeed.tech/topics/microservices.md>), [Apache Cassandra](<https://devfeed.tech/topics/cassandra.md>), [Persistence](<https://devfeed.tech/topics/persistence.md>), [Cache](<https://devfeed.tech/topics/cache.md>), [Git](<https://devfeed.tech/topics/git.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [cassandra](<https://devfeed.tech/tags/cassandra.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [git](<https://devfeed.tech/tags/git.md>), [jenkins](<https://devfeed.tech/tags/jenkins.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [redis](<https://devfeed.tech/tags/redis.md>), [spinnaker](<https://devfeed.tech/tags/spinnaker.md>), [terraform](<https://devfeed.tech/tags/terraform.md>)

## AI overview

Target describes moving portions of target.com from a homegrown cloud deployment platform to Spinnaker after evaluating CI/CD platforms. The team selected Spinnaker for its Jenkins integration, multi-cloud deployment support, and use of immutable images, then adapted its architecture with Terraform, cloud storage, and managed caching to support resilient, highly available operation.

## Source excerpt

Background Just after the middle of last year, Target expanded beyond its on-prem infrastructure and began deploying portions of target.com to the cloud. The deployment platform was homegrown (codename Houston), and was backed wholly by our public cloud provider. While in some aspects that platform was on par with other prominent continuous deployment offerings, the actual method of deploying code was cumbersome and not adherent to cloud best practices. These shortcomings led to a brief internal evaluation of various CI/CD platforms, which in turn led us to Spinnaker. We chose Spinnaker because it integrates with CI tools we already use at scale (Jenkins), supports deploying to all major public cloud providers, and compels software deployment best practices - all deployments are performed via immutable images, a snapshot of config + code. Supporting a Platform The primary goal of Target's cloud platform is to enable product teams to deploy and manage their applications across multiple cloud providers. We provide CI/CD, monitoring, and service discovery as services, and any application deployed via our platform gets those capabilities via a base image that is pre-configured for connectivity to each service's respective endpoint. Since these components are essentially products we provide to internal customers, we had to ensure the new CD platform was operationally supportable and highly-available. So, as soon as we decided on Spinnaker, a handful of engineers from the Cloud Platform group set about making this happen. Default Spinnaker scripts make it easy to standup a single self-contained server with the microservices and persistence layer all together, but that wasn't conducive to doing blue-green deployments - allowing updates of Spinnaker without downtime to our internal customers. We built jobs for building packages based off the master branch of each Spinnaker component's upstream git repository, and wrote Terraform plans to manage the deployment of each stack.