DevOps at Amazon: A Look at Our Tools and Processes
-
Upload
amazon-web-services -
Category
Sports
-
view
733 -
download
1
Transcript of DevOps at Amazon: A Look at Our Tools and Processes
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
DevOps at Amazon:A Look at Our Tools and Processes
Rob Brigham
Product Management, AWS Developer Tools
Agenda
• The Amazon DevOps story
• New developer tools for everyone– AWS CodeDeploy
– AWS CodePipeline
– AWS CodeCommit
What is DevOps?
DevOps = efficiencies that speed up this lifecycle
developers customers
releasetestbuild
plan monitor
delivery pipeline
feedback loop
Software development lifecycle
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
The Amazon DevOps story
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
• Service-Oriented
Architecture (SOA)
• Single-purpose
• Connect only
through APIs
• “Microservices”
• Deployment service
• No downtime
deployments
• Health checking
• Versioned artifacts
and rollbacks
• Continuous delivery
• From check-in to production
• Automated actions and transitions
• >90% of teams
Pipelines
Microservice development lifecycle
developers delivery pipelinesservices
releasetestbuild
releasetestbuild
releasetestbuild
releasetestbuild
releasetestbuild
releasetestbuild
= 50 million deployments a year
Thousands of teams
× Microservice architecture
× Continuous delivery
× Multiple environments
Setting up a delivery pipeline
1) Automate your software deployments
2) Automate your release process
deploy deploy deploy deploy
development test staging production
release: source > build > test > staging > production
Setting up a delivery pipeline
1) Automate your software deployments
AWS CodeDeploy
2) Automate your release process
AWS CodePipeline
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
AWS CodeDeploy
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
AWS CodeDeploy
• Scale from one instance to thousands
• Deploy to any server: AWS or on-premises
• Centrally control and monitor
Test
CodeDeployv1, v2, v3
Production
Dev
Coordinate automated deployments, just like Amazon
application
revisions
deployment groups
1) Package app 2) Specify targets 3) Deploy!
version: 0.0
os: linux
files:
- source: chef/
destination: /etc/chef/codedeploy
- source: target/hello.war
destination: /var/lib/tomcat6/webapps
hooks:
ApplicationStop:
- location: deploy_hooks/stop-tomcat.sh
BeforeInstall:
- location: deploy_hooks/install-chef.sh
- location: deploy_hooks/chef-solo.sh
ApplicationStart:
- location: deploy_hooks/start-tomcat.sh
ValidateService:
- location: deploy_hooks/verify_service.sh
1) Package app 2) Specify targets 3) Deploy!
version: 0.0
os: linux
files:
- source: chef/
destination: /etc/chef/codedeploy
- source: target/hello.war
destination: /var/lib/tomcat6/webapps
hooks:
ApplicationStop:
- location: deploy_hooks/stop-tomcat.sh
BeforeInstall:
- location: deploy_hooks/install-chef.sh
- location: deploy_hooks/chef-solo.sh
ApplicationStart:
- location: deploy_hooks/start-tomcat.sh
ValidateService:
- location: deploy_hooks/verify_service.sh
1) Package app 2) Specify targets 3) Deploy!
version: 0.0
os: linux
files:
- source: chef/
destination: /etc/chef/codedeploy
- source: target/hello.war
destination: /var/lib/tomcat6/webapps
hooks:
ApplicationStop:
- location: deploy_hooks/stop-tomcat.sh
BeforeInstall:
- location: deploy_hooks/install-chef.sh
- location: deploy_hooks/chef-solo.sh
ApplicationStart:
- location: deploy_hooks/start-tomcat.sh
ValidateService:
- location: deploy_hooks/verify_service.sh
1) Package app 2) Specify targets 3) Deploy!
Agent Agent Agent
Test
Agent Agent
Agent Agent
Agent
Agent
Production
Deployment groupDeployment group
Group instances by:
• Auto Scaling group
• Amazon EC2 tag
• On-premises tag
1) Package app 2) Specify targets 3) Deploy!
aws deploy create-deployment \
--application-name MyApp \
--deployment-group-name TargetGroup \
--s3-location bucket=MyBucket,key=MyApp.zip
AWS CLI & SDKs
AWS Console
CI/CD Partners
GitHub
Deployment config—Choose speed
v2 v1 v1 v1 v1 v1 v1 v1
v2 v2 v2 v2 v1 v1 v1 v1
v2 v2 v2 v2 v2 v2 v2 v2
one at a time
half at a time
all at once
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
AWS CodePipeline
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
AWS CodePipeline
• Model your release process
• Integrate with your systems
• Visually monitor your pipeline status
Continuous delivery and release automation, just like Amazon
Build
1) Build
2) Unit test
1) Deploy
2) UI test
Source Beta Production
1) Deploy
2) Perf test
Gamma
1) Deploy canary
2) Deploy region 1
3) Deploy region 2
1) Pull
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
AWS CodeCommit
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
AWS CodeCommit
• Use standard Git tools
• Scalability, availability, and durability of Amazon S3
• Encryption at rest with customer-specific keys
• No repo size limit
git pull/push CodeCommit
Git objects in
Amazon S3
Git index in
Amazon
DynamoDB
Encryption key
in AWS KMS
SSH or HTTPS
Secure, scalable, and managed Git source control
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
Summary
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
AWS code services
CodeCommitlaunched today
CodePipelinelaunched today
CodeDeploylaunched Nov. 2014
aws.amazon.com/awscode