With AWS, organizations 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 organizations to use lean methodologies and realize these benefits. In this session, we will explore some key concepts and design patterns for continuous deployment and continuous integration, two elements of lean application and infrastructure development. We will look at several use cases where IT organizations leveraged AWS to rapidly develop and iterate on applications for scale, high availability and cost optimization.
Speaker: Adrian White, Solutions Architect, Amazon Web Services
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Continuous Integration and Deployment Best Practices on AWS
1. AWS Government, Education, &
Nonprofits Symposium
Canberra, Australia | May 6, 2015
Continuous Integration and Deployment Best Practices
on AWS
Adrian White
Solutions Architect
Amazon Web Services
2. What are we covering today?
• Consistency through the development, test and
release lifecycle
• Improve quality over time
• Increase velocity of application change
• AWS deployment and management approaches
• What does deployment look like in the future?
5. Local development challenges
• Source code management design
• “But it works on my machine”
• Portable development environments
• Distributed teams work on tasks in parallel
6. Source code management features
• Fast and easy branching
• Pull requests for distributed development workflows
• Code review
• Audit, logging, security
7. Feature branching, Gitflow and Pull requests
Inspired by https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow/
Master Develop Release Feature Hotfix
9. CodeCommit
• Private Git on AWS
• Massive scaled version controlled projects
• High service availability and resiliency
• Encrypted at rest
• Pay as you go pricing
• Import from SVN, Git, Microsoft TFS
• Use IAM to control access to repositories
11. Why use a release automation service?
Automate
workflow
Release
quickly
Ensure
quality
12. CodePipeline
• Customizable workflow engine
• Integrate with partner and custom systems
• Visual editor and 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) Load test
Gamma
1) Deploy region1
2) Deploy region2
3) Deploy region3
13. How do you ship application changes?
• Deployment approaches
– In place vs discrete stacks
• Where is state in the system?
– Stateless vs stateful application components
• Frequency and speed of change
14. Why use a deployment service?
Automate
deployments
Manage
complexity
Avoid
downtime
15. CodeDeploy
• Scale from 1 instance to thousands
• Deploy without downtime
• Centralize deployment control and monitoring
Staging
CodeDeployv1, v2, v3
Production
Dev
Coordinate automated deployments, just like Amazon
Application
revisions
Deployment groups
19. Step 2: Set up your target environments
Agent Agent Agent
Staging
Agent Agent
Agent Agent
Agent
Agent
Production
Deployment groupDeployment group
Group instances by:
• Auto Scaling group
• Amazon EC2 tag
• On-premises tag
32. Shipping artifacts to new environments
• What if we can quickly and easily build new environments
every time?
• CloudFormation
– Deploying AMIs
– Deploying containers
• CodeDeploy to manage discrete application versions
34. Shipping artifacts – Immutability via containers
ECS cluster
Amazon EC2
Container Service
Immutable infrastructure with Docker and
Amazon EC2 Container Service (ECS)
Tasks for AWS
35. Shipping artifacts – Immutability via containers
Tasks for AWS
ECS now supports ELB, health checks,
scale-up and scale-down and update
management
ECS Task
Definition
ECS cluster with tasks
37. CLASSIFICATION: INTERNAL
Cameron Gough, General Manager – Digital Delivery Centre
Andrew Dilenis, Head of Digital Systems
Moving to AWS – our story
Cameron.gough@auspost.com.au, @cam_gough
Andrew.Dilenis@auspost.com.au
80. Thousands of teams +
Microservices architecture +
Multiple environments +
Continuous delivery
81. = 50 million deployments a year
Thousands of teams +
Microservices architecture +
Multiple environments +
Continuous delivery
82. Where to go next…
• AWS Training & Certification
– http://aws.amazon.com/training/
• Deployment and Management at AWS
– http://aws.amazon.com/application-management/
• Code Management and Deployment
– https://aws.amazon.com/blogs/aws/code-management-and-
deployment/
• Amazon EC2 Container Service
– http://aws.amazon.com/ecs/