aws summit tel aviv - startup track - continuous deployment

93
AWS Summit 2013 Tel Aviv Oct 16 Tel Aviv, Israel Tiago Henriques Solutions Architect, Amazon Web Services Continuous Deployment

Upload: amazon-web-services

Post on 20-Aug-2015

1.017 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

AWS Summit 2013 Tel Aviv Oct 16 – Tel Aviv, Israel

Tiago Henriques

Solutions Architect, Amazon Web Services

Continuous Deployment

Page 2: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

CONTINUOUS

INTEGRATION

Page 3: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

DEVELOPER

Page 4: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

SOURCE CODE

REPOSITORY

Page 5: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

Page 6: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

Page 7: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

PICK

TASKS

Page 8: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

SUBMIT

CODE

Page 9: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

SCHEDULE

BUILD

Page 10: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

RECURRENT

BUILDS

Page 11: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

CODE

FETCH

Page 12: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

CODE QUALITY

TESTS

TEST

RESULTS

Page 13: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

BUILD OUTPUT

Page 14: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

DOCS

BINARIES

& PACKAGES

Page 15: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 16: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

SOURCE CODE

REPOSITORY

DNS

CONTINUOUS

INTEGRATION SERVER

PROJECT

MANAGEMENT SERVER

BUILDS

Page 17: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

PAIN POINTS • UNIT TESTS INCOMPLETE

• MOCK TESTS MAINTENANCE

• EXPENSIVE TEST ENVIRONMENT

• TEST ENVIRONMENT ≠ PRODUCTION

• DEPLOYMENT CYCLES

Page 18: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

ON-DEMAND

PAY AS YOU GO

ELASTIC

Page 19: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

=

PROGRAMMABLE

PLATFORM

Page 20: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 21: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 22: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 23: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

IF YOU CAN PROGRAM IT

YOU CAN AUTOMATE IT

Page 24: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

AWS

CLOUDFORMATION STACK-BASED DEPLOYMENT

SERVICE

Page 25: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

CLOUDFORMATION

TEMPLATE

Page 26: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 27: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

{ "Description" : "Create RDS with username and password", "Resources" : { "MyDB" : { "Type" : "AWS::RDS::DBInstance", "Properties" : { "AllocatedStorage" : "500", "DBInstanceClass" : "db.m1.small", "Engine" : "MySQL", "EngineVersion" : "5.5", "MasterUsername" : "MyName", "MasterUserPassword" : "MyPassword" } } } }

Page 28: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

"AWS::CloudFormation::Init" : { "config" : { "packages" : { "yum" : { "mysql" : [], "mysql-server" : [], "httpd" : [], "php" : [], "php-mysql" : [] } }, "sources" : { "/var/www/html" : "https://s3.amazonaws.com/my-builds/build-v4.zip" } }

Page 29: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

{ "Parameters" : { "KeyName" : { "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance", "Type" : "String" } }, }

Page 30: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

CLOUDFORMATION

TEMPLATE

PROCEDURAL

DEFINITION Create it programmatically

KNOWN

CONFIGURATION Store stack configuration in

source control

PARAMETER

DRIVEN Dynamic and user-driven

templates

COLLABORATION Share templates with ease

as just files

Page 31: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 32: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

APPLICATION

VERSIONS

+ INFRASTRUCTURE

VERSIONS

Page 33: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

CLOUDFORMATION

TEMPLATE

Page 34: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 35: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 36: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 37: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 38: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

HTTP://SORCERY.SMUGMUG.COM/

Page 39: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

TEST ENVIRONMENTS

Page 40: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

30,000 REQUESTS / SECOND

1 TB TRAFFIC / DAY

Page 41: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

“…AWS seemed to be the best solution available to allow a small, independent company to rapidly develop and test a completely new infrastructure, and host it. We also loved the flexibility that AWS allowed us, when spinning up smaller test environments, for beta trials, QA, localization, and during development. The low initial cost was also crucial.” Alex Evans, CTO

Page 42: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

LOAD TESTING

Page 43: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 44: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 45: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 46: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 47: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 48: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

USING AMAZON EC2 TO SIMULATE

2.4 MILLION PLAYERS

Page 49: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

CONTINUOUS

DEPLOYMENT SMALL, FREQUENT CHANGES

CONSTANTLY INTEGRATING INTO

PRODUCTION

Page 50: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 51: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

KEY = ITERATION

Page 52: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

ITERATION

= MODIFY THE SYSTEM TO BETTER

MEET THE EXPECTATIONS OF

YOUR USERS

Page 53: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

11.6s

Mean time

between

deployments

(weekday)

1,079

Max number of

deployments in a

single hour

10,000

Mean number of

hosts

simultaneously

receiving a

deployment

30,000

Max number of

hosts

simultaneously

receiving a

deployment

DEPLOYMENTS AT

AMAZON.COM

Page 54: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

SOFTWARE DEPLOY

≠ PRODUCT LAUNCH

Page 55: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 56: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

1.5 BILLION PAGE VIEWS

OCTOBER 2012

$83 MILLION IN TRANSACTIONS

4.2 MILLION ITEMS SOLD

Page 57: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

30 DEPLOYS PER DAY 1 DEPLOY EVERY 20 MINUTES

Page 58: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

"Production is truly the only place you

can validate your code."

Page 59: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 60: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 61: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 62: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

AWS OPSWORKS INTEGRATED APPLICATION

MANAGEMENT

Page 63: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 64: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

14 BILLION REQUESTS/MONTH

50 000 DATABASE UPDATES / SEC

NO CACHE

Page 65: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

A / B TESTING

Page 66: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 67: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 68: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 69: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 70: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

DATA-DRIVEN

ARCHITECTURES

Page 71: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

METRICS @ETSY

Page 72: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

COST-ORIENTED

ARCHITECTURES

Page 73: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

PHP+APACHE+VARNISH

NGINX+NODEJS

Page 74: AWS Summit Tel Aviv - Startup Track - Continuous Deployment
Page 75: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

CONTINUOUS

INTEGRATION

CONTINUOUS

DEPLOYMENT

Page 76: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

CONTINUOUS

DEPLOYMENT

=

CONTINUOUS

EXPERIMENTATION

Page 77: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

CONTINUOUS

DEPLOYMENT

=

CONTINUOUS

IMPROVEMENT

Page 78: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

INNOVATE

Page 79: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

« Want to increase innovation?

Lower the cost of failure »

Joi Ito

Page 80: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

SPEED AND AGILITY

Experiment

Often

Fail quickly at

a low cost

More

Innovation

Experiment

Infrequently

Failure is

expensive

Less

Innovation

“ON-PREMISE”

Page 81: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

CloudOn Dev / Test Flows

AWS IL Conference

Oct 16 2013

Page 82: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

82 | Proprietary and Confidential

What is CloudOn?

CloudOn is a versatile productivity

solution that allows you to connect with

cloud storage providers to create,

review, edit and share your Micosoft

Office files across different devices.

Page 83: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

83 | Proprietary and Confidential

The CloudOn Production Environment

API RDS

Provisioning

Social

Storage

File Sharing

Sessions DB

Page 84: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

84 | Proprietary and Confidential

Production Deployment Flow

Bootsrapping

Launch Instances

install 3rd party infra (Java, Tomcat, etc)

Configure roles

Deploy CloudOn Java services

(Not using OpsWorks yet)

Page 85: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

85 | Proprietary and Confidential

Dev / Test Deployment Needs

Developer Needs

Push-button deploy by developers

Deploy any branch

Several deployments in parallel

Automated Regression Needs

Deploy specific release candidate combos

Run parallel regressions

Low Cost

Page 86: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

86 | Proprietary and Confidential

The CloudOn Dev/Test Deployment Model

All In One

Page 87: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

87 | Proprietary and Confidential

All In One (AIO) - Deploy

A single instance hosting all CloudOn services

Launches via Jenkins Job

Allows to override defaults: Branch and build

Instance type

Regions

Settings

Tagged by the developer name

Each CloudOn service runs on a different port, no collision

Allows re-deploy on existing AIO

All In One

Page 88: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

88 | Proprietary and Confidential

All In One – External Services

What to do with the external, AWS services?

RDS

DynamoDB

ElastiCache

RDS

SQS

SES

Page 89: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

89 | Proprietary and Confidential

All In One – SQS, DynamoDB, SES

Using a shared dev account - SQS, DynamoDB, SES

New Queue, Tables created for each AIO

Keyed by the instance private IP

Old Queues and Tables (from obsolete AIOs) deleted upon creation of the newest AIO

Page 90: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

90 | Proprietary and Confidential

Using a local mySQL, memcached on the machine

Allows each instance to have its own data

Allows exploring private schema changes

(No cost)

All In One – RDS, Memcached

Page 91: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

91 | Proprietary and Confidential

All In One – Cost

Medium instance (default, can be changed)

Most AIOs are automatically destroyed at midnight

(unless requested not to at creation time)

Weekly report on long-running AIOs

(still find rogue AIOs running for too long…)

Page 92: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

92 | Proprietary and Confidential

All In One – Additional Benefits

• Push-button deploy by developers

• On demand

• Easy end-to-end integration test on AWS

• Any branch and version

• Allows operational testing

• Allows sandboxing for QA, partners

Page 93: AWS Summit Tel Aviv - Startup Track - Continuous Deployment

93 | Proprietary and Confidential

Thanks!