SlideShare une entreprise Scribd logo
1  sur  79
Télécharger pour lire hors ligne
© 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Andy Mui, Vlad Vlasceanu
October 2015
DVO401
Deep Dive into Blue/Green
Deployments on AWS
What to expect from the session
• Overview of common deployment risks
• Blue/green deployment concepts
• Benefits of blue/green with AWS
• Deploying apps using blue/green patterns on AWS
• Best practices for the data tier
• Cost optimization
Deployments are not easy
• Traditional environments
favor in-place upgrades
• Resource constraints
• Downtime
• Dependencies
• Process coordination
• Difficult rollback
Common deployment risks
Challenges
Application failure
Infrastructure failure
Capacity issues
Scaling issues
People failure
Process failure
Rollback issues
Business Impacts
Downtime
Data loss
Bad customer experience
Lost revenue
Grumpy managers
Burned out staff
Wasted time/resources
Defining blue/green
deployment on AWS
What is blue/green deployment?
“Blue”
(existing production
environment)
“Green”
(parallel environment
running a different version
of the application)
“Deployment”
(ability to switch traffic between the
two environments)
What is an environment?
Boundary for where things changed
and what needs to be deployed
Examples:
App component, app tier, microservice
Examples:
DNS, load balancer
v2.2.103 v2.3.020
Environment scope in AWS
AMI
Narrow Wide
Auto Scaling group
AWS Elastic
Beanstalk
AWS
OpsWorks
AWS
CloudFormation
Amazon EC2
Container Service
Define your environment boundary
Every deployment is different in scope and risk.
 Need a platform that is flexible and has powerful
automation tools.
Factors Criteria
Application architecture Dependencies, loosely/tightly coupled
Organizational Speed and number of iterations
Risk and complexity Blast radius and impact of failed deployment
People Expertise of teams
Process Testing/QA, rollback capability
Cost Operating budgets
Benefits of blue/green deployment on AWS
AWS:
• Agile deployments
• Flexible options
• Scalable capacity
• Pay for what you use
• Automation capabilities
Deploying apps using
blue/green patterns on AWS
Using EC2 instances
1. Classic DNS cutover
2. Swap Auto Scaling groups
3. Swap launch configurations
Deploying apps using blue/green patterns
Using EC2 Container Service
1. Swap ECS services via DNS
2. Swap ECS services behind ELB
3. Swap ECS task definitions
Common thread: Environment automation
Deployment success depends on
mitigating risk for:
• Application issues (functional)
• Application performance
• People/process errors
• Infrastructure failure
• Rollback capability
• Large costs
Blue/green deployment patterns
address these risks differently
CloudFormation most
comprehensive
automation platform
• Scope stacks from
network to software
• Control higher-level
automation services:
Elastic Beanstalk, ECS,
OpsWorks, Auto Scaling
Strength of
automation
platform
Patterns: classic DNS cutover
Deployment process:
• Start with current app
environment
• Deploy a new app environment
• Test the green stack
• Gradually cut traffic over via
DNS
• Monitor your environments
• If needed, roll back to blue
Patterns: classic DNS cutover
Deployment process:
• Start with current app
environment
• Deploy a new app environment
• Test the green stack
• Gradually cut traffic over via
DNS
• Monitor your environments
• If needed, roll back to blue
Patterns: classic DNS cutover
Deployment process:
• Start with current app
environment
• Deploy a new app environment
• Test the green stack
• Gradually cut traffic over via
DNS
• Monitor your environments
• If needed, roll back to blue
Patterns: classic DNS cutover
Deployment process:
• Start with current app
environment
• Deploy a new app environment
• Test the green stack
• Gradually cut traffic over via
DNS
• Monitor your environments
• If needed, roll back to blue
Patterns: classic DNS cutover
Deployment process:
• Start with current app
environment
• Deploy a new app environment
• Test the green stack
• Gradually cut traffic over via
DNS
• Monitor your environments
• If needed, roll back to blue
Patterns: classic DNS cutover
Deployment process:
• Start with current app
environment
• Deploy a new app environment
• Test the green stack
• Gradually cut traffic over via
DNS
• Monitor your environments
• If needed, roll back to blue
Patterns: classic DNS cutover
Deployment process:
• Start with current app
environment
• Deploy a new app environment
• Test the green stack
• Gradually cut traffic over via
DNS
• Monitor your environments
• If needed, roll back to blue
"Resources": {
"myApp": { "Type": "AWS::ElasticBeanstalk::Application" },
"myConfigTemplate": {
"Type": "AWS::ElasticBeanstalk::ConfigurationTemplate"
},
"myBlueAppVersion": {
"Type": "AWS::ElasticBeanstalk::ApplicationVersion"
},
"myBlueEnvironment": {
"Type":"AWS::ElasticBeanstalk::Environment"
},
"myBlueEndpoint": {"Type": “AWS::Route53::RecordSet" },
..."myGreenAppVersion": {
"Type": "AWS::ElasticBeanstalk::ApplicationVersion"
},
"myGreenEnvironment": {
"Type": "AWS::ElasticBeanstalk::Environment"
},
"myGreenEndpoint": {"Type": "AWS::Route53::RecordSet" }
...
Automating your environment
• Use CloudFormation
templates to model your
environment
• Version-control your
templates
• Use Elastic Beanstalk or
OpsWorks to model your
applications inside the
template
• Update CloudFormation
stack from updated template
containing green
environment
Amazon Route 53 weighted DNS switching
• AWS Elastic Beanstalk environment endpoint swap
• DNS record time-to-live (TTL)
Reaction time = (TTL × no. of DNS caches) + Route53 propagation time, up to 1min
Beware of misbehaving DNS clients
• Auto Scaling and Amazon Elastic Load Balancing (ELB) need time to scale
• Measurable metrics
ELB: Latency, SurgeQueueLength, SpillOverCount, BackendConnectionErrors
Your application metrics
• Your deployment goals
Amazon Route 53 weighted DNS switching
Using CloudFormation:
• Update template record
sets with initial
weighting information
• Consider using
parameters for the
weight values – reuse
the same template
• Update
CloudFormation stack
with new weighting
"myBlueEndpoint": {
"Type": "AWS::Route53::RecordSet",
"Properties": {
"HostedZoneId": { "Ref": "parameterHostedZoneId" },
"Name": "www.example.com.", "Type": "CNAME", "TTL": "60",
"SetIdentifier": "stack-blue", "Weight": "90",
"ResourceRecords": [
{ "Fn::GetAtt": [ "myBlueEnvironment", "EndpointURL" ] }
] } },
"myGreenEndpoint": {
"Type": "AWS::Route53::RecordSet",
"Properties": {
"HostedZoneId": { "Ref": "parameterHostedZoneId" },
"Name": "www.example.com.", "Type": "CNAME", "TTL": "60",
"SetIdentifier": "stack-green", "Weight": "10",
"ResourceRecords": [
{ "Fn::GetAtt": [ "myGreenEnvironment", "EndpointURL" ] }
] } }


Pattern review: Classic DNS cutover
Risk category Mitigation
level
Reasoning
Application issues Great Facilitates canary analysis
Application performance Great Gradual switch, traffic split
management
People/process errors Good Depends on automation framework
Infrastructure failure Good Depends on automation framework
Rollback Fair DNS TTL complexities (reaction
time, flip/flop)
Cost Great Optimized via auto-scaling
Let’s remove DNS from the
solution…
Pattern: swap Auto Scaling Groups
Deployment process:
• Amazon Elastic Load Balancer
(ELB) outside the environment
boundary
• Start with current Auto Scaling
Group (ASG)
• Deploy & scale out new ASG
• Test green stack
• Register green ASG with ELB
• Remove blue ASG from ELB
Pattern: swap Auto Scaling Groups
Deployment process:
• Amazon Elastic Load Balancer
(ELB) outside the environment
boundary
• Start with current Auto Scaling
Group (ASG)
• Deploy & scale out new ASG
• Test green stack
• Register green ASG with ELB
• Remove blue ASG from ELB
Pattern: swap Auto Scaling Groups
Deployment process:
• Amazon Elastic Load Balancer
(ELB) outside the environment
boundary
• Start with current Auto Scaling
Group (ASG)
• Deploy & scale out new ASG
• Test green stack
• Register green ASG with ELB
• Remove blue ASG from ELB
Pattern: swap Auto Scaling Groups
Deployment process:
• Amazon Elastic Load Balancer
(ELB) outside the environment
boundary
• Start with current Auto Scaling
Group (ASG)
• Deploy & scale out new ASG
• Test green stack
• Register green ASG with ELB
• Remove blue ASG from ELB
Pattern: swap Auto Scaling Groups
Deployment process:
• Amazon Elastic Load Balancer
(ELB) outside the environment
boundary
• Start with current Auto Scaling
Group (ASG)
• Deploy & scale out new ASG
• Test green stack
• Register green ASG with ELB
• Remove blue ASG from ELB
Pattern: swap Auto Scaling Groups
Deployment process:
• Amazon Elastic Load Balancer
(ELB) outside the environment
boundary
• Start with current Auto Scaling
Group (ASG)
• Deploy & scale out new ASG
• Test green stack
• Register green ASG with ELB
• Remove blue ASG from ELB
Pattern: swap Auto Scaling Groups
Deployment process:
• Amazon Elastic Load Balancer
(ELB) outside the environment
boundary
• Start with current Auto Scaling
Group (ASG)
• Deploy & scale out new ASG
• Test green stack
• Register green ASG with ELB
• Remove blue ASG from ELB
Pattern: swap Auto Scaling Groups
Deployment process:
• Amazon Elastic Load Balancer
(ELB) outside the environment
boundary
• Start with current Auto Scaling
Group (ASG)
• Deploy & scale out new ASG
• Test green stack
• Register green ASG with ELB
• Remove blue ASG from ELB
Swapping Auto Scaling groups behind ELB
• Register with ELB:
• One or more EC2 instances
• One or more Auto Scaling groups
• Least outstanding requests
algorithm favors green ASG
instances for new connections
• Connection draining - gracefully
stop receiving traffic
• Scale out green ASG before ELB
registration
• Put blue instances in standby
$ aws autoscaling attach-load-balancers 
--auto-scaling-group-name "green-asg" 
--load-balancer-names "my-app-elb"
$ aws autoscaling set-desired-capacity 
--auto-scaling-group-name "green-asg" 
--desired-capacity X
$ aws autoscaling detach-load-balancers 
--auto-scaling-group-name "blue-asg" 
--load-balancer-names "my-app-elb"
$ aws autoscaling enter-standby 
--instance-ids i-xxxxxxxx 
--auto-scaling-group-name "blue-asg" 
--should-decrement-desired-capacity
Pattern review: Swap Auto Scaling groups
Risk category Mitigation
level
Reasoning
Application issues Great Facilitates canary analysis w/
additional ELB
Application performance Good Traffic split management, but less
granular, pre-warmed ELB
People/process errors Good Depends on automation framework
Infrastructure failure Great Auto-scaling
Rollback Great No DNS complexities
Cost Great Optimized via auto-scaling
Let’s reduce the environment
boundary further…
Pattern: swap Launch Configurations
Deployment process:
• Start with current ASG & Launch
Configuration behind the ELB
• Attach updated green Launch
Configuration to the ASG
• Grow the ASG gradually to 2x
original size
• Shrink the ASG back to original
size
• For more control, put old instances
into Standby
Pattern: swap Launch Configurations
Deployment process:
• Start with current ASG & Launch
Configuration behind the ELB
• Attach updated green Launch
Configuration to the ASG
• Grow the ASG gradually to 2x
original size
• Shrink the ASG back to original
size
• For more control, put old instances
into Standby
Pattern: swap Launch Configurations
Deployment process:
• Start with current ASG & Launch
Configuration behind the ELB
• Attach updated green Launch
Configuration to the ASG
• Grow the ASG gradually to 2x
original size
• Shrink the ASG back to original
size
• For more control, put old instances
into Standby
Pattern: swap Launch Configurations
Deployment process:
• Start with current ASG & Launch
Configuration behind the ELB
• Attach updated green Launch
Configuration to the ASG
• Grow the ASG gradually to 2x
original size
• Shrink the ASG back to original
size
• For more control, put old instances
into Standby
Pattern: swap Launch Configurations
Deployment process:
• Start with current ASG & Launch
Configuration behind the ELB
• Attach updated green Launch
Configuration to the ASG
• Grow the ASG gradually to 2x
original size
• Shrink the ASG back to original
size
• For more control, put old instances
into Standby
Pattern: swap Launch Configurations
Deployment process:
• Start with current ASG & Launch
Configuration behind the ELB
• Attach updated green Launch
Configuration to the ASG
• Grow the ASG gradually to 2x
original size
• Shrink the ASG back to original
size
• For more control, put old instances
into Standby
Swapping launch configurations
• Launch configurations:
Blueprints for ASG instance provisioning, each ASG points to exactly one
• Scale-out & replacement:
Events will use the attached (green) launch configuration to provision
instances
• Scale-in:
ASG scale-in events will terminate instances with oldest launch
configuration first while trying to keep capacity in AZs balanced
• May need to address AZ imbalances separately
• Temporarily remove instances from ASG
Place specific ASG instances (blue) into standby – stop receiving traffic
Pattern review: swap Launch Configurations
Risk Category Mitigation
Level
Reasoning
Application Issues Fair Detection of errors/issues in a
heterogeneous fleet is complex
Application Performance Fair Less granular traffic split, initial
traffic load
People/Process Errors Good Depends on automation framework
Infrastructure Failure Great Auto-Scaling
Rollback Great No DNS complexities
Cost Good Optimized via auto-scaling, but
initial scale-out overprovisions
What if we’re running
containers?
EC2 Container Service
Environment boundary:
Docker container -> Task definition
Deployment options:
1. Blue/green ECS services, DNS update
2. Blue/green ECS services, shared ELB
3. ECS update
Pattern: Swap ECS services with DNS
Deployment process:
• Start with blue service composed
of a task definition and ELB
• Create new task definition based
on new version of Docker image
and a new ELB
• Create green service with new
task definition and ELB
• Update Route 53 alias record to
direct traffic to new ELB endpoint
• Clean up blue service resources
when no longer needed
Pattern: Swap ECS services with DNS
Deployment process:
• Start with blue service composed
of a task definition and ELB
• Create new task definition based
on new version of Docker image
and a new ELB
• Create green service with new
task definition and ELB
• Update Route 53 alias record to
direct traffic to new ELB endpoint
• Clean up blue service resources
when no longer needed
Pattern: Swap ECS services with DNS
Deployment process:
• Start with blue service composed
of a task definition and ELB
• Create new task definition based
on new version of Docker image
and a new ELB
• Create green service with new
task definition and ELB
• Update Route 53 alias record to
direct traffic to new ELB endpoint
• Clean up blue Service resources
when no longer needed
Pattern: Swap ECS services with DNS
Deployment process:
• Start with blue service composed
of a task definition and ELB
• Create new task definition based
on new version of Docker image
and a new ELB
• Create green service with new
task definition and ELB
• Update Route 53 alias record to
direct traffic to new ELB endpoint
• Clean up blue service resources
when no longer needed
Swap ECS services with DNS
1. Create task definition
$ aws ecs register-task-definition 
--cli-input-json file:///Code/web.json
2. Create service and ELB
$ aws ecs create-service 
--cluster dice-demo 
--service-name web-service-v2 
--task-definition web-tier 
--load-balancers loadBalancerName=web-tier-
v2,containerName=web-tier,containerPort=8000 
--desired-count 2 
--role "ecsServiceRole"
{
"containerDefinitions": [
{
"name": "web-tier",
"image": "amui/web-test:v2",
"cpu": 256,
"memory": 256,
"entryPoint": [],
"environment": [],
"command": [],
"portMappings": [
{
"hostPort": 8000,
"containerPort": 8000,
"protocol": "tcp"
}
],
"essential": true
}
],
"family": "web-tier"
}
web.json
Swap ECS services with DNS
3. Route traffic to green ELB endpoint
$ aws route53 change-resource-record-sets 
--hosted-zone-id Zxxxxxxxxxxxxx 
--change-batch file:///Code/dns.json
{
"Comment": "Update alias record to route
traffic from Blue to Green ELB for Dice Demo
ECS Service",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "demo.example.com",
"Type": "A",
"AliasTarget": {
"HostedZoneId": ”Zxxxxxxxxxxxx",
"DNSName": "dice-demo-green-
1234567890.us-west-2.elb.amazonaws.com",
"EvaluateTargetHealth": false
}
…
dns.json
Pattern review: Swap ECS services with DNS
Risk category Mitigation
level
Reasoning
Application issues Great Full cutover or weighted canary analysis
Application performance Good ELB may require prewarm, CloudWatch,
and automation to scale ECS
People/process errors Great Simple process
Infrastructure failure Good Leverage CloudWatch, Auto Scaling,
ELB
Rollback Fair DNS TTL complexities (reaction time,
flip/flop)
Cost Fair Require enough cluster resources to
accommodate new service
Pattern: Swap ECS services with ELB
Deployment process:
• Start with blue service composed
of a task definition and ELB
• Create new task definition based
on new version of Docker image
• Create green service with new
task definition and map to existing
ELB
• Scale up green service by
incrementing number of tasks
• Decommission blue service by
setting task count to 0
Pattern: Swap ECS services with ELB
Deployment process:
• Start with blue service composed
of a task definition and ELB
• Create new task definition based
on new version of Docker image
• Create green service with new
task definition and map to existing
ELB
• Scale up green service by
incrementing number of tasks
• Decommission blue service by
setting task count to 0
Pattern: Swap ECS services with ELB
Deployment process:
• Start with blue service composed
of a task definition and ELB
• Create new task definition based
on new version of Docker image
• Create green service with new
task definition and map to existing
ELB
• Scale up green service by
incrementing number of tasks
• Decommission blue service by
setting task count to 0
Pattern: Swap ECS services with ELB
Deployment process:
• Start with blue service composed
of a task definition and ELB
• Create new task definition based
on new version of Docker image
• Create green service with new
task definition and map to existing
ELB
• Scale up green service by
incrementing number of tasks
• Decommission blue service by
setting task count to 0
Swapping ECS services with ELB
$ aws ecs create-service 
--cluster dice-demo 
--service-name web-service-v2 
--task-definition web-tier 
--load-balancers loadBalancerName=web-
tier,containerName=web-tier,containerPort=8000 
--desired-count 1 
--role "ecsServiceRole”
Swapping ECS services with ELB
$ aws ecs update-service 
--cluster dice-demo 
--service web-service-v2 
--desired-count 2
$ aws ecs update-service
--cluster dice-demo 
--service web-service-v1 
--desired-count 0
• Similar to swapping ASG behind
ELB
• Application versions must co-exist
• Container resources may need to
be cleaned up
Pattern review: Swap ECS services with ELB
Risk Category Mitigation
Level
Reasoning
Application issues Great Canary analysis
Application performance Great ELB already warm, CloudWatch and
automation to scale ECS
People/process errors Good Multi-step process to transition traffic
between environments
Infrastructure failure Good Leverage CloudWatch, Auto Scaling,
ELB
Rollback Great No DNS complexities
Cost Good Resource management handled by ECS
Pattern: ECS service update
Deployment process:
• Start with blue task definition
referenced by an ECS service
• Create a green revision of the
existing task definition
• Update existing ECS service to
use the updated task definition
• ECS will deploy the new task
definition to container instances in
a rolling fashion
Pattern: ECS service update
Deployment process:
• Start with blue task definition
referenced by an ECS service
• Create a green revision of the
existing task definition
• Update existing ECS service to
use the updated task definition
• ECS will deploy the new task
definition to container instances in
a rolling fashion
Pattern: ECS service update
Deployment process:
• Start with blue task definition
referenced by an ECS service
• Create a green revision of the
existing task definition
• Update existing ECS service to
use the updated task definition
• ECS will deploy the new task
definition to container instances in
a rolling fashion
Pattern: ECS service update
Deployment process:
• Start with blue task definition
referenced by an ECS service
• Create a green revision of the
existing task definition
• Update existing ECS service to
use the updated task definition
• ECS will deploy the new task
definition to container instances in
a rolling fashion
ECS service update
1. Create task definition and update service
$ aws ecs update-service --cluster dice-demo --service web-service --task-definition
web-tier
2. Monitor service update process
$ aws ecs describe-services --cluster dice-demo --services web-service
{
"services": [
{
"status": "ACTIVE",
"taskDefinition": "arn:aws:ecs:us-west-2:012345678901:task-definition/web-
tier:2",
ECS service update
“deployments” section of describe-services output displays progress
"deployments": [
{
"status": "PRIMARY",
"desiredCount": 3,
"taskDefinition": "arn:aws:ecs:us-west-2:012345678901:task-definition/web-tier:2",
"runningCount": 0
},
{
"status": "ACTIVE",
"desiredCount": 3,
"taskDefinition": "arn:aws:ecs:us-west-2:012345678901:task-definition/web-tier:1",
"runningCount": 3
}
ECS service update
“events” section of describe-services output will reveal any errors
"events": [
{
"message": "(service web-service) has reached a steady state.",
"id": "34d17afa-89eb-454a-9311-f4de402222ca",
"createdAt": 1442976067.928
},
{
"message": "(service web-service) registered 1 instances in (elb web-tier)",
"id": "b0020deb-8c4c-4128-bbd3-9b87487eba8f",
"createdAt": 1442976061.644
},
Pattern: ECS service update
Risk category Mitigation
level
Reasoning
Application Issues Fair No canary analysis
Application Performance Good No traffic management, ELB
already warm
People/Process Errors Great Simple, automated process
Infrastructure Failure Good Autoscaling cluster instances and
service
Rollback Great No DNS complexities
Cost Great Rolling deployment, cluster
instance +1
What about schema changes?
Decoupled schema changes & code changes
Two approaches:
• Database updates are backward-
compatible (old code uses new
schema)
• Code changes are backward-
compatible with the old schema
(new code uses old schema)
DB outside environment boundary
Tradeoff: simplicity vs. risk
Change
schema
Start app
deployment
Finish app
deployment
Start app
deployment
Finish app
deployment
Change
schema
What if schema changes can’t
be decoupled, or you’re
deploying across regions?
Isolated and synchronized data stores
• DB inside environment boundary
• Environments have separate data
stores
• Need to coordinate data changes
across stacks:
• Blue needs data for rollback
• Green is new production stack
• What consistency model does the
application use?
Centralized writes process
Deployment pattern:
• Deploy an aggregator of
centralized write operations
• Common baseline of data: Use
data store-specific replication
• Aggregator worker affects changes
to data in both environments
• Account for lag/latency
considerations
Simplifying the centralized writes process
Green app writes to both DBs
• Asynchronous process moves
changes by blue app to green DB
• Great if there’s a mismatch in
consistency requirements (old app
needs strong consistency)
Each app writes to its own DB
• Asynchronous process pushes
changes to the other DB
• Fully decoupled architecture
• Example: DynamoDB tables +
streams + triggers + Lambda
functions
Closing thoughts
Blue/green deployment patterns at a glance
Pattern
Mitigated risk
Classic DNS
cutover
Swap Auto
Scaling
groups
Swap launch
configs
Swap ECS
services with
DNS
Swap ECS
services with
ELB
ECS service
update
Application
issues
Canary
analysis
Canary
analysis
Mixed fleet Canary
analysis
Canary
analysis
Mixed fleet
Application
performance
Granular traffic
switch
Instance-
level
granularity
Mixed fleet ELB may require
pre-warm
Container level
granularity, warm
ELB
No traffic
management,
warm ELB
People/process
errors
Automation: Use CloudFormation with Elastic
Beanstalk, OpsWork, third party
Simple process
DNS swap
Multi-step
process
ECS automated
Infrastructure
failure
Automation
framework
Auto Scaling,
ELB
Auto Scaling,
ELB
CloudWatch, Auto
Scaling, ELB
CloudWatch, Auto
Scaling, ELB
CloudWatch, Auto
Scaling, ELB
Rollback
capability
DNS ELB ELB DNS ECS automated ECS automated
Cost
management
Gradual
scaling
Gradual
scaling
Some over-
provisioning
Require addl cluster
instances
Resource
reuse
Rolling
deployment
Deployment
complexity
Simple,
DNS weights
Auto Scaling
control
Scale-in
adjustments
Simple,
DNS weights
Multi-step
process
Highly automated
Get comfortable with the deployment process
Deployments will always have risks associated
with them
• Deployment & automation frameworks help
mitigate process & human error risks
• Get comfortable with deployments, practice
using production-like replicas
• AWS provides affordable, quickly provisioned
resources – use the flexibility to experiment new
approached
Thank you!
Remember to complete
your evaluations!
Related Sessions
DVO202 - DevOps at Amazon: A Look at Our Tools and
Processes
DVO305 - Turbocharge Your Continuous Deployment
Pipeline with Containers

Contenu connexe

Tendances

(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatch
(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatch(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatch
(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatchAmazon Web Services
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesAmazon Web Services
 
(CMP201) All You Need To Know About Auto Scaling
(CMP201) All You Need To Know About Auto Scaling(CMP201) All You Need To Know About Auto Scaling
(CMP201) All You Need To Know About Auto ScalingAmazon Web Services
 
Kubernetes on AWS with Amazon EKS - MAD301 - New York AWS Summit
Kubernetes on AWS with Amazon EKS - MAD301 - New York AWS SummitKubernetes on AWS with Amazon EKS - MAD301 - New York AWS Summit
Kubernetes on AWS with Amazon EKS - MAD301 - New York AWS SummitAmazon Web Services
 
CI/CD Pipeline Security: Advanced Continuous Delivery Recommendations
CI/CD Pipeline Security: Advanced Continuous Delivery RecommendationsCI/CD Pipeline Security: Advanced Continuous Delivery Recommendations
CI/CD Pipeline Security: Advanced Continuous Delivery RecommendationsAmazon Web Services
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSAVMware Tanzu Korea
 
(DVO202) DevOps at Amazon: A Look At Our Tools & Processes
(DVO202) DevOps at Amazon: A Look At Our Tools & Processes(DVO202) DevOps at Amazon: A Look At Our Tools & Processes
(DVO202) DevOps at Amazon: A Look At Our Tools & ProcessesAmazon Web Services
 
Introduction To AWS & AWS Lambda
Introduction To AWS & AWS LambdaIntroduction To AWS & AWS Lambda
Introduction To AWS & AWS LambdaAn Nguyen
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes IntroductionPeng Xiao
 
About DevOps in simple steps
About DevOps in simple stepsAbout DevOps in simple steps
About DevOps in simple stepsIhor Odynets
 
Auto scaling using Amazon Web Services ( AWS )
Auto scaling using Amazon Web Services ( AWS )Auto scaling using Amazon Web Services ( AWS )
Auto scaling using Amazon Web Services ( AWS )Harish Ganesan
 
Getting Started on Amazon EKS
Getting Started on Amazon EKSGetting Started on Amazon EKS
Getting Started on Amazon EKSMatthew Barlocker
 
Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...
Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...
Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...Simplilearn
 

Tendances (20)

(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatch
(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatch(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatch
(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatch
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless Architectures
 
(CMP201) All You Need To Know About Auto Scaling
(CMP201) All You Need To Know About Auto Scaling(CMP201) All You Need To Know About Auto Scaling
(CMP201) All You Need To Know About Auto Scaling
 
Kubernetes on AWS with Amazon EKS - MAD301 - New York AWS Summit
Kubernetes on AWS with Amazon EKS - MAD301 - New York AWS SummitKubernetes on AWS with Amazon EKS - MAD301 - New York AWS Summit
Kubernetes on AWS with Amazon EKS - MAD301 - New York AWS Summit
 
CI/CD Pipeline Security: Advanced Continuous Delivery Recommendations
CI/CD Pipeline Security: Advanced Continuous Delivery RecommendationsCI/CD Pipeline Security: Advanced Continuous Delivery Recommendations
CI/CD Pipeline Security: Advanced Continuous Delivery Recommendations
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
 
(DVO202) DevOps at Amazon: A Look At Our Tools & Processes
(DVO202) DevOps at Amazon: A Look At Our Tools & Processes(DVO202) DevOps at Amazon: A Look At Our Tools & Processes
(DVO202) DevOps at Amazon: A Look At Our Tools & Processes
 
Introduction to DevOps on AWS
Introduction to DevOps on AWSIntroduction to DevOps on AWS
Introduction to DevOps on AWS
 
Introduction To AWS & AWS Lambda
Introduction To AWS & AWS LambdaIntroduction To AWS & AWS Lambda
Introduction To AWS & AWS Lambda
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
About DevOps in simple steps
About DevOps in simple stepsAbout DevOps in simple steps
About DevOps in simple steps
 
Azure devops
Azure devopsAzure devops
Azure devops
 
AWS Cloud Watch
AWS Cloud WatchAWS Cloud Watch
AWS Cloud Watch
 
Auto scaling using Amazon Web Services ( AWS )
Auto scaling using Amazon Web Services ( AWS )Auto scaling using Amazon Web Services ( AWS )
Auto scaling using Amazon Web Services ( AWS )
 
AWS Route53
AWS Route53AWS Route53
AWS Route53
 
DevOps on AWS
DevOps on AWSDevOps on AWS
DevOps on AWS
 
Intro to Amazon ECS
Intro to Amazon ECSIntro to Amazon ECS
Intro to Amazon ECS
 
Getting Started on Amazon EKS
Getting Started on Amazon EKSGetting Started on Amazon EKS
Getting Started on Amazon EKS
 
Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...
Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...
Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...
 
Terraform
TerraformTerraform
Terraform
 

Similaire à (DVO401) Deep Dive into Blue/Green Deployments on AWS

AWS Webcast - AWS OpsWorks Continuous Integration Demo
AWS Webcast - AWS OpsWorks Continuous Integration Demo  AWS Webcast - AWS OpsWorks Continuous Integration Demo
AWS Webcast - AWS OpsWorks Continuous Integration Demo Amazon Web Services
 
Advanced Deployment Best Practices with AWS CodeDeploy (DEV404-R2) - AWS re:I...
Advanced Deployment Best Practices with AWS CodeDeploy (DEV404-R2) - AWS re:I...Advanced Deployment Best Practices with AWS CodeDeploy (DEV404-R2) - AWS re:I...
Advanced Deployment Best Practices with AWS CodeDeploy (DEV404-R2) - AWS re:I...Amazon Web Services
 
(DVO201) Scaling Your Web Applications with AWS Elastic Beanstalk
(DVO201) Scaling Your Web Applications with AWS Elastic Beanstalk(DVO201) Scaling Your Web Applications with AWS Elastic Beanstalk
(DVO201) Scaling Your Web Applications with AWS Elastic BeanstalkAmazon Web Services
 
(APP307) Leverage the Cloud with a Blue/Green Deployment Architecture | AWS r...
(APP307) Leverage the Cloud with a Blue/Green Deployment Architecture | AWS r...(APP307) Leverage the Cloud with a Blue/Green Deployment Architecture | AWS r...
(APP307) Leverage the Cloud with a Blue/Green Deployment Architecture | AWS r...Amazon Web Services
 
Migrating enterprise workloads to AWS
Migrating enterprise workloads to AWSMigrating enterprise workloads to AWS
Migrating enterprise workloads to AWSTom Laszewski
 
AWS APAC Webinar Week - Maintaining Performance & Availability While Lowering...
AWS APAC Webinar Week - Maintaining Performance & Availability While Lowering...AWS APAC Webinar Week - Maintaining Performance & Availability While Lowering...
AWS APAC Webinar Week - Maintaining Performance & Availability While Lowering...Amazon Web Services
 
Optimizing Costs and Efficiency of AWS Services
Optimizing Costs and Efficiency of AWS Services Optimizing Costs and Efficiency of AWS Services
Optimizing Costs and Efficiency of AWS Services Amazon Web Services
 
AWS re:Invent 2016: 20k in 20 Days - Agile Genomic Analysis (ENT320)
AWS re:Invent 2016: 20k in 20 Days - Agile Genomic Analysis (ENT320)AWS re:Invent 2016: 20k in 20 Days - Agile Genomic Analysis (ENT320)
AWS re:Invent 2016: 20k in 20 Days - Agile Genomic Analysis (ENT320)Amazon Web Services
 
Plandas-CacheCloud
Plandas-CacheCloudPlandas-CacheCloud
Plandas-CacheCloudGyuman Cho
 
Migrating enterprise workloads to AWS
Migrating enterprise workloads to AWS Migrating enterprise workloads to AWS
Migrating enterprise workloads to AWS Tom Laszewski
 
Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?Amazon Web Services
 
Top 5 Ways to Optimize for Cost Efficiency with the Cloud
Top 5 Ways to Optimize for Cost Efficiency with the CloudTop 5 Ways to Optimize for Cost Efficiency with the Cloud
Top 5 Ways to Optimize for Cost Efficiency with the CloudAmazon Web Services
 
Globus Genomics: How Science-as-a-Service is Accelerating Discovery (BDT310) ...
Globus Genomics: How Science-as-a-Service is Accelerating Discovery (BDT310) ...Globus Genomics: How Science-as-a-Service is Accelerating Discovery (BDT310) ...
Globus Genomics: How Science-as-a-Service is Accelerating Discovery (BDT310) ...Amazon Web Services
 
ECS & ECR Deep Dive - 김기완 솔루션즈 아키텍트 :: AWS Container Day
ECS & ECR Deep Dive - 김기완 솔루션즈 아키텍트 :: AWS Container DayECS & ECR Deep Dive - 김기완 솔루션즈 아키텍트 :: AWS Container Day
ECS & ECR Deep Dive - 김기완 솔루션즈 아키텍트 :: AWS Container DayAmazon Web Services Korea
 
Going Big with Containers: Customer Case Studies of Large-Scale Deployments -...
Going Big with Containers: Customer Case Studies of Large-Scale Deployments -...Going Big with Containers: Customer Case Studies of Large-Scale Deployments -...
Going Big with Containers: Customer Case Studies of Large-Scale Deployments -...Amazon Web Services
 
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...NETWAYS
 
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 PracticesShiva Narayanaswamy
 

Similaire à (DVO401) Deep Dive into Blue/Green Deployments on AWS (20)

AWS Webcast - AWS OpsWorks Continuous Integration Demo
AWS Webcast - AWS OpsWorks Continuous Integration Demo  AWS Webcast - AWS OpsWorks Continuous Integration Demo
AWS Webcast - AWS OpsWorks Continuous Integration Demo
 
Advanced Deployment Best Practices with AWS CodeDeploy (DEV404-R2) - AWS re:I...
Advanced Deployment Best Practices with AWS CodeDeploy (DEV404-R2) - AWS re:I...Advanced Deployment Best Practices with AWS CodeDeploy (DEV404-R2) - AWS re:I...
Advanced Deployment Best Practices with AWS CodeDeploy (DEV404-R2) - AWS re:I...
 
(DVO201) Scaling Your Web Applications with AWS Elastic Beanstalk
(DVO201) Scaling Your Web Applications with AWS Elastic Beanstalk(DVO201) Scaling Your Web Applications with AWS Elastic Beanstalk
(DVO201) Scaling Your Web Applications with AWS Elastic Beanstalk
 
(APP307) Leverage the Cloud with a Blue/Green Deployment Architecture | AWS r...
(APP307) Leverage the Cloud with a Blue/Green Deployment Architecture | AWS r...(APP307) Leverage the Cloud with a Blue/Green Deployment Architecture | AWS r...
(APP307) Leverage the Cloud with a Blue/Green Deployment Architecture | AWS r...
 
Migrating enterprise workloads to AWS
Migrating enterprise workloads to AWSMigrating enterprise workloads to AWS
Migrating enterprise workloads to AWS
 
AWS APAC Webinar Week - Maintaining Performance & Availability While Lowering...
AWS APAC Webinar Week - Maintaining Performance & Availability While Lowering...AWS APAC Webinar Week - Maintaining Performance & Availability While Lowering...
AWS APAC Webinar Week - Maintaining Performance & Availability While Lowering...
 
Optimizing Costs and Efficiency of AWS Services
Optimizing Costs and Efficiency of AWS Services Optimizing Costs and Efficiency of AWS Services
Optimizing Costs and Efficiency of AWS Services
 
AWS re:Invent 2016: 20k in 20 Days - Agile Genomic Analysis (ENT320)
AWS re:Invent 2016: 20k in 20 Days - Agile Genomic Analysis (ENT320)AWS re:Invent 2016: 20k in 20 Days - Agile Genomic Analysis (ENT320)
AWS re:Invent 2016: 20k in 20 Days - Agile Genomic Analysis (ENT320)
 
Aws best practices
Aws best practicesAws best practices
Aws best practices
 
Plandas-CacheCloud
Plandas-CacheCloudPlandas-CacheCloud
Plandas-CacheCloud
 
Migrating enterprise workloads to AWS
Migrating enterprise workloads to AWS Migrating enterprise workloads to AWS
Migrating enterprise workloads to AWS
 
TIAD : Automating the modern datacenter
TIAD : Automating the modern datacenterTIAD : Automating the modern datacenter
TIAD : Automating the modern datacenter
 
Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?
 
Scaling horizontally on AWS
Scaling horizontally on AWSScaling horizontally on AWS
Scaling horizontally on AWS
 
Top 5 Ways to Optimize for Cost Efficiency with the Cloud
Top 5 Ways to Optimize for Cost Efficiency with the CloudTop 5 Ways to Optimize for Cost Efficiency with the Cloud
Top 5 Ways to Optimize for Cost Efficiency with the Cloud
 
Globus Genomics: How Science-as-a-Service is Accelerating Discovery (BDT310) ...
Globus Genomics: How Science-as-a-Service is Accelerating Discovery (BDT310) ...Globus Genomics: How Science-as-a-Service is Accelerating Discovery (BDT310) ...
Globus Genomics: How Science-as-a-Service is Accelerating Discovery (BDT310) ...
 
ECS & ECR Deep Dive - 김기완 솔루션즈 아키텍트 :: AWS Container Day
ECS & ECR Deep Dive - 김기완 솔루션즈 아키텍트 :: AWS Container DayECS & ECR Deep Dive - 김기완 솔루션즈 아키텍트 :: AWS Container Day
ECS & ECR Deep Dive - 김기완 솔루션즈 아키텍트 :: AWS Container Day
 
Going Big with Containers: Customer Case Studies of Large-Scale Deployments -...
Going Big with Containers: Customer Case Studies of Large-Scale Deployments -...Going Big with Containers: Customer Case Studies of Large-Scale Deployments -...
Going Big with Containers: Customer Case Studies of Large-Scale Deployments -...
 
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
 
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
 

Plus de Amazon Web Services

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Amazon Web Services
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Amazon Web Services
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateAmazon Web Services
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSAmazon Web Services
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Amazon Web Services
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Amazon Web Services
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...Amazon Web Services
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsAmazon Web Services
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareAmazon Web Services
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSAmazon Web Services
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAmazon Web Services
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareAmazon Web Services
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWSAmazon Web Services
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckAmazon Web Services
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without serversAmazon Web Services
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...Amazon Web Services
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceAmazon Web Services
 

Plus de Amazon Web Services (20)

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
 
Fundraising Essentials
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
 

Dernier

(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 

Dernier (20)

(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 

(DVO401) Deep Dive into Blue/Green Deployments on AWS

  • 1. © 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Andy Mui, Vlad Vlasceanu October 2015 DVO401 Deep Dive into Blue/Green Deployments on AWS
  • 2. What to expect from the session • Overview of common deployment risks • Blue/green deployment concepts • Benefits of blue/green with AWS • Deploying apps using blue/green patterns on AWS • Best practices for the data tier • Cost optimization
  • 3. Deployments are not easy • Traditional environments favor in-place upgrades • Resource constraints • Downtime • Dependencies • Process coordination • Difficult rollback
  • 4. Common deployment risks Challenges Application failure Infrastructure failure Capacity issues Scaling issues People failure Process failure Rollback issues Business Impacts Downtime Data loss Bad customer experience Lost revenue Grumpy managers Burned out staff Wasted time/resources
  • 6. What is blue/green deployment? “Blue” (existing production environment) “Green” (parallel environment running a different version of the application) “Deployment” (ability to switch traffic between the two environments) What is an environment? Boundary for where things changed and what needs to be deployed Examples: App component, app tier, microservice Examples: DNS, load balancer v2.2.103 v2.3.020
  • 7. Environment scope in AWS AMI Narrow Wide Auto Scaling group AWS Elastic Beanstalk AWS OpsWorks AWS CloudFormation Amazon EC2 Container Service
  • 8. Define your environment boundary Every deployment is different in scope and risk.  Need a platform that is flexible and has powerful automation tools. Factors Criteria Application architecture Dependencies, loosely/tightly coupled Organizational Speed and number of iterations Risk and complexity Blast radius and impact of failed deployment People Expertise of teams Process Testing/QA, rollback capability Cost Operating budgets
  • 9. Benefits of blue/green deployment on AWS AWS: • Agile deployments • Flexible options • Scalable capacity • Pay for what you use • Automation capabilities
  • 11. Using EC2 instances 1. Classic DNS cutover 2. Swap Auto Scaling groups 3. Swap launch configurations Deploying apps using blue/green patterns Using EC2 Container Service 1. Swap ECS services via DNS 2. Swap ECS services behind ELB 3. Swap ECS task definitions
  • 12. Common thread: Environment automation Deployment success depends on mitigating risk for: • Application issues (functional) • Application performance • People/process errors • Infrastructure failure • Rollback capability • Large costs Blue/green deployment patterns address these risks differently CloudFormation most comprehensive automation platform • Scope stacks from network to software • Control higher-level automation services: Elastic Beanstalk, ECS, OpsWorks, Auto Scaling Strength of automation platform
  • 13. Patterns: classic DNS cutover Deployment process: • Start with current app environment • Deploy a new app environment • Test the green stack • Gradually cut traffic over via DNS • Monitor your environments • If needed, roll back to blue
  • 14. Patterns: classic DNS cutover Deployment process: • Start with current app environment • Deploy a new app environment • Test the green stack • Gradually cut traffic over via DNS • Monitor your environments • If needed, roll back to blue
  • 15. Patterns: classic DNS cutover Deployment process: • Start with current app environment • Deploy a new app environment • Test the green stack • Gradually cut traffic over via DNS • Monitor your environments • If needed, roll back to blue
  • 16. Patterns: classic DNS cutover Deployment process: • Start with current app environment • Deploy a new app environment • Test the green stack • Gradually cut traffic over via DNS • Monitor your environments • If needed, roll back to blue
  • 17. Patterns: classic DNS cutover Deployment process: • Start with current app environment • Deploy a new app environment • Test the green stack • Gradually cut traffic over via DNS • Monitor your environments • If needed, roll back to blue
  • 18. Patterns: classic DNS cutover Deployment process: • Start with current app environment • Deploy a new app environment • Test the green stack • Gradually cut traffic over via DNS • Monitor your environments • If needed, roll back to blue
  • 19. Patterns: classic DNS cutover Deployment process: • Start with current app environment • Deploy a new app environment • Test the green stack • Gradually cut traffic over via DNS • Monitor your environments • If needed, roll back to blue
  • 20. "Resources": { "myApp": { "Type": "AWS::ElasticBeanstalk::Application" }, "myConfigTemplate": { "Type": "AWS::ElasticBeanstalk::ConfigurationTemplate" }, "myBlueAppVersion": { "Type": "AWS::ElasticBeanstalk::ApplicationVersion" }, "myBlueEnvironment": { "Type":"AWS::ElasticBeanstalk::Environment" }, "myBlueEndpoint": {"Type": “AWS::Route53::RecordSet" }, ..."myGreenAppVersion": { "Type": "AWS::ElasticBeanstalk::ApplicationVersion" }, "myGreenEnvironment": { "Type": "AWS::ElasticBeanstalk::Environment" }, "myGreenEndpoint": {"Type": "AWS::Route53::RecordSet" } ... Automating your environment • Use CloudFormation templates to model your environment • Version-control your templates • Use Elastic Beanstalk or OpsWorks to model your applications inside the template • Update CloudFormation stack from updated template containing green environment
  • 21. Amazon Route 53 weighted DNS switching • AWS Elastic Beanstalk environment endpoint swap • DNS record time-to-live (TTL) Reaction time = (TTL × no. of DNS caches) + Route53 propagation time, up to 1min Beware of misbehaving DNS clients • Auto Scaling and Amazon Elastic Load Balancing (ELB) need time to scale • Measurable metrics ELB: Latency, SurgeQueueLength, SpillOverCount, BackendConnectionErrors Your application metrics • Your deployment goals
  • 22. Amazon Route 53 weighted DNS switching Using CloudFormation: • Update template record sets with initial weighting information • Consider using parameters for the weight values – reuse the same template • Update CloudFormation stack with new weighting "myBlueEndpoint": { "Type": "AWS::Route53::RecordSet", "Properties": { "HostedZoneId": { "Ref": "parameterHostedZoneId" }, "Name": "www.example.com.", "Type": "CNAME", "TTL": "60", "SetIdentifier": "stack-blue", "Weight": "90", "ResourceRecords": [ { "Fn::GetAtt": [ "myBlueEnvironment", "EndpointURL" ] } ] } }, "myGreenEndpoint": { "Type": "AWS::Route53::RecordSet", "Properties": { "HostedZoneId": { "Ref": "parameterHostedZoneId" }, "Name": "www.example.com.", "Type": "CNAME", "TTL": "60", "SetIdentifier": "stack-green", "Weight": "10", "ResourceRecords": [ { "Fn::GetAtt": [ "myGreenEnvironment", "EndpointURL" ] } ] } }  
  • 23. Pattern review: Classic DNS cutover Risk category Mitigation level Reasoning Application issues Great Facilitates canary analysis Application performance Great Gradual switch, traffic split management People/process errors Good Depends on automation framework Infrastructure failure Good Depends on automation framework Rollback Fair DNS TTL complexities (reaction time, flip/flop) Cost Great Optimized via auto-scaling
  • 24. Let’s remove DNS from the solution…
  • 25. Pattern: swap Auto Scaling Groups Deployment process: • Amazon Elastic Load Balancer (ELB) outside the environment boundary • Start with current Auto Scaling Group (ASG) • Deploy & scale out new ASG • Test green stack • Register green ASG with ELB • Remove blue ASG from ELB
  • 26. Pattern: swap Auto Scaling Groups Deployment process: • Amazon Elastic Load Balancer (ELB) outside the environment boundary • Start with current Auto Scaling Group (ASG) • Deploy & scale out new ASG • Test green stack • Register green ASG with ELB • Remove blue ASG from ELB
  • 27. Pattern: swap Auto Scaling Groups Deployment process: • Amazon Elastic Load Balancer (ELB) outside the environment boundary • Start with current Auto Scaling Group (ASG) • Deploy & scale out new ASG • Test green stack • Register green ASG with ELB • Remove blue ASG from ELB
  • 28. Pattern: swap Auto Scaling Groups Deployment process: • Amazon Elastic Load Balancer (ELB) outside the environment boundary • Start with current Auto Scaling Group (ASG) • Deploy & scale out new ASG • Test green stack • Register green ASG with ELB • Remove blue ASG from ELB
  • 29. Pattern: swap Auto Scaling Groups Deployment process: • Amazon Elastic Load Balancer (ELB) outside the environment boundary • Start with current Auto Scaling Group (ASG) • Deploy & scale out new ASG • Test green stack • Register green ASG with ELB • Remove blue ASG from ELB
  • 30. Pattern: swap Auto Scaling Groups Deployment process: • Amazon Elastic Load Balancer (ELB) outside the environment boundary • Start with current Auto Scaling Group (ASG) • Deploy & scale out new ASG • Test green stack • Register green ASG with ELB • Remove blue ASG from ELB
  • 31. Pattern: swap Auto Scaling Groups Deployment process: • Amazon Elastic Load Balancer (ELB) outside the environment boundary • Start with current Auto Scaling Group (ASG) • Deploy & scale out new ASG • Test green stack • Register green ASG with ELB • Remove blue ASG from ELB
  • 32. Pattern: swap Auto Scaling Groups Deployment process: • Amazon Elastic Load Balancer (ELB) outside the environment boundary • Start with current Auto Scaling Group (ASG) • Deploy & scale out new ASG • Test green stack • Register green ASG with ELB • Remove blue ASG from ELB
  • 33. Swapping Auto Scaling groups behind ELB • Register with ELB: • One or more EC2 instances • One or more Auto Scaling groups • Least outstanding requests algorithm favors green ASG instances for new connections • Connection draining - gracefully stop receiving traffic • Scale out green ASG before ELB registration • Put blue instances in standby $ aws autoscaling attach-load-balancers --auto-scaling-group-name "green-asg" --load-balancer-names "my-app-elb" $ aws autoscaling set-desired-capacity --auto-scaling-group-name "green-asg" --desired-capacity X $ aws autoscaling detach-load-balancers --auto-scaling-group-name "blue-asg" --load-balancer-names "my-app-elb" $ aws autoscaling enter-standby --instance-ids i-xxxxxxxx --auto-scaling-group-name "blue-asg" --should-decrement-desired-capacity
  • 34. Pattern review: Swap Auto Scaling groups Risk category Mitigation level Reasoning Application issues Great Facilitates canary analysis w/ additional ELB Application performance Good Traffic split management, but less granular, pre-warmed ELB People/process errors Good Depends on automation framework Infrastructure failure Great Auto-scaling Rollback Great No DNS complexities Cost Great Optimized via auto-scaling
  • 35. Let’s reduce the environment boundary further…
  • 36. Pattern: swap Launch Configurations Deployment process: • Start with current ASG & Launch Configuration behind the ELB • Attach updated green Launch Configuration to the ASG • Grow the ASG gradually to 2x original size • Shrink the ASG back to original size • For more control, put old instances into Standby
  • 37. Pattern: swap Launch Configurations Deployment process: • Start with current ASG & Launch Configuration behind the ELB • Attach updated green Launch Configuration to the ASG • Grow the ASG gradually to 2x original size • Shrink the ASG back to original size • For more control, put old instances into Standby
  • 38. Pattern: swap Launch Configurations Deployment process: • Start with current ASG & Launch Configuration behind the ELB • Attach updated green Launch Configuration to the ASG • Grow the ASG gradually to 2x original size • Shrink the ASG back to original size • For more control, put old instances into Standby
  • 39. Pattern: swap Launch Configurations Deployment process: • Start with current ASG & Launch Configuration behind the ELB • Attach updated green Launch Configuration to the ASG • Grow the ASG gradually to 2x original size • Shrink the ASG back to original size • For more control, put old instances into Standby
  • 40. Pattern: swap Launch Configurations Deployment process: • Start with current ASG & Launch Configuration behind the ELB • Attach updated green Launch Configuration to the ASG • Grow the ASG gradually to 2x original size • Shrink the ASG back to original size • For more control, put old instances into Standby
  • 41. Pattern: swap Launch Configurations Deployment process: • Start with current ASG & Launch Configuration behind the ELB • Attach updated green Launch Configuration to the ASG • Grow the ASG gradually to 2x original size • Shrink the ASG back to original size • For more control, put old instances into Standby
  • 42. Swapping launch configurations • Launch configurations: Blueprints for ASG instance provisioning, each ASG points to exactly one • Scale-out & replacement: Events will use the attached (green) launch configuration to provision instances • Scale-in: ASG scale-in events will terminate instances with oldest launch configuration first while trying to keep capacity in AZs balanced • May need to address AZ imbalances separately • Temporarily remove instances from ASG Place specific ASG instances (blue) into standby – stop receiving traffic
  • 43. Pattern review: swap Launch Configurations Risk Category Mitigation Level Reasoning Application Issues Fair Detection of errors/issues in a heterogeneous fleet is complex Application Performance Fair Less granular traffic split, initial traffic load People/Process Errors Good Depends on automation framework Infrastructure Failure Great Auto-Scaling Rollback Great No DNS complexities Cost Good Optimized via auto-scaling, but initial scale-out overprovisions
  • 44. What if we’re running containers?
  • 45. EC2 Container Service Environment boundary: Docker container -> Task definition Deployment options: 1. Blue/green ECS services, DNS update 2. Blue/green ECS services, shared ELB 3. ECS update
  • 46. Pattern: Swap ECS services with DNS Deployment process: • Start with blue service composed of a task definition and ELB • Create new task definition based on new version of Docker image and a new ELB • Create green service with new task definition and ELB • Update Route 53 alias record to direct traffic to new ELB endpoint • Clean up blue service resources when no longer needed
  • 47. Pattern: Swap ECS services with DNS Deployment process: • Start with blue service composed of a task definition and ELB • Create new task definition based on new version of Docker image and a new ELB • Create green service with new task definition and ELB • Update Route 53 alias record to direct traffic to new ELB endpoint • Clean up blue service resources when no longer needed
  • 48. Pattern: Swap ECS services with DNS Deployment process: • Start with blue service composed of a task definition and ELB • Create new task definition based on new version of Docker image and a new ELB • Create green service with new task definition and ELB • Update Route 53 alias record to direct traffic to new ELB endpoint • Clean up blue Service resources when no longer needed
  • 49. Pattern: Swap ECS services with DNS Deployment process: • Start with blue service composed of a task definition and ELB • Create new task definition based on new version of Docker image and a new ELB • Create green service with new task definition and ELB • Update Route 53 alias record to direct traffic to new ELB endpoint • Clean up blue service resources when no longer needed
  • 50. Swap ECS services with DNS 1. Create task definition $ aws ecs register-task-definition --cli-input-json file:///Code/web.json 2. Create service and ELB $ aws ecs create-service --cluster dice-demo --service-name web-service-v2 --task-definition web-tier --load-balancers loadBalancerName=web-tier- v2,containerName=web-tier,containerPort=8000 --desired-count 2 --role "ecsServiceRole" { "containerDefinitions": [ { "name": "web-tier", "image": "amui/web-test:v2", "cpu": 256, "memory": 256, "entryPoint": [], "environment": [], "command": [], "portMappings": [ { "hostPort": 8000, "containerPort": 8000, "protocol": "tcp" } ], "essential": true } ], "family": "web-tier" } web.json
  • 51. Swap ECS services with DNS 3. Route traffic to green ELB endpoint $ aws route53 change-resource-record-sets --hosted-zone-id Zxxxxxxxxxxxxx --change-batch file:///Code/dns.json { "Comment": "Update alias record to route traffic from Blue to Green ELB for Dice Demo ECS Service", "Changes": [ { "Action": "UPSERT", "ResourceRecordSet": { "Name": "demo.example.com", "Type": "A", "AliasTarget": { "HostedZoneId": ”Zxxxxxxxxxxxx", "DNSName": "dice-demo-green- 1234567890.us-west-2.elb.amazonaws.com", "EvaluateTargetHealth": false } … dns.json
  • 52. Pattern review: Swap ECS services with DNS Risk category Mitigation level Reasoning Application issues Great Full cutover or weighted canary analysis Application performance Good ELB may require prewarm, CloudWatch, and automation to scale ECS People/process errors Great Simple process Infrastructure failure Good Leverage CloudWatch, Auto Scaling, ELB Rollback Fair DNS TTL complexities (reaction time, flip/flop) Cost Fair Require enough cluster resources to accommodate new service
  • 53. Pattern: Swap ECS services with ELB Deployment process: • Start with blue service composed of a task definition and ELB • Create new task definition based on new version of Docker image • Create green service with new task definition and map to existing ELB • Scale up green service by incrementing number of tasks • Decommission blue service by setting task count to 0
  • 54. Pattern: Swap ECS services with ELB Deployment process: • Start with blue service composed of a task definition and ELB • Create new task definition based on new version of Docker image • Create green service with new task definition and map to existing ELB • Scale up green service by incrementing number of tasks • Decommission blue service by setting task count to 0
  • 55. Pattern: Swap ECS services with ELB Deployment process: • Start with blue service composed of a task definition and ELB • Create new task definition based on new version of Docker image • Create green service with new task definition and map to existing ELB • Scale up green service by incrementing number of tasks • Decommission blue service by setting task count to 0
  • 56. Pattern: Swap ECS services with ELB Deployment process: • Start with blue service composed of a task definition and ELB • Create new task definition based on new version of Docker image • Create green service with new task definition and map to existing ELB • Scale up green service by incrementing number of tasks • Decommission blue service by setting task count to 0
  • 57. Swapping ECS services with ELB $ aws ecs create-service --cluster dice-demo --service-name web-service-v2 --task-definition web-tier --load-balancers loadBalancerName=web- tier,containerName=web-tier,containerPort=8000 --desired-count 1 --role "ecsServiceRole”
  • 58. Swapping ECS services with ELB $ aws ecs update-service --cluster dice-demo --service web-service-v2 --desired-count 2 $ aws ecs update-service --cluster dice-demo --service web-service-v1 --desired-count 0 • Similar to swapping ASG behind ELB • Application versions must co-exist • Container resources may need to be cleaned up
  • 59. Pattern review: Swap ECS services with ELB Risk Category Mitigation Level Reasoning Application issues Great Canary analysis Application performance Great ELB already warm, CloudWatch and automation to scale ECS People/process errors Good Multi-step process to transition traffic between environments Infrastructure failure Good Leverage CloudWatch, Auto Scaling, ELB Rollback Great No DNS complexities Cost Good Resource management handled by ECS
  • 60. Pattern: ECS service update Deployment process: • Start with blue task definition referenced by an ECS service • Create a green revision of the existing task definition • Update existing ECS service to use the updated task definition • ECS will deploy the new task definition to container instances in a rolling fashion
  • 61. Pattern: ECS service update Deployment process: • Start with blue task definition referenced by an ECS service • Create a green revision of the existing task definition • Update existing ECS service to use the updated task definition • ECS will deploy the new task definition to container instances in a rolling fashion
  • 62. Pattern: ECS service update Deployment process: • Start with blue task definition referenced by an ECS service • Create a green revision of the existing task definition • Update existing ECS service to use the updated task definition • ECS will deploy the new task definition to container instances in a rolling fashion
  • 63. Pattern: ECS service update Deployment process: • Start with blue task definition referenced by an ECS service • Create a green revision of the existing task definition • Update existing ECS service to use the updated task definition • ECS will deploy the new task definition to container instances in a rolling fashion
  • 64. ECS service update 1. Create task definition and update service $ aws ecs update-service --cluster dice-demo --service web-service --task-definition web-tier 2. Monitor service update process $ aws ecs describe-services --cluster dice-demo --services web-service { "services": [ { "status": "ACTIVE", "taskDefinition": "arn:aws:ecs:us-west-2:012345678901:task-definition/web- tier:2",
  • 65. ECS service update “deployments” section of describe-services output displays progress "deployments": [ { "status": "PRIMARY", "desiredCount": 3, "taskDefinition": "arn:aws:ecs:us-west-2:012345678901:task-definition/web-tier:2", "runningCount": 0 }, { "status": "ACTIVE", "desiredCount": 3, "taskDefinition": "arn:aws:ecs:us-west-2:012345678901:task-definition/web-tier:1", "runningCount": 3 }
  • 66. ECS service update “events” section of describe-services output will reveal any errors "events": [ { "message": "(service web-service) has reached a steady state.", "id": "34d17afa-89eb-454a-9311-f4de402222ca", "createdAt": 1442976067.928 }, { "message": "(service web-service) registered 1 instances in (elb web-tier)", "id": "b0020deb-8c4c-4128-bbd3-9b87487eba8f", "createdAt": 1442976061.644 },
  • 67. Pattern: ECS service update Risk category Mitigation level Reasoning Application Issues Fair No canary analysis Application Performance Good No traffic management, ELB already warm People/Process Errors Great Simple, automated process Infrastructure Failure Good Autoscaling cluster instances and service Rollback Great No DNS complexities Cost Great Rolling deployment, cluster instance +1
  • 68. What about schema changes?
  • 69. Decoupled schema changes & code changes Two approaches: • Database updates are backward- compatible (old code uses new schema) • Code changes are backward- compatible with the old schema (new code uses old schema) DB outside environment boundary Tradeoff: simplicity vs. risk Change schema Start app deployment Finish app deployment Start app deployment Finish app deployment Change schema
  • 70. What if schema changes can’t be decoupled, or you’re deploying across regions?
  • 71. Isolated and synchronized data stores • DB inside environment boundary • Environments have separate data stores • Need to coordinate data changes across stacks: • Blue needs data for rollback • Green is new production stack • What consistency model does the application use?
  • 72. Centralized writes process Deployment pattern: • Deploy an aggregator of centralized write operations • Common baseline of data: Use data store-specific replication • Aggregator worker affects changes to data in both environments • Account for lag/latency considerations
  • 73. Simplifying the centralized writes process Green app writes to both DBs • Asynchronous process moves changes by blue app to green DB • Great if there’s a mismatch in consistency requirements (old app needs strong consistency) Each app writes to its own DB • Asynchronous process pushes changes to the other DB • Fully decoupled architecture • Example: DynamoDB tables + streams + triggers + Lambda functions
  • 75. Blue/green deployment patterns at a glance Pattern Mitigated risk Classic DNS cutover Swap Auto Scaling groups Swap launch configs Swap ECS services with DNS Swap ECS services with ELB ECS service update Application issues Canary analysis Canary analysis Mixed fleet Canary analysis Canary analysis Mixed fleet Application performance Granular traffic switch Instance- level granularity Mixed fleet ELB may require pre-warm Container level granularity, warm ELB No traffic management, warm ELB People/process errors Automation: Use CloudFormation with Elastic Beanstalk, OpsWork, third party Simple process DNS swap Multi-step process ECS automated Infrastructure failure Automation framework Auto Scaling, ELB Auto Scaling, ELB CloudWatch, Auto Scaling, ELB CloudWatch, Auto Scaling, ELB CloudWatch, Auto Scaling, ELB Rollback capability DNS ELB ELB DNS ECS automated ECS automated Cost management Gradual scaling Gradual scaling Some over- provisioning Require addl cluster instances Resource reuse Rolling deployment Deployment complexity Simple, DNS weights Auto Scaling control Scale-in adjustments Simple, DNS weights Multi-step process Highly automated
  • 76. Get comfortable with the deployment process Deployments will always have risks associated with them • Deployment & automation frameworks help mitigate process & human error risks • Get comfortable with deployments, practice using production-like replicas • AWS provides affordable, quickly provisioned resources – use the flexibility to experiment new approached
  • 79. Related Sessions DVO202 - DevOps at Amazon: A Look at Our Tools and Processes DVO305 - Turbocharge Your Continuous Deployment Pipeline with Containers