aws 상에서의 지속적 배포방법

58
CONTINOUS DEPLOYMENT WITH AMAZON WEB SERVICES Carlos Conde | Solutions Architecture

Upload: jin-jung

Post on 15-Jan-2015

284 views

Category:

Documents


1 download

DESCRIPTION

AWS 상에서의 지속적 배포방법

TRANSCRIPT

Page 1: AWS 상에서의 지속적 배포방법

CONTINOUS DEPLOYMENT WITH AMAZON WEB SERVICES

Carlos Conde | Solutions Architecture

Page 2: AWS 상에서의 지속적 배포방법

CONTINUOUS

INTEGRATION

Page 3: AWS 상에서의 지속적 배포방법

DEVELOPER

Page 4: AWS 상에서의 지속적 배포방법

SOURCE CODE

REPOSITORY

Page 5: AWS 상에서의 지속적 배포방법

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

Page 6: AWS 상에서의 지속적 배포방법

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

Page 7: AWS 상에서의 지속적 배포방법

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

PICK

TASKS

Page 8: AWS 상에서의 지속적 배포방법

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

SUBMIT

CODE

Page 9: AWS 상에서의 지속적 배포방법

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

SCHEDULE

BUILD

Page 10: AWS 상에서의 지속적 배포방법

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

RECURENT

BUILDS

Page 11: AWS 상에서의 지속적 배포방법

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

CODE

FETCH

Page 12: AWS 상에서의 지속적 배포방법

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

CODE QUALITY

TESTS

TEST

RESULTS

Page 13: AWS 상에서의 지속적 배포방법

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

BUILD OUTPUT

Page 14: AWS 상에서의 지속적 배포방법

SOURCE CODE

REPOSITORY

PROJECT MANAGEMENT

SERVER

CONTINUOUS

INTEGRATION SERVER

DOCS

BINARIES /

PACKAGES

Page 15: AWS 상에서의 지속적 배포방법

PAIN POINTS: • UNIT TESTS INCOMPLETE

• MOCKS MAINTENANCE

• TEST ENV EXPENSIVE

• TEST ENV ≠ PROD

Page 16: AWS 상에서의 지속적 배포방법

ON-DEMAND

PAY AS YOU GO

PROGRAMABLE

Page 17: AWS 상에서의 지속적 배포방법
Page 18: AWS 상에서의 지속적 배포방법

SOURCE CODE

REPOSITORY

DNS

CONTINUOUS

INTEGRATION SERVER

PROJECT

MANAGEMENT SERVER

BUILDS

Page 19: AWS 상에서의 지속적 배포방법

= PROGRAMMABLE

PLATFORM

Page 20: AWS 상에서의 지속적 배포방법
Page 21: AWS 상에서의 지속적 배포방법
Page 22: AWS 상에서의 지속적 배포방법
Page 23: AWS 상에서의 지속적 배포방법

AWS

CLOUDFORMATION STACK-BASED DEPLOYMENT

SERVICE

Page 24: AWS 상에서의 지속적 배포방법

CLOUDFORMATION

TEMPLATE

Page 25: AWS 상에서의 지속적 배포방법
Page 26: AWS 상에서의 지속적 배포방법

{

"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 27: AWS 상에서의 지속적 배포방법

"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 28: AWS 상에서의 지속적 배포방법

{

"Parameters" : {

"KeyName" : {

"Description" : "Name of an existing EC2

KeyPair to enable SSH

access to the instance",

"Type" : "String"

}

},

}

Page 29: AWS 상에서의 지속적 배포방법

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 30: AWS 상에서의 지속적 배포방법
Page 31: AWS 상에서의 지속적 배포방법
Page 32: AWS 상에서의 지속적 배포방법

APPLICATION

VERSIONS

& INFRASTRUCTURE

VERSIONS

Page 33: AWS 상에서의 지속적 배포방법

CLOUDFORMATION

TEMPLATE

Page 34: AWS 상에서의 지속적 배포방법

TEST ENVIRONMENTS

Page 35: AWS 상에서의 지속적 배포방법

30,000 REQUESTS / SECOND

1 TB TRAFFIC / DAY

Page 36: AWS 상에서의 지속적 배포방법

“…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 37: AWS 상에서의 지속적 배포방법

“The AWS Cloud brings business agility as Shell is able to deploy services much more quickly”

Johan Krebbers

Vice President of Architecture

Page 38: AWS 상에서의 지속적 배포방법

LOAD TESTING

Page 39: AWS 상에서의 지속적 배포방법
Page 40: AWS 상에서의 지속적 배포방법
Page 41: AWS 상에서의 지속적 배포방법
Page 42: AWS 상에서의 지속적 배포방법
Page 43: AWS 상에서의 지속적 배포방법
Page 44: AWS 상에서의 지속적 배포방법

USING AMAZON EC2 TO SIMULATE

2.4 MILLION PLAYERS

Page 45: AWS 상에서의 지속적 배포방법
Page 46: AWS 상에서의 지속적 배포방법

A / B TESTING

Page 47: AWS 상에서의 지속적 배포방법
Page 48: AWS 상에서의 지속적 배포방법

DATA-DRIVEN

ARCHITECTURES

Page 49: AWS 상에서의 지속적 배포방법

COST-ORIENTED

ARCHITECTURES

Page 50: AWS 상에서의 지속적 배포방법

PHP+APACHE+VARNISH

NGINX+NODEJS

Page 51: AWS 상에서의 지속적 배포방법

PRODUCTION

ROLL-OUT

Page 52: AWS 상에서의 지속적 배포방법
Page 53: AWS 상에서의 지속적 배포방법

DEV & TEST ENVIRONMENT

AWS ACCOUNT A

PRODUCTION ENVIRONMENT

AWS ACCOUNT B

Page 54: AWS 상에서의 지속적 배포방법

CONTINUOUS

INTEGRATION

CONTINUOUS

DEPLOYMENT

Page 55: AWS 상에서의 지속적 배포방법

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 56: AWS 상에서의 지속적 배포방법
Page 57: AWS 상에서의 지속적 배포방법
Page 58: AWS 상에서의 지속적 배포방법

ARCHITECTURE CENTER http://aws.amazon.com/architecture

TECHNICAL ARTICLES http://aws.amazon.com/articles

PODCAST http://aws.amazon.com/podcast

BLOG http://aws.typepad.com