It turns out that Netflix doesn’t just produce binge-worthy movies and shows. It also releases game-changing DevOps tools.
Global enterprises like Netflix serve hundreds of millions of users and continually skirt the edge of what’s possible. So it’s often up to them to create the very development tools they need to meet their business objectives. Necessity is the mother of invention, as they say. Spinnaker is a great example of that.
In this article, we take a look at Spinnaker, where it fits into the CI/CD pipeline, and some of the business benefits it delivers.
What is Spinnaker?
Created at Netflix in 2014 and later released as an open-source tool, Spinnaker is a continuous-delivery platform.
It allows large companies to release software changes quickly, confidently, and securely by automating deployment tasks inside the “delivery” segment of the Continuous Integration & Continuous Delivery (CI/CD) workflow.
Before we dive into Spinnaker, let’s first review the CI/CD workflow so we can better understand where Spinnaker fits in the process.
What is CI/CD?
To under what CI/CD stands for and how it can help in terms of Spinnaker, let’s first take a look at DevOps.
First things first, DevOps
We live in a highly digitised world where people use software from morning to night to complete everyday tasks. From fitness apps, music streaming platforms, and mobile banking to online grocery shopping or ordering pizza, today we rely on applications where we once used to pick up the phone or drive around town running errands.
Most people don’t realise that to make these conveniences feasible on such a large scale, software development as we knew it had to change.
The DevOps methodology came about as an answer to the growing need for software development to be fast, fluid, and failure-resistant. It combines development and operations into one continuous process that embraces collaboration and automation for efficient, consistent, and high-quality output.
Think of it as a factory where code is your raw material and the output is an application—but where the application is never fully “done” and is remoulded often and continuously to meet users’ evolving needs.
Naturally, a crucial element in all of this is how you handle source code. To achieve agility and scale, today’s code has to be stored in a shared repository, be divided into projects, and be assigned to multiple developers at various stages of production. Now, this could easily lead to chaos—unless you implement tooling and automation. And that’s precisely where continuous integration (CI) and continuous delivery (CD) come into play.
Continuous Integration & Continuous Delivery (CI/CD) workflow is a fundamental part of DevOps. And the best companies are always optimising it.
As GitLab explains, “CI/CD automates much or all of the manual human intervention traditionally needed to get new code from a commit into production, as well as infrastructure provisioning. With a CI/CD pipeline, developers can make changes to code that are then automatically tested and pushed out for delivery and deployment.”
The results are faster code releases, minimal downtime, and consistent quality control.
CI refers to incorporating code changes into the main branch of the shared source code, testing these changes, merging them, and kicking off a build—automatically. The whole goal of CI is to identify and fix errors, bugs, security issues, etc., quickly, reliably, and most importantly, early in the lifecycle.
CD, on the other hand, involves “everything from provisioning the infrastructure to deploying the application to the testing or production environment,” as GitLab explains.
As the O’Reilly ebook Continuous Delivery with Spinnaker Fast, Safe, Repeatable Multi-Cloud Deployments says: “Teams using continuous delivery push features and fixes live when they are ready without batching them into formal releases. It is not unusual for continuous delivery teams to push updates live multiple times a day.”
Where does Spinnaker fit in the CI/CD lifecycle?
Spinnaker fits into the continuous delivery side of the CI/CD workflow—and more specifically, the deployment phase.
You see, when it comes to deployment, the process can still potentially involve manual work, like handoffs between people. Spinnaker allows you to automate deployment-related tasks so you can release software changes at a higher velocity confidently.
The same O’Reilly ebook about Spinnaker explains continuous deployment in more detail:
“Continuous deployment goes even further than continuous delivery, automatically pushing each change live once it has passed the automated tests, canary analysis, load testing, and other checks that are used to prove that no regressions were introduced. Continuous delivery and continuous deployment rely on the ability to define an automated and repeatable process for releasing updates. At a cadence as high as tens of releases per week it quickly becomes untenable for each version to be manually deployed in an ad hoc manner. What teams need are tools that can reliably deploy releases, help with monitoring and management [when] there are problems, and otherwise stay out of the way.”
Spinnaker was developed to solve these issues. “It enables teams to automate deployments across multiple cloud accounts and regions, and even across multiple cloud platforms, into coherent ‘pipelines’ that are run whenever a new version is released. This enables teams to design and automate a delivery process that fits their release cadence, and the business criticality of their application.”
The UI gives you a single pane of control and visibility, so you can:
- See the resources that got deployed in the process
- See the status of these resources
- Exercise control by editing, scaling, rolling back and more.
Let’s look at what it can do in more detail.
What are Spinnaker’s features and why should I care?
Following are some features that Spinnaker offers that makes it stand out as a platform. Let’s take a look at them.
Pipeline-as-code for fine-tuning your policies
Spinnaker lets teams deploy software not just quickly and automatically but without worry—even in complex multi-cloud and hybrid environments. How? By allowing you to implement safeguards according to best practices. This prevents situations where systems are down and users/customers are let down.
It comes with built-in deployment strategies but is also highly customisable to suit any enterprise requirements.
Safer cluster deployment:
- Perform seamless error-free rollbacks: Spinnaker makes sure servers are properly sized and ready to go before the changes are reverted—something developers used to have to do manually.
- Rely on automatic cluster locking and exclusion to prevent unintentional overlap of pipelines/tasks using the same resources.
- Avoid downtime by automatically ensuring there’s always at least one active server group, by using Spinnaker’s traffic guards.
- Define deployment windows, for example, to avoid deploying during peak traffic times.
Proper pipeline execution:
- Avoid running the same set of downstream tests or scripts or modifying the same set of clusters. Spinnaker makes sure new executions only start after existing executions have finished.
- Lock pipelines if you don’t want them to be edited for any reason.
- Disable pipelines that are under maintenance or are decommissioned for any reason.
- Implement “manual judgement” inside a pipeline execution if you need a specially designated operator to do things like run a rollback branch or perform QA tests.
- Introduce conditional stage execution where you want to trigger additional tasks based on a condition.
- Impose an authorisation process for certain deployments (e.g., deployments that are connected to accounts with billing or other sensitive user data).
- Automatically create rollback pipelines in the event that another pipeline fails.
- Automatic tagging of approved images once they are tested, promoted and validated.
- Implement conditional checks so that downstream stages run only once a condition is met.
- Automatically compare metrics of a new version of an application against metrics from the current version, using Automated Canary Analysis (ACA).
- Run engineering experiments as part of a pipeline, automatically.
- Test your application using the Chaos Monkey integration.
Observability, auditing and reporting according to best practices:
- Trigger notifications—email, SMS or Slack messages—to alert the right users if and when errors occur.
- Log every orchestrated event as part of a separate event stream so you can perform analytics, debugging and auditing.
- Automatically retain versioning history of pipelines and track every modification. Revert pipeline changes easily.
- Know the details of every server group—how it was created, what task or pipeline it’s associated with, etc.
Better deployment = better business
When you make deployment faster, safer, consistent, and auditable, the business benefits are endless.
Your teams’ productivity increases, you release features faster, your organisation meets compliance requirements with ease, and you minimise the chance of releasing bad software to your customers.
In other words, your devs are happier, your customers are happier, and your COO and CFO are happier as they applaud you for cutting costs and reaching max efficiency.
What about Spinnaker integrations?
Spinnaker was designed to integrate with all kinds of platforms and tools. (After all, what would be the point of automating one phase of the lifecycle at the expense of other automations?)
Spinnaker is the perfect deployment tool when dealing with multiple cloud providers, including AWS, Azure, GCP, Kubernetes, Oracle, and Cloud Foundry.
DevOps tool integrations
Spinnaker integrates with any CI tools currently on the market, including CircleCI, Travis CI, Jenkins, Concourse, Bitbucket, TeamCity.
Spinnaker complements these CI tools “by orchestrating the entire deployment pipeline, including invoking the CI tools, fetching the artifacts they create, and deploying the final package into the target environments,” explains OpsMx, a company that provides managed continuous delivery services.
It also integrates with other DevOps platforms such as Azure DevOps Server. And of course, it is designed to be used in conjunction with popular source code management (SCM) tools like Git.
Spinnaker didn’t bother reinventing the wheel when it comes to security measures such as authentication and authorisation. It hooks into industry-standard login tools like OAuth 2.0, SAML and LDAP. And it is designed to support role-based access control (RBAC) measures based on your role provider, whether it be Google Groups, GitHub Teams, SAML Roles, or LDAP groups.
Project management tools
Since automated notifications will be part of your deployment process with Spinnaker, you can certainly integrate popular notification tools of your choice, such as Slack, Twilio, ServiceNow and Microsoft Teams.
Extensible, by design
Spinnaker is designed to be modular. It uses an API-based architecture and so can be integrated with countless external services.
In addition, the robust open-source Spinnaker community launched a Plugin Framework that has made it easier to extend and customise Spinnaker and easier to add new integrations. For example, you can use an Observability Plugin from Armory to integrate Spinnaker with existing monitoring and observability tools. This has also led various providers, including Alibaba Cloud, OpsMx and Armory, to package Spinnaker with custom features and support.
How reliable and mature is Spinnaker for continuous delivery?
The whole point of Spinnaker is to minimise risks, errors, failures and needless rework in your deployment phase. So it would be quite something if the tool itself wasn’t reliable. You can’t introduce risk in the name of minimising it.
In fact, GitHub classifies Spinnaker as “the most mature and widely productionalised continuous delivery platform.”
Spinnaker’s website also reminds us that by virtue of having been created by Netflix, we know the tool “has been battle-tested in production by hundreds of teams over millions of deployments.”
In addition to Netflix and Google, notable enterprises that have optimised their deployment tasks using Spinnaker with great success include Salesforce, Cisco, Adobe, Airbnb, Target, TransUnion, JPMorgan Chase & Co., Patreon, Under Armour and MuleSoft.
You can check out several success stories on the Spinnaker website.
How can I learn more?
This article is part of a larger series focusing on the technologies and topics found in the first edition of the TechRadar by Devoteam . To see what our community of tech leaders said about the current position of Helm in the market, take a look at the most recent edition of the TechRadar by Devoteam