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.
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