AWS Summit 2014 Perth - Breakout 6
With AWS companies now have the ability to develop and run their applications with speed and flexibility like never before. Working with an infrastructure that can be 100% API driven enables businesses to use lean methodologies and realize these benefits. This in turn leads to greater success for those who make use of these practices. In this session we'll talk about some key concepts and design patterns for Continuous Deployment and Continuous Integration, two elements of lean development of applications and infrastructures.
Presenter: Adrian White, Solutions Architect, Amazon Web Services
3. Stacks /
Environment(s)
An example CI / CD workflow
CI/CD tool
Issue
Tracker
SCM
Infrastructure
automation /
deployment
Test tools /
harnesses
4. An example CI / CD workflow
PHPUnit
jQuery
…
Tasks for AWS
CloudFormation Stack(s)
5. A CI / CD pipeline
Code
Test
Deploy
Release
Teardown
6. Get your source under control
Prod UAT Phoenix (feature)
Code
Test
Deploy
Release
Teardown
Code
Test
Deploy
Release
Teardown
Code
Test
Deploy
Release
Teardown
Code
Test
Deploy
Release
Teardown
8. What does CI give us?
• Test driven promotion (of development change)
• Increasing velocity of feedback cycle through
iterative change
• Contain change to reduce risk
• Bugs are detected quickly
• Automated testing reduces size of testing effort
10. What does CD give us?
• Changes are pushed quickly to production
• Immediate feedback from users
• Supports A/B testing or “We test customer
reactions to features in production”
• Hardens, de-risks the deployment process
• Gives us a breadth of data points across our
applications
11. Deployment approaches
• Deploy in place
– Manage interruption
• Bake
– Discrete environment
Deploy Deploy in-place
• Multiple environments from branches
• Support A/B testing
• “Rolling DNS”
Bake
12. Deploy in-place
Un-baked
• Common baseline AMI
• Customise at instantiation
• Change in-place
Your app
AMI
13. Deploy in-place
Un-baked
• Common baseline AMI
• Customise at instantiation
• Change in-place
Your app
AMI
14. Deploy in-place
Un-baked
• Common baseline AMI
• Customise at instantiation
• Change in-place
Your app
AMI
15. Deploy in-place
Un-baked
• Common baseline AMI
• Customise at instantiation
• Change in-place
Your app
AMI
16. Deploy in-place
Un-baked
• Common baseline AMI
• Customise at instantiation
• Change in-place
Your app
AMI
17. Deploy in-place
Un-baked
• Common baseline AMI
• Customise at instantiation
• Change in-place
Your app
AMI
18. Bake process
1. Start a builder instance
2. Bootstrap / cfn-init, cfn-signal
3. Bake your AMI
4. Tag it
5. Destroy/clean up the builder instance
33. CloudFormation Merging
CloudFormation
VPC
Subnets
Security Groups
CloudFormation Frameworks
Best Practice
Application Code
Application CloudFormation
Load Balancing Setup
Git Git
Operations Repo Application Repo
34. CloudFormation Custom Resources
• Change DB schema during deployment
Parameters
• Extend CloudFormation to support other
services - “So You Think You Are An
AWS Ninja” talk
Custom resource
implementation
https://github.com/aws/aws-cfn-resource-bridge
https://github.com/awslabs/aws-cfn-custom-resource-examples
Git
40. Containerisation
• Build environments for artifacts, don’t update
environments with artifacts
• All environments are transient
• Standardisation, abstraction and portability
41. Docker, Amazon Linux and Elastic
Beanstalk
• A framework for managing containers
• LXC containers are more lightweight than VMs
• Amazon Linux (2014.03) bundles Docker 0.9
and LXC 0.9
• Docker containers on Beanstalk are Go!
42. Innovation, Quality, Governance
Discrete environments for each branch
Leverage CD tools to provide separation of duties
Automated testing on every commit on every branch
Audit Logs
Git approvals process
Leverage DNS
Use custom resources to extend CloudFormation
Interface with the API
Environments for artifacts
43. Expand your skills with AWS
Certification
Exams
Validate your proven
technical expertise with
the AWS platform
aws.amazon.com/certification
On-Demand
Resources
Videos & Labs
Get hands-on practice
working with AWS
technologies in a live
environment
aws.amazon.com/training/
self-paced-labs
Instructor-Led
Courses
Training Classes
Expand your technical
expertise to design, deploy,
and operate scalable,
efficient applications on AWS
aws.amazon.com/training