EXPEDIA GROUP TECHNOLOGY — SOFTWARE

Continuous Deployment at Expedia Group

Fast, safe and repeatable deployments with an open-source solution

The 15 Expedia Group’s brands (2021)
Expedia Group™ brands

What is continuous deployment?

Continuous delivery is different from continuous deployment because it needs a manual step to deploy in production
Difference between continuous deployment and continuous delivery (source: author image)

What is Spinnaker?

Daniel Stenholm image (source Unsplash)
Daniel Stenholm image (source Unsplash)
A generic pipeline starts with a single node and proceeds with a tree of connected nodes. It ends with one or more final nodes.
Example of a generic pipeline structure (source: author image)

Composition, integration, and reuse

Custom pipelines can be created starting from a common template passing template variables
Pipelines can be created starting from a common template (source: author image)
It is possible to create a pipeline template for composition, calling sub-pipelines which can also be pipeline template or not.
A possible re-usable pipeline template composition (source: author image)

Each pipeline is therefore composed in a modular, flexible and standard way at the same time.

In a pipeline based on a template, you can inject additional stages to customise it
Pipeline instance that uses a Template and injects a custom Stage (source: author image)
{
"appConfig": {},
"description": "Automatic pipeline triggered if CD is enabled",
"disabled": false,
"exclude": [
"triggers"
],
"keepWaitingPipelines": false,
"lastModifiedBy": "...",
"limitConcurrent": true,
"notifications": [],
"parameterConfig": [],
"schema": "v2",
"stages": [
{
"completeOtherBranchesThenFail": false,
"continuePipeline": false,
"failPipeline": false,
"inject": {
"after": [
"3"
],
"first": false,
"last": false
},

"judgmentInputs": [],
"name": "Start Deployment",
"notifications": [],
"preconditions": [],
"refId": "StartDeployment",
"type": "checkPreconditions"
}
],
"template": {
"artifactAccount": "front50ArtifactCredentials",
"reference": "spinnaker://<template-name>:<version>",
"type": "front50/pipelineTemplate"
},
"triggers": [],
"type": "templatedPipeline",
"variables": {
...
}
}

Progressive deployment (canary)

With progressive deployment the same amount of traffic is split between Canary and Baseline for a consistent comparison
Progressive deployment — canary judgment (source: author image)

NOTE: The remaining amount of traffic continues to be received by the primary deployment, which always contains the original version of the software. This is where the new version will be installed in case it is promoted.

PD instant rollback means to redirect traffic back to primary version by Kubernetes Virtual Service
PD instant rollback just acting on VirtualService routing (source: author image)
PD Promotion means to move the Canary variant version to Primary variant Deployment
PD Promotion on Primary variant (source: author image)

Conclusions

Jonathan Smith image from Unsplash
Jonathan Smith on Unsplash

Learn more about technology at Expedia Group

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Luca Pelosi

Sr Automation Software Engineer at Expedia Group, technology enthusiast. Gush out ideas, startups, personal growth, finance and innovation as much as possible.