Today’s cutting-edge companies have software release cycles measured in days instead of months. This agility is enabled by the DevOps practice of continuous delivery, which automates building, testing, and deploying all code changes. This automation helps you catch bugs sooner and accelerates developer productivity. In this session, we’ll share the processes that Amazon’s engineers use to practice DevOps and discuss how you can bring these processes to your company by using a new set of AWS tools (AWS CodeCommit, AWS CodePipeline, and AWS CodeDeploy). These services were inspired by Amazon's own internal developer tools and DevOps culture.
3. Software moves faster today
Software creation and distribution is
easier and faster than ever:
• Startups can now take on giants with little to
no funding ahead of time
• Getting your software into the hands of
millions is a download away
• Your ability to move fast is paramount to your
ability to fight off disruption
4. What tools do you need to move fast?
Releasing software in this new software driven world
requires a number of things:
• Tools to manage the flow of your software development
release process
• Tools to properly test and inspect your code for defects
and potential issues
• Tools to deploy your applications
5. First, we need to
understand a little bit about
software release processes
https://www.flickr.com/photos/jurvetson/5201796697/
10. In 2009, we
ran a study to
find out where
inefficiencies
might still exist
11. We were just waiting.
WaitWrite
Code WaitBuild
Code WaitDeploy
to Test
Deploy
to
Prod
Weeks
Mins Days Mins Days Mins Days Mins
12. Automated actions and
transitions; from check-
in to production
Development benefits:
• Faster
• Safer
• Simplification &
standardization
• Visualization of the
process
Pipelines
13. This has continued to work out really well:
In 2014:
• Thousands of service teams across Amazon
• Building microservices
• Practicing continuous delivery
• Many environments (staging, beta, production)
50 million deploys
14. Continuous delivery service for fast and
reliable application updates
Model and visualize your software release
process
Builds, tests, and deploys your code every time
there is a code change
Integrates with 3rd party tools and AWS
AWS CodePipeline
23. Automates code deployments to any instance
Handles the complexity of updating your
applications
Avoid downtime during application deployment
Deploy to Amazon EC2 or on-premises
servers, in any language and on any operating
system
Integrates with 3rd party tools and AWS
AWS CodeDeploy
25. appspec.yml Example
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html
permissions:
- object: /var/www/html
pattern: “*.html”
owner: root
group: root
mode: 755
hooks:
ApplicationStop:
- location: scripts/deregister_from_elb.sh
BeforeInstall:
- location: scripts/install_dependencies.sh
ApplicationStart:
- location: scripts/start_httpd.sh
ValidateService:
- location: scripts/test_site.sh
- location: scripts/register_with_elb.sh
• Remove/add instance to ELB
• Install dependency packages
• Start Apache
• Confirm successful deploy
• More!
• Send application files to one
directory and configuration
files to another
• Set specific permissions on
specific directories & files
26. v2 v2 v2 v2 v2 v2
one at a time
half at a time
all at once
v2 v2 v2 v1 v1 v1
v2 v1 v1 v1 v1 v1 Agent Agent
Dev Deployment group
OR
Prod Deployment group
Agent
AgentAgent
Agent Agent
Agent
Choose Deployment Speed and Group
28. Launching to Production
After you’ve built and tested your code and
hopefully gone through a few pre-production
deploys, its time for the real thing!
You’ll want think about:
• Impact to customers
• Impact to infrastructure
• Impact to business
How can we track these and communicate
deploys?
29. Extend AWS CodePipeline Using Custom Actions
Update tickets Provision resources
Update dashboards Send notifications Security scan
Mobile testing
44. 2nd Generation (Ionblaster)
●Based on CloudFormation
sbt docker:publish
ionblaster new SERVICE 0.0.2
ionblaster traffic SERVICE 0.0.2 10
0.0.1
DNS
0.0.2
54. “We could solve this now, or, just wait six
months, and Amazon will provide a solution.”
Andrey Kartashov, Distinguished Engineer,
Gilt
55. ● Based on CodeDeploy + CloudFormation + AWS CLI (+ ECR)
make create stack
Development Canary
4th Generation (Mobile Service Tools - MST)
Production
56. ● Based on CodeDeploy + CloudFormation + AWS CLI (+ ECR)
make publish
make deploy-development
make deploy-production-canary
make deploy-production
Development Canary
4th Generation (Mobile Service Tools - MST)
Production
57. ● Based on CodeDeploy + CloudFormation + AWS CLI (+ ECR)
make deploy-production
Development Canary
4th Generation (Mobile Service Tools - MST)
Production
58. ● Based on CodeDeploy + CloudFormation + AWS CLI (+ ECR)
make deploy-production
Development Canary
4th Generation (Mobile Service Tools - MST)
Production
59. ●Mostly AWS tooling
●Quick deployments
Development Canary
4th Generation (Mobile Service Tools - MST)
Production
60. ● Boilerplate scripts
● Docker registry problems
● No cross-account support
● Shared CloudFormation template
Development Canary
4th Generation (Mobile Service Tools - MST)
Production
61. ● Boilerplate scripts
● Docker registry problems
● No cross-account support
● Shared CloudFormation template
4th Generation (Mobile Service Tools - MST)
Base
template
62. ●Based on CodeDeploy + CloudFormation + S3
nova stack create ENVIRONMENT
Development Canary
5th Generation (Nova)
Production
Environment
63. ●Based on CodeDeploy + CloudFormation + S3
nova deploy ENVIRONMENT development
nova deploy ENVIRONMENT canary
nova deploy ENVIRONMENT production
Development Canary
5th Generation (Nova)
Production
Environment
67. FIN, ACK
We’ve seen a quick run through today of the benefits of
continuous delivery on our software release process:
• Continuous integration (build/test) helps shrink our
feedback loop greatly
• We can get our software out in front of our users much
more rapidly
• By moving faster we can actually ensure better quality
• CodePipeline allows for integration with almost any
service or tool you can think of!
• Plus visualization of what’s going on!