SlideShare a Scribd company logo
Continuous
Deployment
Strategies
Ketan
Padegaonkar
TECHNIQUES FOR IMPLEMENTATION
@snap_ci
snap-ci.com
snap-ci.com © 2015 2
CONTENTS
Page
Author Bio 3
Chapter 1: Continuous Deployment Strategies 4-5
1.1 Snowflake Servers 6
1.2 Phoenix Servers 7
1.3 How Does this Apply to Continuous Deployment? 8
1.4 Blue/Green Deployments 9
1.5 Canary Releases 10
Chapter 2: Blue / Green Deployments 11-12
2.1 Changing the load balancer/router 13
2.2 Changing public DNS records 14
2.3 Load Balancer + Internal DNS records 15
Chapter 3: Implementation Techniques for Canary Releases 16-17
3.1 Long running migration phase 18
snap-ci.com © 2015 3
AUTHOR BIO
Ketan P

Senior Developer
Quintessential shaver of yaks, supporter and developer
for open source, long time ThoughtWorker and builder
of continuous delivery tools @goforcd and @snap_ci.
@ketanpkr

github.com/ketan
snap-ci.com © 2015 4
Continuous
Delivery
Strategies
snap-ci.com © 2015 5
CHAPTER 1
Not very long ago, during the days of Perl/CGI and PHP (and even today);
deployments involved ftp-ing your files to the webserver directory and running a
bunch of migrations by shelling into the webserver.
Modern webapps and application servers have evolved quite a bit since then, but
many developers continue to use similar strategies to perform deployments. FTP has
been replaced by git pull followed by bundle install or npm install and then restarting
the appserver that you use.
Along with similar deployment strategies, many developers also continue to use the
same servers for months and years on end. But even with the right patches, updates,
etc, after a while it’s easy to end up with a “snowflake server”: a server with a delicate,
unique configuration that does not lend itself to change. A solution to this is the
“phoenix server.” Here’s a little more about both these concepts…
snap-ci.com © 2015 6
SNOWFLAKE SERVERS
While this approach may work great for small webapps, it quickly falls apart when
you’re managing anything but a couple of servers.
It is generally difficult to set up a new server if your existing server has problems. If
you’re looking to scale by adding more servers, it’s difficult to keep each server’s
software, configuration and services in sync. You may not be in a position to replicate a
production (or production-like) environment for testing.
Over time, one loses track of the magic configuration files, packages and services that
are installed on the production machines.
1.1
snap-ci.com © 2015 7
PHOENIX SERVERS
Some these issues can be addressed by using a bit of configuration management tools
like Chef, Puppet, or Ansible, among a few others.
These tools help avoid configuration drift, the sort of one-off changes that go
unnoticed and undocumented.
An important point to note is that these tools only apply the configuration that they are
asked to. If you applied any additional configuration outside of what these tools are
aware of, or if you forgot to un-apply or remove some configuration, you’d be out of
luck. This is what Ranjib Dey calls the Accumulator Anti-Pattern.
A much better alternative is to tear down servers periodically and apply configuration
changes every once in a while. This helps avoid and catch any configuration drift
outside of configuration management tools. Eventually one can move to deploying new
servers on every configuration change. This strategy is known as an Immutable Server.
1.2
snap-ci.com © 2015 8
HOW DOES THIS APPLY TO CD?
Continuous Deployment requires that at a very minimum, you have: * a solid
foundation of tests that gives you confidence in your software * a set of automation
tools and scripts that give you confidence that your deployment will succeed, or
rollback in case of issues
A few of the more popular continuous deployment strategies include blue/green
deployments and canary releases, which I’ve briefly outlined below…
1.3
snap-ci.com © 2015 9
BLUE / GREEN DEPLOYMENTS
Blue/green is a technique for deployments where the existing running deployment is
left in place. A new version of the application is installed in parallel with the existing
version. When the new version is ready, cut over to the new version by changing the
load balancer configuration.
This makes rollback really simple and gives time to make sure that the new version
works as expected before putting it live.
1.4
This is one of the simplest CD strategies to implement and get started with.
v1.0
WEB
SERVER
ROUTER
APP
SERVER
DB
SERVER
v1.1
v1.0
v1.1
v1.0
v1.1
snap-ci.com © 2015 10
CANARY RELEASES
This is named after the “canary in a coal mine” metaphor. The metaphor originates
from the times when miners used to carry caged canaries into the mines with them: if
there were any dangerous gases (methane or carbon monoxide) in the mine, the
canary would die before the gas levels reached levels hazardous to humans.
Canary releasing is similar to blue/green, although only a small amount of the servers
are upgraded. Then, using a cookie or similar, a fraction of users are directed to the
new version.
1.5
This allows for the load and functionality of the site to be tested with a small group of
users. If the application behaves as expected, migrate more and more servers to the
new version until all the users are on the new version.
This technique can also be used to do some interesting multi-variant testing and
performance testing.
v1.0
v1.1
snap-ci.com © 2015 11
Blue/Green
Deployments
snap-ci.com © 2015 12
CHAPTER 2
In the previous article on Continuous Deployment Strategies, we explored at a high
level some of the popular CD strategies.
This article describes some of the implementation techniques for performing blue/
green deployments.
To recap – Blue/green is a technique for deployments where the existing running
deployment is left in place. A new version of the application is installed in parallel with
the existing version. When the new version is ready, cut over to the new version by
changing the load balancer configuration.
The basic idea behind this technique is to be able to route users to either the green set
of servers, or the blue set of servers.
This can be achieved in multiple ways:
Changing the load balancer/router
Changing public DNS records

Load Balancer + Internal DNS records
snap-ci.com © 2015 13
CHANGING THE LOAD BALANCER / ROUTER2.1
Using this technique you would change the load balancer or request router to point to
either the blue server or the green server.
v1.0
WEB
SERVER
ROUTER
APP
SERVER
DB
SERVER
v1.1
v1.0
v1.1
v1.0
v1.1
snap-ci.com © 2015 14
CHANGING PUBLIC DNS RECORDS2.2
Using this technique involves load-balancing at the DNS level by changing either the
CNAME or the A records. When users request a DNS entry for your website, your DNS
server could return the IP address for either the blue server or the green server. This
particular approach would require that the time to live (TTL) is set to a very small value.
This particular approach is not recommended for changing public DNS records because
some DNS servers run some browsers don’t respect the low TTL values on the DNS entry,
they will cache the DNS records for longer than the TTL. This may leave a subset of your
users not being able to access your website.
DNS
SERVER
example.com
1.2.3.4
OR
5.6.7.8
green.example.com => 1.2.3.4
blue.example.com => 5.6.7.8
snap-ci.com © 2015 15
LOAD BALANCER + INTERNAL DNS RECORDS2.3
This approach is a combination of the two techniques we’ve seen so far. In this technique,
instead of changing public DNS records, we’ll change internal (private) DNS records. Since
the internal network and the DNS server can be managed and configured to respect TTLs,
this approach works a lot better than changing public DNS records.
DNS
SERVER
internal.example.com
192.168.1.1
OR
192.168.2.1
green.internal.example.com => 192.168.1.1
blue.internal.example.com => 192.168.2.1
snap-ci.com © 2015 16
Implementation
Techniques for
Canary Releases
snap-ci.com © 2015 17
CHAPTER 3
In the previous article on Continuous Deployment Strategies, we explored at a high
level some of the popular CD strategies.This article describes some of the
implementation techniques for performing Canary Releases.
Just like Blue/Green Deployments, one would start by deploying the application to a
small subset of your servers. Once the subset of servers is deployed to, you may then
route requests for a few users to the new set of servers.
This strategy lets you do a lot of interesting things:
Test the performance of the application.
Perform A/B tests based on demographics and user profiles, for example “users
between the ages of 20 – 25 living in Iowa.”
Load Balancer + Internal DNS records.
As your confidence in the deployment improves, you can deploy your application to
more and more servers, and route more users to the new servers.
v1.0
v1.1
snap-ci.com © 2015 18
LONG RUNNING MIGRATION PHASE
Because one or more versions of your application may be running in production for
some period of time, your application and its components (webservices, microservices,
database) needs to be backward-compatible so that it works with at least one or two
previous versions of your application. This Parallel-Change Pattern is a simple and
effective way to implement backward-incompatible changes between application
interfaces.
3.1
© 2015
snap-ci.com

More Related Content

What's hot

The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native Journey
Matt Stine
 
Cloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a CacheCloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a Cache
cornelia davis
 
All Things Jenkins and Cloud Foundry (Cloud Foundry Summit 2014)
 All Things Jenkins and Cloud Foundry (Cloud Foundry Summit 2014) All Things Jenkins and Cloud Foundry (Cloud Foundry Summit 2014)
All Things Jenkins and Cloud Foundry (Cloud Foundry Summit 2014)
VMware Tanzu
 
DevOps Digital Transformation: A real life use case enabled by Alien4Cloud
DevOps Digital Transformation: A real life use case enabled by Alien4CloudDevOps Digital Transformation: A real life use case enabled by Alien4Cloud
DevOps Digital Transformation: A real life use case enabled by Alien4Cloud
Cloudify Community
 
ThoughtWorks Technology Radar Roadshow - Brisbane
ThoughtWorks Technology Radar Roadshow - BrisbaneThoughtWorks Technology Radar Roadshow - Brisbane
ThoughtWorks Technology Radar Roadshow - Brisbane
Thoughtworks
 
DevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWSDevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWS
atSistemas
 
DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014
Jean-Charles JOREL
 
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-nativeKubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
cornelia davis
 
Top 10 DevOps Areas Need To Focus
Top 10 DevOps Areas Need To FocusTop 10 DevOps Areas Need To Focus
Top 10 DevOps Areas Need To Focus
devopsjourney
 
Velocity NY 2016 - Devops: Who Does What?
Velocity NY 2016 - Devops: Who Does What?Velocity NY 2016 - Devops: Who Does What?
Velocity NY 2016 - Devops: Who Does What?
cornelia davis
 
Canary releases & Blue green deployment
Canary releases & Blue green deploymentCanary releases & Blue green deployment
Canary releases & Blue green deployment
SQUADEX
 
Linux Collaboration Summit Keynote: Transformation: It Takes a Platform
Linux Collaboration Summit Keynote: Transformation: It Takes a PlatformLinux Collaboration Summit Keynote: Transformation: It Takes a Platform
Linux Collaboration Summit Keynote: Transformation: It Takes a Platform
cornelia davis
 
DevOps, Common use cases, Architectures, Best Practices
DevOps, Common use cases, Architectures, Best PracticesDevOps, Common use cases, Architectures, Best Practices
DevOps, Common use cases, Architectures, Best Practices
Shiva Narayanaswamy
 
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Amazon Web Services
 
Evolving to Cloud-Native - Nate Schutta (2/2)
Evolving to Cloud-Native - Nate Schutta (2/2)Evolving to Cloud-Native - Nate Schutta (2/2)
Evolving to Cloud-Native - Nate Schutta (2/2)
VMware Tanzu
 
OpenWhisk: Event-driven Design
OpenWhisk: Event-driven DesignOpenWhisk: Event-driven Design
OpenWhisk: Event-driven Design
Altoros
 
Skytap parasoft webinar new years resolution- accelerate sdlc
Skytap parasoft webinar new years resolution- accelerate sdlcSkytap parasoft webinar new years resolution- accelerate sdlc
Skytap parasoft webinar new years resolution- accelerate sdlc
Skytap Cloud
 
CloudWorld: What Does Cloud-Native Mean Anyway?
CloudWorld: What Does Cloud-Native Mean Anyway?CloudWorld: What Does Cloud-Native Mean Anyway?
CloudWorld: What Does Cloud-Native Mean Anyway?
Grace Jansen
 
Build CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesBuild CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation Slides
Amazon Web Services
 
Azure DevOps with VSTS
Azure DevOps with VSTSAzure DevOps with VSTS
Azure DevOps with VSTS
Microsoft Tech Community
 

What's hot (20)

The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native Journey
 
Cloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a CacheCloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a Cache
 
All Things Jenkins and Cloud Foundry (Cloud Foundry Summit 2014)
 All Things Jenkins and Cloud Foundry (Cloud Foundry Summit 2014) All Things Jenkins and Cloud Foundry (Cloud Foundry Summit 2014)
All Things Jenkins and Cloud Foundry (Cloud Foundry Summit 2014)
 
DevOps Digital Transformation: A real life use case enabled by Alien4Cloud
DevOps Digital Transformation: A real life use case enabled by Alien4CloudDevOps Digital Transformation: A real life use case enabled by Alien4Cloud
DevOps Digital Transformation: A real life use case enabled by Alien4Cloud
 
ThoughtWorks Technology Radar Roadshow - Brisbane
ThoughtWorks Technology Radar Roadshow - BrisbaneThoughtWorks Technology Radar Roadshow - Brisbane
ThoughtWorks Technology Radar Roadshow - Brisbane
 
DevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWSDevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWS
 
DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014DevOps@Morpho for ParisDevOps - 2nd of December 2014
DevOps@Morpho for ParisDevOps - 2nd of December 2014
 
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-nativeKubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
 
Top 10 DevOps Areas Need To Focus
Top 10 DevOps Areas Need To FocusTop 10 DevOps Areas Need To Focus
Top 10 DevOps Areas Need To Focus
 
Velocity NY 2016 - Devops: Who Does What?
Velocity NY 2016 - Devops: Who Does What?Velocity NY 2016 - Devops: Who Does What?
Velocity NY 2016 - Devops: Who Does What?
 
Canary releases & Blue green deployment
Canary releases & Blue green deploymentCanary releases & Blue green deployment
Canary releases & Blue green deployment
 
Linux Collaboration Summit Keynote: Transformation: It Takes a Platform
Linux Collaboration Summit Keynote: Transformation: It Takes a PlatformLinux Collaboration Summit Keynote: Transformation: It Takes a Platform
Linux Collaboration Summit Keynote: Transformation: It Takes a Platform
 
DevOps, Common use cases, Architectures, Best Practices
DevOps, Common use cases, Architectures, Best PracticesDevOps, Common use cases, Architectures, Best Practices
DevOps, Common use cases, Architectures, Best Practices
 
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
 
Evolving to Cloud-Native - Nate Schutta (2/2)
Evolving to Cloud-Native - Nate Schutta (2/2)Evolving to Cloud-Native - Nate Schutta (2/2)
Evolving to Cloud-Native - Nate Schutta (2/2)
 
OpenWhisk: Event-driven Design
OpenWhisk: Event-driven DesignOpenWhisk: Event-driven Design
OpenWhisk: Event-driven Design
 
Skytap parasoft webinar new years resolution- accelerate sdlc
Skytap parasoft webinar new years resolution- accelerate sdlcSkytap parasoft webinar new years resolution- accelerate sdlc
Skytap parasoft webinar new years resolution- accelerate sdlc
 
CloudWorld: What Does Cloud-Native Mean Anyway?
CloudWorld: What Does Cloud-Native Mean Anyway?CloudWorld: What Does Cloud-Native Mean Anyway?
CloudWorld: What Does Cloud-Native Mean Anyway?
 
Build CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesBuild CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation Slides
 
Azure DevOps with VSTS
Azure DevOps with VSTSAzure DevOps with VSTS
Azure DevOps with VSTS
 

Viewers also liked

Deploying and Testing Microservices
Deploying and Testing MicroservicesDeploying and Testing Microservices
Deploying and Testing Microservices
Thoughtworks
 
Disruptive technologies that will change aviation in the coming years
Disruptive technologies that will change aviation in the coming yearsDisruptive technologies that will change aviation in the coming years
Disruptive technologies that will change aviation in the coming years
Thoughtworks
 
Olhares Diversos, Oportunidades Iguais | ThoughtWorks na HSM
Olhares Diversos, Oportunidades Iguais | ThoughtWorks na HSMOlhares Diversos, Oportunidades Iguais | ThoughtWorks na HSM
Olhares Diversos, Oportunidades Iguais | ThoughtWorks na HSM
Thoughtworks
 
How do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about PipelinesHow do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about Pipelines
ThoughtWorks Studios
 
How do you implement Continuous Delivery? Part 2: Code Management
How do you implement Continuous Delivery? Part 2: Code ManagementHow do you implement Continuous Delivery? Part 2: Code Management
How do you implement Continuous Delivery? Part 2: Code Management
Thoughtworks
 
How do you implement Continuous Delivery? Part 4: Automated Testing
How do you implement Continuous Delivery? Part 4: Automated TestingHow do you implement Continuous Delivery? Part 4: Automated Testing
How do you implement Continuous Delivery? Part 4: Automated Testing
Thoughtworks
 
How do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about PipelinesHow do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about Pipelines
Thoughtworks
 
How do you implement Continuous Delivery?: Part 5 - Deployment Patterns
How do you implement Continuous Delivery?: Part 5 - Deployment PatternsHow do you implement Continuous Delivery?: Part 5 - Deployment Patterns
How do you implement Continuous Delivery?: Part 5 - Deployment Patterns
Thoughtworks
 
How do you implement Continuous Delivery? Part 1
How do you implement Continuous Delivery? Part 1How do you implement Continuous Delivery? Part 1
How do you implement Continuous Delivery? Part 1
Thoughtworks
 
Testing Microservices Architecture
Testing Microservices ArchitectureTesting Microservices Architecture
Testing Microservices Architecture
Łukasz Rosłonek
 
Test-Driven Development (TDD)
Test-Driven Development (TDD)Test-Driven Development (TDD)
Test-Driven Development (TDD)
Brian Rasmussen
 
[Business Agility] - Building the right thing and building it right.
[Business Agility] - Building the right thing and building it right.[Business Agility] - Building the right thing and building it right.
[Business Agility] - Building the right thing and building it right.
Thoughtworks
 
Testing strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorks
Testing strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorksTesting strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorks
Testing strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorksThoughtworks
 
Strategy to Execution by Jonny Schneider - ThoughtWorks
Strategy to Execution by Jonny Schneider - ThoughtWorksStrategy to Execution by Jonny Schneider - ThoughtWorks
Strategy to Execution by Jonny Schneider - ThoughtWorks
Thoughtworks
 
MobileTechTalk - Android application troubleshooting
MobileTechTalk - Android application troubleshootingMobileTechTalk - Android application troubleshooting
MobileTechTalk - Android application troubleshooting
GlobalLogic Ukraine
 
Keynote_HITC_March2015
Keynote_HITC_March2015Keynote_HITC_March2015
Keynote_HITC_March2015
Geri Kimoto
 

Viewers also liked (16)

Deploying and Testing Microservices
Deploying and Testing MicroservicesDeploying and Testing Microservices
Deploying and Testing Microservices
 
Disruptive technologies that will change aviation in the coming years
Disruptive technologies that will change aviation in the coming yearsDisruptive technologies that will change aviation in the coming years
Disruptive technologies that will change aviation in the coming years
 
Olhares Diversos, Oportunidades Iguais | ThoughtWorks na HSM
Olhares Diversos, Oportunidades Iguais | ThoughtWorks na HSMOlhares Diversos, Oportunidades Iguais | ThoughtWorks na HSM
Olhares Diversos, Oportunidades Iguais | ThoughtWorks na HSM
 
How do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about PipelinesHow do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about Pipelines
 
How do you implement Continuous Delivery? Part 2: Code Management
How do you implement Continuous Delivery? Part 2: Code ManagementHow do you implement Continuous Delivery? Part 2: Code Management
How do you implement Continuous Delivery? Part 2: Code Management
 
How do you implement Continuous Delivery? Part 4: Automated Testing
How do you implement Continuous Delivery? Part 4: Automated TestingHow do you implement Continuous Delivery? Part 4: Automated Testing
How do you implement Continuous Delivery? Part 4: Automated Testing
 
How do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about PipelinesHow do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about Pipelines
 
How do you implement Continuous Delivery?: Part 5 - Deployment Patterns
How do you implement Continuous Delivery?: Part 5 - Deployment PatternsHow do you implement Continuous Delivery?: Part 5 - Deployment Patterns
How do you implement Continuous Delivery?: Part 5 - Deployment Patterns
 
How do you implement Continuous Delivery? Part 1
How do you implement Continuous Delivery? Part 1How do you implement Continuous Delivery? Part 1
How do you implement Continuous Delivery? Part 1
 
Testing Microservices Architecture
Testing Microservices ArchitectureTesting Microservices Architecture
Testing Microservices Architecture
 
Test-Driven Development (TDD)
Test-Driven Development (TDD)Test-Driven Development (TDD)
Test-Driven Development (TDD)
 
[Business Agility] - Building the right thing and building it right.
[Business Agility] - Building the right thing and building it right.[Business Agility] - Building the right thing and building it right.
[Business Agility] - Building the right thing and building it right.
 
Testing strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorks
Testing strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorksTesting strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorks
Testing strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorks
 
Strategy to Execution by Jonny Schneider - ThoughtWorks
Strategy to Execution by Jonny Schneider - ThoughtWorksStrategy to Execution by Jonny Schneider - ThoughtWorks
Strategy to Execution by Jonny Schneider - ThoughtWorks
 
MobileTechTalk - Android application troubleshooting
MobileTechTalk - Android application troubleshootingMobileTechTalk - Android application troubleshooting
MobileTechTalk - Android application troubleshooting
 
Keynote_HITC_March2015
Keynote_HITC_March2015Keynote_HITC_March2015
Keynote_HITC_March2015
 

Similar to Continuous Deployment Strategies

Executing Deployment & Release Strategies
Executing Deployment & Release StrategiesExecuting Deployment & Release Strategies
Executing Deployment & Release Strategies
OpenSense Labs
 
Deployment Strategy PowerPoint Presentation Slides
Deployment Strategy PowerPoint Presentation SlidesDeployment Strategy PowerPoint Presentation Slides
Deployment Strategy PowerPoint Presentation Slides
SlideTeam
 
Deployment Strategies Powerpoint Presentation Slides
Deployment Strategies Powerpoint Presentation SlidesDeployment Strategies Powerpoint Presentation Slides
Deployment Strategies Powerpoint Presentation Slides
SlideTeam
 
Everything about Blue-Green Deployment Strategy!
Everything about Blue-Green Deployment Strategy!Everything about Blue-Green Deployment Strategy!
Everything about Blue-Green Deployment Strategy!
OpsTree solutions
 
Shift Happens - Rapidly Rolling Forward During Production Failure
Shift Happens - Rapidly Rolling Forward During Production FailureShift Happens - Rapidly Rolling Forward During Production Failure
Shift Happens - Rapidly Rolling Forward During Production Failure
IBM UrbanCode Products
 
Dark launch
Dark launchDark launch
Pipeline_Patterns_R7.pdf
Pipeline_Patterns_R7.pdfPipeline_Patterns_R7.pdf
Pipeline_Patterns_R7.pdf
Srinivas Kannan
 
DevOps.pptx
DevOps.pptxDevOps.pptx
DevOps.pptx
EswarVineet
 
Upgrading to Oracle SOA 12.1 & 12.2 - Practical Steps and Project Experiences
Upgrading to Oracle SOA 12.1 & 12.2 - Practical Steps and Project ExperiencesUpgrading to Oracle SOA 12.1 & 12.2 - Practical Steps and Project Experiences
Upgrading to Oracle SOA 12.1 & 12.2 - Practical Steps and Project Experiences
Bruno Alves
 
ukoug-soa-sig-june-2016 v0.5
ukoug-soa-sig-june-2016 v0.5ukoug-soa-sig-june-2016 v0.5
ukoug-soa-sig-june-2016 v0.5Bruno Alves
 
IBM Innovate 2013 Session: DevOps 101
IBM Innovate 2013 Session: DevOps 101IBM Innovate 2013 Session: DevOps 101
IBM Innovate 2013 Session: DevOps 101Sanjeev Sharma
 
Using DevOps to Improve Software Quality in the Cloud
Using DevOps to Improve Software Quality in the CloudUsing DevOps to Improve Software Quality in the Cloud
Using DevOps to Improve Software Quality in the Cloud
TechWell
 
Intro To Continuous Delivery
Intro To Continuous DeliveryIntro To Continuous Delivery
Intro To Continuous Delivery
Bhanu Musunooru
 
Pre-Con Ed: Upgrading to CA Service Management
Pre-Con Ed: Upgrading to CA Service ManagementPre-Con Ed: Upgrading to CA Service Management
Pre-Con Ed: Upgrading to CA Service Management
CA Technologies
 
Decoding Puppet & Jenkins via DevOps
Decoding Puppet & Jenkins via DevOpsDecoding Puppet & Jenkins via DevOps
Decoding Puppet & Jenkins via DevOps
Skillspeed
 
A PeopleSoft Roadmap
A PeopleSoft RoadmapA PeopleSoft Roadmap
A PeopleSoft Roadmap
Cedar Consulting
 
Path To Continuous Test Automation Using CICD Pipeline.pdf
Path To Continuous Test Automation Using CICD Pipeline.pdfPath To Continuous Test Automation Using CICD Pipeline.pdf
Path To Continuous Test Automation Using CICD Pipeline.pdf
pCloudy
 
Pivotal Cloud Foundry 2.6: A First Look
Pivotal Cloud Foundry 2.6: A First LookPivotal Cloud Foundry 2.6: A First Look
Pivotal Cloud Foundry 2.6: A First Look
VMware Tanzu
 
Pivotal Cloud Foundry 2.4: A First Look
Pivotal Cloud Foundry 2.4: A First LookPivotal Cloud Foundry 2.4: A First Look
Pivotal Cloud Foundry 2.4: A First Look
VMware Tanzu
 
Ansible
AnsibleAnsible

Similar to Continuous Deployment Strategies (20)

Executing Deployment & Release Strategies
Executing Deployment & Release StrategiesExecuting Deployment & Release Strategies
Executing Deployment & Release Strategies
 
Deployment Strategy PowerPoint Presentation Slides
Deployment Strategy PowerPoint Presentation SlidesDeployment Strategy PowerPoint Presentation Slides
Deployment Strategy PowerPoint Presentation Slides
 
Deployment Strategies Powerpoint Presentation Slides
Deployment Strategies Powerpoint Presentation SlidesDeployment Strategies Powerpoint Presentation Slides
Deployment Strategies Powerpoint Presentation Slides
 
Everything about Blue-Green Deployment Strategy!
Everything about Blue-Green Deployment Strategy!Everything about Blue-Green Deployment Strategy!
Everything about Blue-Green Deployment Strategy!
 
Shift Happens - Rapidly Rolling Forward During Production Failure
Shift Happens - Rapidly Rolling Forward During Production FailureShift Happens - Rapidly Rolling Forward During Production Failure
Shift Happens - Rapidly Rolling Forward During Production Failure
 
Dark launch
Dark launchDark launch
Dark launch
 
Pipeline_Patterns_R7.pdf
Pipeline_Patterns_R7.pdfPipeline_Patterns_R7.pdf
Pipeline_Patterns_R7.pdf
 
DevOps.pptx
DevOps.pptxDevOps.pptx
DevOps.pptx
 
Upgrading to Oracle SOA 12.1 & 12.2 - Practical Steps and Project Experiences
Upgrading to Oracle SOA 12.1 & 12.2 - Practical Steps and Project ExperiencesUpgrading to Oracle SOA 12.1 & 12.2 - Practical Steps and Project Experiences
Upgrading to Oracle SOA 12.1 & 12.2 - Practical Steps and Project Experiences
 
ukoug-soa-sig-june-2016 v0.5
ukoug-soa-sig-june-2016 v0.5ukoug-soa-sig-june-2016 v0.5
ukoug-soa-sig-june-2016 v0.5
 
IBM Innovate 2013 Session: DevOps 101
IBM Innovate 2013 Session: DevOps 101IBM Innovate 2013 Session: DevOps 101
IBM Innovate 2013 Session: DevOps 101
 
Using DevOps to Improve Software Quality in the Cloud
Using DevOps to Improve Software Quality in the CloudUsing DevOps to Improve Software Quality in the Cloud
Using DevOps to Improve Software Quality in the Cloud
 
Intro To Continuous Delivery
Intro To Continuous DeliveryIntro To Continuous Delivery
Intro To Continuous Delivery
 
Pre-Con Ed: Upgrading to CA Service Management
Pre-Con Ed: Upgrading to CA Service ManagementPre-Con Ed: Upgrading to CA Service Management
Pre-Con Ed: Upgrading to CA Service Management
 
Decoding Puppet & Jenkins via DevOps
Decoding Puppet & Jenkins via DevOpsDecoding Puppet & Jenkins via DevOps
Decoding Puppet & Jenkins via DevOps
 
A PeopleSoft Roadmap
A PeopleSoft RoadmapA PeopleSoft Roadmap
A PeopleSoft Roadmap
 
Path To Continuous Test Automation Using CICD Pipeline.pdf
Path To Continuous Test Automation Using CICD Pipeline.pdfPath To Continuous Test Automation Using CICD Pipeline.pdf
Path To Continuous Test Automation Using CICD Pipeline.pdf
 
Pivotal Cloud Foundry 2.6: A First Look
Pivotal Cloud Foundry 2.6: A First LookPivotal Cloud Foundry 2.6: A First Look
Pivotal Cloud Foundry 2.6: A First Look
 
Pivotal Cloud Foundry 2.4: A First Look
Pivotal Cloud Foundry 2.4: A First LookPivotal Cloud Foundry 2.4: A First Look
Pivotal Cloud Foundry 2.4: A First Look
 
Ansible
AnsibleAnsible
Ansible
 

More from Thoughtworks

Design System as a Product
Design System as a ProductDesign System as a Product
Design System as a Product
Thoughtworks
 
Designers, Developers & Dogs
Designers, Developers & DogsDesigners, Developers & Dogs
Designers, Developers & Dogs
Thoughtworks
 
Cloud-first for fast innovation
Cloud-first for fast innovationCloud-first for fast innovation
Cloud-first for fast innovation
Thoughtworks
 
More impact with flexible teams
More impact with flexible teamsMore impact with flexible teams
More impact with flexible teams
Thoughtworks
 
Culture of Innovation
Culture of InnovationCulture of Innovation
Culture of Innovation
Thoughtworks
 
Dual-Track Agile
Dual-Track AgileDual-Track Agile
Dual-Track Agile
Thoughtworks
 
Developer Experience
Developer ExperienceDeveloper Experience
Developer Experience
Thoughtworks
 
When we design together
When we design togetherWhen we design together
When we design together
Thoughtworks
 
Hardware is hard(er)
Hardware is hard(er)Hardware is hard(er)
Hardware is hard(er)
Thoughtworks
 
Customer-centric innovation enabled by cloud
 Customer-centric innovation enabled by cloud Customer-centric innovation enabled by cloud
Customer-centric innovation enabled by cloud
Thoughtworks
 
Amazon's Culture of Innovation
Amazon's Culture of InnovationAmazon's Culture of Innovation
Amazon's Culture of Innovation
Thoughtworks
 
When in doubt, go live
When in doubt, go liveWhen in doubt, go live
When in doubt, go live
Thoughtworks
 
Don't cross the Rubicon
Don't cross the RubiconDon't cross the Rubicon
Don't cross the Rubicon
Thoughtworks
 
Error handling
Error handlingError handling
Error handling
Thoughtworks
 
Your test coverage is a lie!
Your test coverage is a lie!Your test coverage is a lie!
Your test coverage is a lie!
Thoughtworks
 
Docker container security
Docker container securityDocker container security
Docker container security
Thoughtworks
 
Redefining the unit
Redefining the unitRedefining the unit
Redefining the unit
Thoughtworks
 
Technology Radar Webinar UK - Vol. 22
Technology Radar Webinar UK - Vol. 22Technology Radar Webinar UK - Vol. 22
Technology Radar Webinar UK - Vol. 22
Thoughtworks
 
A Tribute to Turing
A Tribute to TuringA Tribute to Turing
A Tribute to Turing
Thoughtworks
 
Rsa maths worked out
Rsa maths worked outRsa maths worked out
Rsa maths worked out
Thoughtworks
 

More from Thoughtworks (20)

Design System as a Product
Design System as a ProductDesign System as a Product
Design System as a Product
 
Designers, Developers & Dogs
Designers, Developers & DogsDesigners, Developers & Dogs
Designers, Developers & Dogs
 
Cloud-first for fast innovation
Cloud-first for fast innovationCloud-first for fast innovation
Cloud-first for fast innovation
 
More impact with flexible teams
More impact with flexible teamsMore impact with flexible teams
More impact with flexible teams
 
Culture of Innovation
Culture of InnovationCulture of Innovation
Culture of Innovation
 
Dual-Track Agile
Dual-Track AgileDual-Track Agile
Dual-Track Agile
 
Developer Experience
Developer ExperienceDeveloper Experience
Developer Experience
 
When we design together
When we design togetherWhen we design together
When we design together
 
Hardware is hard(er)
Hardware is hard(er)Hardware is hard(er)
Hardware is hard(er)
 
Customer-centric innovation enabled by cloud
 Customer-centric innovation enabled by cloud Customer-centric innovation enabled by cloud
Customer-centric innovation enabled by cloud
 
Amazon's Culture of Innovation
Amazon's Culture of InnovationAmazon's Culture of Innovation
Amazon's Culture of Innovation
 
When in doubt, go live
When in doubt, go liveWhen in doubt, go live
When in doubt, go live
 
Don't cross the Rubicon
Don't cross the RubiconDon't cross the Rubicon
Don't cross the Rubicon
 
Error handling
Error handlingError handling
Error handling
 
Your test coverage is a lie!
Your test coverage is a lie!Your test coverage is a lie!
Your test coverage is a lie!
 
Docker container security
Docker container securityDocker container security
Docker container security
 
Redefining the unit
Redefining the unitRedefining the unit
Redefining the unit
 
Technology Radar Webinar UK - Vol. 22
Technology Radar Webinar UK - Vol. 22Technology Radar Webinar UK - Vol. 22
Technology Radar Webinar UK - Vol. 22
 
A Tribute to Turing
A Tribute to TuringA Tribute to Turing
A Tribute to Turing
 
Rsa maths worked out
Rsa maths worked outRsa maths worked out
Rsa maths worked out
 

Recently uploaded

JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 

Recently uploaded (20)

JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 

Continuous Deployment Strategies

  • 2. snap-ci.com © 2015 2 CONTENTS Page Author Bio 3 Chapter 1: Continuous Deployment Strategies 4-5 1.1 Snowflake Servers 6 1.2 Phoenix Servers 7 1.3 How Does this Apply to Continuous Deployment? 8 1.4 Blue/Green Deployments 9 1.5 Canary Releases 10 Chapter 2: Blue / Green Deployments 11-12 2.1 Changing the load balancer/router 13 2.2 Changing public DNS records 14 2.3 Load Balancer + Internal DNS records 15 Chapter 3: Implementation Techniques for Canary Releases 16-17 3.1 Long running migration phase 18
  • 3. snap-ci.com © 2015 3 AUTHOR BIO Ketan P
 Senior Developer Quintessential shaver of yaks, supporter and developer for open source, long time ThoughtWorker and builder of continuous delivery tools @goforcd and @snap_ci. @ketanpkr
 github.com/ketan
  • 4. snap-ci.com © 2015 4 Continuous Delivery Strategies
  • 5. snap-ci.com © 2015 5 CHAPTER 1 Not very long ago, during the days of Perl/CGI and PHP (and even today); deployments involved ftp-ing your files to the webserver directory and running a bunch of migrations by shelling into the webserver. Modern webapps and application servers have evolved quite a bit since then, but many developers continue to use similar strategies to perform deployments. FTP has been replaced by git pull followed by bundle install or npm install and then restarting the appserver that you use. Along with similar deployment strategies, many developers also continue to use the same servers for months and years on end. But even with the right patches, updates, etc, after a while it’s easy to end up with a “snowflake server”: a server with a delicate, unique configuration that does not lend itself to change. A solution to this is the “phoenix server.” Here’s a little more about both these concepts…
  • 6. snap-ci.com © 2015 6 SNOWFLAKE SERVERS While this approach may work great for small webapps, it quickly falls apart when you’re managing anything but a couple of servers. It is generally difficult to set up a new server if your existing server has problems. If you’re looking to scale by adding more servers, it’s difficult to keep each server’s software, configuration and services in sync. You may not be in a position to replicate a production (or production-like) environment for testing. Over time, one loses track of the magic configuration files, packages and services that are installed on the production machines. 1.1
  • 7. snap-ci.com © 2015 7 PHOENIX SERVERS Some these issues can be addressed by using a bit of configuration management tools like Chef, Puppet, or Ansible, among a few others. These tools help avoid configuration drift, the sort of one-off changes that go unnoticed and undocumented. An important point to note is that these tools only apply the configuration that they are asked to. If you applied any additional configuration outside of what these tools are aware of, or if you forgot to un-apply or remove some configuration, you’d be out of luck. This is what Ranjib Dey calls the Accumulator Anti-Pattern. A much better alternative is to tear down servers periodically and apply configuration changes every once in a while. This helps avoid and catch any configuration drift outside of configuration management tools. Eventually one can move to deploying new servers on every configuration change. This strategy is known as an Immutable Server. 1.2
  • 8. snap-ci.com © 2015 8 HOW DOES THIS APPLY TO CD? Continuous Deployment requires that at a very minimum, you have: * a solid foundation of tests that gives you confidence in your software * a set of automation tools and scripts that give you confidence that your deployment will succeed, or rollback in case of issues A few of the more popular continuous deployment strategies include blue/green deployments and canary releases, which I’ve briefly outlined below… 1.3
  • 9. snap-ci.com © 2015 9 BLUE / GREEN DEPLOYMENTS Blue/green is a technique for deployments where the existing running deployment is left in place. A new version of the application is installed in parallel with the existing version. When the new version is ready, cut over to the new version by changing the load balancer configuration. This makes rollback really simple and gives time to make sure that the new version works as expected before putting it live. 1.4 This is one of the simplest CD strategies to implement and get started with. v1.0 WEB SERVER ROUTER APP SERVER DB SERVER v1.1 v1.0 v1.1 v1.0 v1.1
  • 10. snap-ci.com © 2015 10 CANARY RELEASES This is named after the “canary in a coal mine” metaphor. The metaphor originates from the times when miners used to carry caged canaries into the mines with them: if there were any dangerous gases (methane or carbon monoxide) in the mine, the canary would die before the gas levels reached levels hazardous to humans. Canary releasing is similar to blue/green, although only a small amount of the servers are upgraded. Then, using a cookie or similar, a fraction of users are directed to the new version. 1.5 This allows for the load and functionality of the site to be tested with a small group of users. If the application behaves as expected, migrate more and more servers to the new version until all the users are on the new version. This technique can also be used to do some interesting multi-variant testing and performance testing. v1.0 v1.1
  • 11. snap-ci.com © 2015 11 Blue/Green Deployments
  • 12. snap-ci.com © 2015 12 CHAPTER 2 In the previous article on Continuous Deployment Strategies, we explored at a high level some of the popular CD strategies. This article describes some of the implementation techniques for performing blue/ green deployments. To recap – Blue/green is a technique for deployments where the existing running deployment is left in place. A new version of the application is installed in parallel with the existing version. When the new version is ready, cut over to the new version by changing the load balancer configuration. The basic idea behind this technique is to be able to route users to either the green set of servers, or the blue set of servers. This can be achieved in multiple ways: Changing the load balancer/router Changing public DNS records
 Load Balancer + Internal DNS records
  • 13. snap-ci.com © 2015 13 CHANGING THE LOAD BALANCER / ROUTER2.1 Using this technique you would change the load balancer or request router to point to either the blue server or the green server. v1.0 WEB SERVER ROUTER APP SERVER DB SERVER v1.1 v1.0 v1.1 v1.0 v1.1
  • 14. snap-ci.com © 2015 14 CHANGING PUBLIC DNS RECORDS2.2 Using this technique involves load-balancing at the DNS level by changing either the CNAME or the A records. When users request a DNS entry for your website, your DNS server could return the IP address for either the blue server or the green server. This particular approach would require that the time to live (TTL) is set to a very small value. This particular approach is not recommended for changing public DNS records because some DNS servers run some browsers don’t respect the low TTL values on the DNS entry, they will cache the DNS records for longer than the TTL. This may leave a subset of your users not being able to access your website. DNS SERVER example.com 1.2.3.4 OR 5.6.7.8 green.example.com => 1.2.3.4 blue.example.com => 5.6.7.8
  • 15. snap-ci.com © 2015 15 LOAD BALANCER + INTERNAL DNS RECORDS2.3 This approach is a combination of the two techniques we’ve seen so far. In this technique, instead of changing public DNS records, we’ll change internal (private) DNS records. Since the internal network and the DNS server can be managed and configured to respect TTLs, this approach works a lot better than changing public DNS records. DNS SERVER internal.example.com 192.168.1.1 OR 192.168.2.1 green.internal.example.com => 192.168.1.1 blue.internal.example.com => 192.168.2.1
  • 16. snap-ci.com © 2015 16 Implementation Techniques for Canary Releases
  • 17. snap-ci.com © 2015 17 CHAPTER 3 In the previous article on Continuous Deployment Strategies, we explored at a high level some of the popular CD strategies.This article describes some of the implementation techniques for performing Canary Releases. Just like Blue/Green Deployments, one would start by deploying the application to a small subset of your servers. Once the subset of servers is deployed to, you may then route requests for a few users to the new set of servers. This strategy lets you do a lot of interesting things: Test the performance of the application. Perform A/B tests based on demographics and user profiles, for example “users between the ages of 20 – 25 living in Iowa.” Load Balancer + Internal DNS records. As your confidence in the deployment improves, you can deploy your application to more and more servers, and route more users to the new servers. v1.0 v1.1
  • 18. snap-ci.com © 2015 18 LONG RUNNING MIGRATION PHASE Because one or more versions of your application may be running in production for some period of time, your application and its components (webservices, microservices, database) needs to be backward-compatible so that it works with at least one or two previous versions of your application. This Parallel-Change Pattern is a simple and effective way to implement backward-incompatible changes between application interfaces. 3.1