aws 상에서의 지속적 배포방법
DESCRIPTION
AWS 상에서의 지속적 배포방법TRANSCRIPT
CONTINOUS DEPLOYMENT WITH AMAZON WEB SERVICES
Carlos Conde | Solutions Architecture
CONTINUOUS
INTEGRATION
DEVELOPER
SOURCE CODE
REPOSITORY
SOURCE CODE
REPOSITORY
PROJECT MANAGEMENT
SERVER
SOURCE CODE
REPOSITORY
PROJECT MANAGEMENT
SERVER
CONTINUOUS
INTEGRATION SERVER
SOURCE CODE
REPOSITORY
PROJECT MANAGEMENT
SERVER
CONTINUOUS
INTEGRATION SERVER
PICK
TASKS
SOURCE CODE
REPOSITORY
PROJECT MANAGEMENT
SERVER
CONTINUOUS
INTEGRATION SERVER
SUBMIT
CODE
SOURCE CODE
REPOSITORY
PROJECT MANAGEMENT
SERVER
CONTINUOUS
INTEGRATION SERVER
SCHEDULE
BUILD
SOURCE CODE
REPOSITORY
PROJECT MANAGEMENT
SERVER
CONTINUOUS
INTEGRATION SERVER
RECURENT
BUILDS
SOURCE CODE
REPOSITORY
PROJECT MANAGEMENT
SERVER
CONTINUOUS
INTEGRATION SERVER
CODE
FETCH
SOURCE CODE
REPOSITORY
PROJECT MANAGEMENT
SERVER
CONTINUOUS
INTEGRATION SERVER
CODE QUALITY
TESTS
TEST
RESULTS
SOURCE CODE
REPOSITORY
PROJECT MANAGEMENT
SERVER
CONTINUOUS
INTEGRATION SERVER
BUILD OUTPUT
SOURCE CODE
REPOSITORY
PROJECT MANAGEMENT
SERVER
CONTINUOUS
INTEGRATION SERVER
DOCS
BINARIES /
PACKAGES
PAIN POINTS: • UNIT TESTS INCOMPLETE
• MOCKS MAINTENANCE
• TEST ENV EXPENSIVE
• TEST ENV ≠ PROD
ON-DEMAND
PAY AS YOU GO
PROGRAMABLE
SOURCE CODE
REPOSITORY
DNS
CONTINUOUS
INTEGRATION SERVER
PROJECT
MANAGEMENT SERVER
BUILDS
= PROGRAMMABLE
PLATFORM
AWS
CLOUDFORMATION STACK-BASED DEPLOYMENT
SERVICE
CLOUDFORMATION
TEMPLATE
{
"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"
}
}
}
}
"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"
}
}
}
{
"Parameters" : {
"KeyName" : {
"Description" : "Name of an existing EC2
KeyPair to enable SSH
access to the instance",
"Type" : "String"
}
},
}
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
APPLICATION
VERSIONS
& INFRASTRUCTURE
VERSIONS
CLOUDFORMATION
TEMPLATE
TEST ENVIRONMENTS
30,000 REQUESTS / SECOND
1 TB TRAFFIC / DAY
“…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
“The AWS Cloud brings business agility as Shell is able to deploy services much more quickly”
Johan Krebbers
Vice President of Architecture
LOAD TESTING
USING AMAZON EC2 TO SIMULATE
2.4 MILLION PLAYERS
A / B TESTING
DATA-DRIVEN
ARCHITECTURES
COST-ORIENTED
ARCHITECTURES
PHP+APACHE+VARNISH
NGINX+NODEJS
PRODUCTION
ROLL-OUT
DEV & TEST ENVIRONMENT
AWS ACCOUNT A
PRODUCTION ENVIRONMENT
AWS ACCOUNT B
CONTINUOUS
INTEGRATION
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
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