(arc402) deployment automation: from developers' keyboards to end users' screens | aws...

102
November 13, 2014 | Las Vegas NV Chris Munns, AWS Solutions Architect

Upload: amazon-web-services

Post on 12-Jul-2015

2.443 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

November 13, 2014 | Las Vegas NV

Chris Munns, AWS Solutions Architect

Page 2: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

@chrismunns

[email protected]

Page 3: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

https://secure.flickr.com/photos/psd/4389135567/

Page 4: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Historically, there was no automation for developers:

Page 5: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014
Page 6: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Historically, development needed to be tightly controlled:

Page 7: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014
Page 8: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

?

Page 9: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

QA

Staging

Dev

Prod

Page 10: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

QA

Staging

Dev

Prod

Page 11: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

QA

Staging

Dev

Prod

Unit

TestsIntegration

Tests

Usability

TestsPerformance

TestsAcceptance

Tests

System

Tests

Regression

Tests

Monitoring

A/B Tests

Page 12: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

QA

Staging

Dev

Prod

Page 13: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

QA

Staging

Dev

Prod

Unit

TestsIntegration

Tests

Usability

TestsPerformance

TestsAcceptance

Tests

System

Tests

Regression

Tests

Monitoring

A/B Tests

Page 14: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

?

Page 15: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014
Page 16: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014
Page 17: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014
Page 18: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014
Page 19: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Where do we begin?

https://secure.flickr.com/photos/stevendepolo/5749192025/

Page 20: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

If you are part of an Ops / “DevOps” /

“DevTools” / “CoreInfra” / whatever team that

has developers as an internal customer, it’s

your job to help them:

Page 21: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014
Page 22: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

DEV QAPROD

Barker

Your environments should be as

similar to each other as possible!

Page 23: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Make the process so easy

a Caveman could do it*

*provided they have the appropriate access to!

Page 24: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Complexity of the process isn’t

necessarily bad, so long as not

everyone in the organization HAS

to know how the sausage is made

https://secure.flickr.com/photos/erix/2657100921

Page 25: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

https://secure.flickr.com/photos/jasoneppink/499531891

Make the results of change

visible to everyone who

causes or deals with change!

Page 26: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014
Page 27: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014
Page 28: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Aim to reduce the “works on my machine” failures inherent with

developing on one OS and running production on another:

Page 29: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Docker is really changing how applications are

being built and deployed!

NEW!

Page 30: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

“A Better Dev/Test Experience: Docker and AWS” on Medium!

https://medium.com/aws-activate-startup-blog/a-better-dev-test-experience-

docker-and-aws-291da5ab1238

http://bit.ly/1saojKw

Page 31: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Dramatically lowers the complexity in running developer environments.

Let’s set it up:

[munns@maclaptop ~]$ vagrant init chef/centos-6.5

[munns@maclaptop ~]$ vagrant up

[munns@maclaptop ~]$ vagrant ssh

Last login: Fri Mar 7 16:57:20 2014 from 10.0.2.2

[vagrant@zekaih ~]$ uname -a

Linux zekaih.munnsdev.com 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64

x86_64 x86_64 GNU/Linux

Page 32: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014
Page 33: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

• Continuous integration

• Continuous deployment

Page 34: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

• Continuous integration

Page 35: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Continuous deployment always

continuous integration.

Continuous integration doesn’t mean

that the code gets deployed to

production every commit!

https://secure.flickr.com/photos/isherwoodchris/6917253693

Page 36: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

CI tools:

Page 37: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

CI bits

Page 38: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014
Page 39: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Green is

good!

Page 40: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Deploying code

https://secure.flickr.com/photos/simononly/15386966677

Page 41: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Convenience Control

Higher-level services Do it yourself

AWS

Elastic Beanstalk

AWS

OpsWorks

AWS

CloudFormation

AWS

CodeDeploy

AWS application/infrastructure management tools

Page 42: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

AWS application/infrastructure management tools

Convenience Control

Higher-level services Do it yourself

AWS

Elastic Beanstalk

AWS

OpsWorks

AWS

CloudFormation

AWS

CodeDeploy

NEW!!

Page 43: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

You’re not still configuring

your servers by hand,

right?

Page 44: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Options: Deciding factors:

How are you getting the bits from your code

repository to your destination environments?

Page 45: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Simplest of all methods. Use a deployment tool to either do a repo

sync, or copy the raw files from one environment to another:

Pros:– Easy to get started with

– No need for midprocess packaging steps

Cons:– Rollbacks could become a challenge

– Harder to do at large scale

AWS services can make it really easy to deploy from a repository:

– AWS CodeDeploy

– AWS Elastic Beanstalk

– AWS OpsWorks

Page 46: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Example with OpsWorks:

[root@saarbrucken infrahelper]# ll /srv/www/infrahelper/

total 8

lrwxrwxrwx 1 deploy apache 44 Oct 21 20:43 current ->

/srv/www/infrahelper/releases/20141021204316

drwxr-xr-x 7 deploy apache 4096 Oct 21 20:43 releases

drwxrwx--- 9 deploy apache 4096 Oct 21 20:43 shared

<----------------------DEPLOY HAPPENS--------------------->

[root@saarbrucken infrahelper]# ll /srv/www/infrahelper/

total 8

lrwxrwxrwx 1 deploy apache 44 Nov 7 21:44 current ->

/srv/www/infrahelper/releases/20141107214310

Page 47: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Bundle up your code, deploy the bundle:

Pros:– Very atomic solution to deploying code

– Easy to track versions and changes across environments

Cons:– Potentially very large deployable assets

Package will be largely unique to the OS/language you are using:

Page 48: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Example using FPM (Effing Package Management)

[munns@somehost ~]$ gem install fpm

…..

[munns@somehost ~]$ git clone https://github.com/teknogeek0/ReInvent2014-InfraHelper.git

…...

[munns@somehost ~]$ fpm -s dir -t rpm -n "InfraHelper" -v 1.0 --epoch 1 ReInvent2014-InfraHelper/=/opt/InfraHelper

Created package {:path=>"InfraHelper-1.0-1.x86_64.rpm"}

[munns@somehost ~]$ rpm -ivh InfraHelper-1.0-1.x86_64.rpm

…..

[munns@somehost ~]$ rpm -qa InfraHelper

InfraHelper-1.0-1.x86_64

[munns@somehost ~]$ ls -l /opt/InfraHelper/

total 32

drwxr-xr-x 2 root root 4096 Nov 4 23:07 flow

-rw-r--r-- 1 root root 156 Nov 4 23:06 Gemfile

-rwxr-xr-x 1 root root 661 Nov 4 23:06 IHQueueWatcher_control.rb

-rw-r--r-- 1 root root 2765 Nov 4 23:06 infrahelper_utils.rb

…..

Page 49: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Generate a new AMI with your updated code on it. Launch it:

Pros:– The most atomic way possible

• Won’t affect any currently running instances

– Can pretty easily run two versions side by side

Cons:– Bit more work involved

– Really have to think about data persistence

– Have to think about how rollbacks would happen

Bunch of tools to help you build AMIs quick and easy:

Page 50: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

# ./packer validate webimage.json

Template validated successfully.

# ./packer build webimage.json

amazon-ebs output will be in this color.

==> amazon-ebs: Inspecting the source AMI...

==> amazon-ebs: Creating temporary keypair:

packer 5459736e-26a7-5983-db5a-df145dafa7e7

….

Build 'amazon-ebs' finished.

==> Builds finished. The artifacts of successful

builds are:

--> amazon-ebs: AMIs were created:

us-west-2: ami-5f9bd36f

# cat webimage.json

{

"variables": {

"aws_access_key": "",

"aws_secret_key": ""

},

"builders": [{

"type": "amazon-ebs",

"access_key": "{{user `aws_access_key`}}",

"secret_key": "{{user `aws_secret_key`}}",

"region": "us-west-2",

"source_ami": "ami-b5a7ea85",

"instance_type": ”m3.medium",

"ssh_username": "ec2-user",

"ami_name": "webserver {{timestamp}}",

}]

}

Page 51: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

HOST

METRICS

SERVICE

METRICS

LOG

ANALYSISBUILD

METRICS

Page 52: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

AWS Marketplace and Partners

• You can find, research, and buy

software

• Simple pricing, aligns with Amazon

EC2 usage model

• Launch in minutes

• AWS Marketplace billing integrated

into your AWS account

• Can also find SaaS offerings from

partners!

• 1900+ products across 25

categories

Learn more at: aws.amazon.com/marketplace

Page 53: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014
Page 54: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

You’ve picked a deployment

method; now how are you

going to go about acting

upon it?

https://secure.flickr.com/photos/wscullin/3770015991

Page 55: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

How do we go about rolling out our code?

What gotchas are there?

Page 56: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Replace code on all of the

instances without changing

them or taking removing traffic:Elastic Load Balancing (ELB)

Web/App instances

Amazon

DynamoDB

MySQL

Amazon RDS

Instance

Amazon

ElastiCache

Cache Node

users

v1v2

Amazon

Route 53

Page 57: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

• Go through existing tier updating

the application in batches:ELB

Web/App instances

DynamoDB MySQL RDS

Instance

ElastiCache

Cache

Node

usersAmazon

Route 53

v1

Page 58: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

• Go through existing tier updating

the application in batches:ELB

Web/App instances

DynamoDB MySQL RDS

Instance

ElastiCache

Cache

Node

usersAmazon

Route 53

v2 v1

Page 59: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

• Go through existing tier updating

the application in batches:ELB

Web/App instances

DynamoDB MySQL RDS

Instance

ElastiCache

Cache

Node

usersAmazon

Route 53

v2 v1

Page 60: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

• Go through existing tier updating

the application in batches:ELB

Web/App instances

DynamoDB MySQL RDS

Instance

ElastiCache

Cache

Node

usersAmazon

Route 53

v2

Page 61: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

• Go through existing tier updating

the application in batches:ELB

Web/App instances

DynamoDB MySQL RDS

Instance

ElastiCache

Cache

Node

usersAmazon

Route 53

v2

Page 62: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

”WebAutoScalingGroup" : {

"Type" : "AWS::AutoScaling::AutoScalingGroup",

"Properties" : {

"AvailabilityZones" : { "Fn::GetAZs" : { "Ref" : "AWS::Region" } },

"LaunchConfigurationName" : { "Ref" : ”WebAutoScalingLaunchConfig" },

"MaxSize" : ”20",

"MinSize" : ”10"

},

"UpdatePolicy" : {

"AutoScalingRollingUpdate" : {

"MinInstancesInService" : “6",

"MaxBatchSize" : “2",

"PauseTime" : "PT5M"

}

}

}

CloudFormation— Auto Scaling with rolling updates:

Page 63: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

”WebAutoScalingGroup" : {

"Type" : "AWS::AutoScaling::AutoScalingGroup",

"Properties" : {

"AvailabilityZones" : { "Fn::GetAZs" : { "Ref" : "AWS::Region" } },

"LaunchConfigurationName" : { "Ref" : ”WebAutoScalingLaunchConfig" },

"MaxSize" : ”20",

"MinSize" : ”10"

},

"UpdatePolicy" : {

"AutoScalingRollingUpdate" : {

"MinInstancesInService" : “6",

"MaxBatchSize" : “2",

"PauseTime" : "PT5M"

}

}

}

Replace 2 at a time, pause

for 5 minutes before doing

the next batch

CloudFormation— Auto Scaling with rolling updates:

Page 64: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Elastic Beanstalk—batch deployments and rolling configuration updates:

Page 65: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

CodeDeploy—rolling deployments:

Page 66: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

CodeDeploy—rolling deployments:

Page 67: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

CodeDeploy—rolling deployments:

Page 68: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

We stand up a duplicate part of our

infrastructure and slowly cut traffic

over to it:

As we shift more traffic over, let

Auto Scaling grow/shrink our

instances of the new or old

application:

ELB

Web/App instances

DynamoDB MySQL RDS

Instance

ElastiCache

Cache

Node

users

v1

Amazon

Route 53

Page 69: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

We stand up a duplicate part of our

infrastructure and slowly cut traffic

over to it:

As we shift more traffic over, let

Auto Scaling grow/shrink our

instances of the new or old

application:

ELB

Web/App instances

DynamoDB MySQL RDS

Instance

ElastiCache

Cache

Node

users

Amazon

Route 53

v1

ELB

v2

Page 70: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

We stand up a duplicate part of our

infrastructure and slowly cut traffic

over to it:

As we shift more traffic over, let

Auto Scaling grow/shrink our

instances of the new or old

application:

ELB

Web/App instances

DynamoDB MySQL RDS

Instance

ElastiCache

Cache

Node

users

v1

ELB

v2

Amazon

Route 53

Page 71: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

We stand up a duplicate part of our

infrastructure and slowly cut traffic

over to it:

As we shift more traffic over, let

Auto Scaling grow/shrink our

instances of the new or old

application:

ELB

Web/App instances

DynamoDB MySQL RDS

Instance

ElastiCache

Cache

Node

users

v1

ELB

v2

Amazon

Route 53

Page 72: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

We stand up a duplicate part of our

infrastructure and slowly cut traffic

over to it:

As we shift more traffic over, let

Auto Scaling grow/shrink our

instances of the new or old

application:

ELB

Web/App instances

DynamoDB MySQL RDS

Instance

ElastiCache

Cache

Node

users

v2

Amazon

Route 53

Page 73: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Some

words of

caution!

https://secure.flickr.com/photos/e-coli/3888542890

Page 74: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Schema changes tied to deployments are a blocker to moving fast:

Unlink this from code deploys:

Page 75: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Be prepared for things

to go wrong!

https://secure.flickr.com/photos/akyamada/4071735996

Page 76: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

"Resources" : {

"myMainSite" : {

"Type" : "AWS::Route53::RecordSetGroup",

"Properties" : {

"HostedZoneName" : {"Ref" : "HostedZoneName"},

"Comment" : "Main site with fail whale.",

"RecordSets" : [

{

"Name" : {"Ref" : "DNSRecordName"},

"Type" : "A",

"SetIdentifier": "Primary",

"Failover": "PRIMARY",

"AliasTarget" : {

"HostedZoneId" : {"Ref" : "ELBHostedZoneID"},

"DNSName" : {"Ref" : "ELBDnsName"},

"EvaluateTargetHealth" : "True"

}

},

{

"Name": {"Ref" : "DNSRecordName"},

"Type": "A",

"SetIdentifier" : "Secondary",

"Failover": "SECONDARY",

"AliasTarget": {

"HostedZoneId": { "Fn::FindInMap" : [

"S3RegionWebEndpoints", { "Ref" : "S3BucketRegion" },

"HostedZoneId" ]},

"EvaluateTargetHealth": "False",

"DNSName": { "Fn::FindInMap" : [

"S3RegionWebEndpoints", { "Ref" : "S3BucketRegion" },

"DNSEndpoint" ]}

}

}

]

}

}

}

}

Page 77: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

"Resources" : {

"myMainSite" : {

"Type" : "AWS::Route53::RecordSetGroup",

"Properties" : {

"HostedZoneName" : {"Ref" : "HostedZoneName"},

"Comment" : "Main site with fail whale.",

"RecordSets" : [

{

"Name" : {"Ref" : "DNSRecordName"},

"Type" : "A",

"SetIdentifier": "Primary",

"Failover": "PRIMARY",

"AliasTarget" : {

"HostedZoneId" : {"Ref" : "ELBHostedZoneID"},

"DNSName" : {"Ref" : "ELBDnsName"},

"EvaluateTargetHealth" : "True"

}

},

{

"Name": {"Ref" : "DNSRecordName"},

"Type": "A",

"SetIdentifier" : "Secondary",

"Failover": "SECONDARY",

"AliasTarget": {

"HostedZoneId": { "Fn::FindInMap" : [

"S3RegionWebEndpoints", { "Ref" : "S3BucketRegion" },

"HostedZoneId" ]},

"EvaluateTargetHealth": "False",

"DNSName": { "Fn::FindInMap" : [

"S3RegionWebEndpoints", { "Ref" : "S3BucketRegion" },

"DNSEndpoint" ]}

}

}

]

}

}

}

}

Example template:

http://bit.ly/113cNaa

Page 78: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

HOST

METRICS

SERVICE

METRICS

LOG

ANALYSIS

EXTERNAL

SITE

METRICS

Page 79: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

When things break during a deploy you’ll need to decide how to

react:

How do you decide? Deployment pattern and method will be deciding

factors:

Page 80: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Have a real-time communication method for the entire company:

Share knowledge:

Page 81: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014
Page 82: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

QA

Staging

Dev

Prod

Page 83: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014
Page 84: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

We need robots

https://secure.flickr.com/photos/spenceyc/7481166880

Page 85: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Good news, we’ve got

lots of “robots”!

https://secure.flickr.com/photos/peyri/10207629

Page 86: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

(NEW!)

(NEW!)

(SOON!)

(NEW!)

Page 87: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

https://secure.flickr.com/photos/jeffedoe/506027963

Page 88: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Code

Repository

Page 89: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Code

Repository

CI

Infra

CI

SaaS

Page 90: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Code

Repository

CI

Infra

CI

SaaS

Page 91: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Code

Repository

CI

Infra

CI

SaaSCode Bundler

Page 92: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Code

Repository

CI

Infra

CI

SaaSCode Bundler

Deploy

Object

Amazon S3

Bucket

Page 93: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Code

Repository

CI

Infra

CI

SaaSCode Bundler

Deploy

Object

Amazon S3

Bucket

Page 94: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Code

Repository

CI

Infra

CI

SaaSCode Bundler

Deploy

Object

Amazon S3

Bucket

AWS

OpsWorks

Page 95: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Code

Repository

CI

Infra

CI

SaaSCode Bundler

Deploy

Object

Amazon S3

Bucket

AWS

OpsWorks

Dev

Web/App

Servers

Page 96: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Code

Repository

CI

Infra

CI

SaaSCode Bundler

Deploy

Object

Amazon S3

Bucket

AWS

OpsWorks

Dev

Web/App

Servers

Dev/

QA

Users

Page 97: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Deploy

Object

Amazon S3

Bucket

AWS

OpsWorks

Prod

Web/App

Servers

Users

Deployment

Interface

Page 98: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Automation good!

https://secure.flickr.com/photos/macwagen/94975613

Page 99: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

?

Page 100: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

Page 101: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

?https://secure.flickr.com/photos/dullhunk/202872717/

Page 102: (ARC402) Deployment Automation: From Developers' Keyboards to End Users' Screens | AWS re:Invent 2014

http://bit.ly/awsevals