This document discusses best practices for continuous integration and continuous deployment on AWS. It provides an example workflow involving source control, testing tools, infrastructure automation, and deployment. It also covers topics like baking AMIs for deployment, using CloudFormation for infrastructure as code, and custom resources. The document concludes with recommendations around skills expansion, certification, and AWS training resources.
5. A CI / CD pipeline
Teardown
Release
Deploy
Test
Code
6. Get your source under control
Prod Phoenix (feature)UAT
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
• Multiple environments from branches
• Support A/B testing
• “Rolling DNS”
Deploy Deploy in-place
Bake
34. CloudFormation Custom Resources
• Change DB schema during deployment
• Extend CloudFormation to support other
services - “So You Think You Are An
AWS Ninja” talk
https://github.com/aws/aws-cfn-resource-bridge
https://github.com/awslabs/aws-cfn-custom-resource-examples
Parameters
Custom resource
implementation
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
Automated testing on every commit on every branch
Leverage CD tools to provide separation of duties
Audit Logs
Git approvals process
Use custom resources to extend CloudFormation
Leverage DNS
Interface with the API
Environments for artifacts
43. Expand your skills with AWS
Certification
aws.amazon.com/certification
Exams
Validate your proven
technical expertise with
the AWS platform
On-Demand
Resources
aws.amazon.com/training/
self-paced-labs
Videos & Labs
Get hands-on practice
working with AWS
technologies in a live
environment
aws.amazon.com/training
Instructor-Led
Courses
Training Classes
Expand your technical
expertise to design, deploy,
and operate scalable,
efficient applications on AWS