AWS Elastic Beanstalk provides a number of simple, flexible interfaces for developing and deploying your applications. In this session, learn how ThoughtWorks leverage the Elastic Beanstalk API to continuously deliver their applications with smoke tests and blue-green deployments. Also learn how to deploy your apps with Git and eb, a powerful CLI that allows developers to create, configure, and manage Elastic Beanstalk applications and environments from the command line.
3. Have you ever wanted to…
• Control the lifetime of your AWS resources
separately from your application code?
• Extend or add more AWS resources to your
Elastic Beanstalk environment?
• Control traffic to your application as you deploy?
You have come to the right place!
4. Under the Hood Series
•
•
•
•
Elastic Beanstalk experience assumed
Practical tips and tricks
Real stories, real advice, from real customers
Q&A!
6. Controlling the Lifetime
• Out-of-the-box Elastic Beanstalk supports
– Amazon Relational Database Service (RDS)
• Tied to the lifetime of your environment
– Terminating or rebuilding your environment removes or replaces
your database
• Use AWS CloudFormation to manage resource
lifetimes independently
10. Extending Your Configuration
• Elastic Beanstalk gives you the following:
– Load balanced, auto scaling; single instance
– Amazon RDS database
• What if your application needs other resources
– Amazon ElastiCache cache cluster, Amazon DynamoDB table,
Amazon Elastic Block Store (EBS) volumes, Amazon CloudWatch alarms…
• Two options
– Elastic Beanstalk extensions (resources with lifetime tied to the code or
instance)
– AWS CloudFormation templates (resources with independent lifetime)
15. Built-in Resources
Resource Name
Description
AWSEBAutoScalingGroup
The name of the Auto Scaling group that Elastic Beanstalk uses
when it launches Amazon EC2 instances.
AWSEBAutoScalingLaunchConfiguration
The name for the launch configuration settings that Elastic
Beanstalk uses when it launches EC2 instances.
AWSEBEnvironmentName
The name of the Elastic Beanstalk environment.
AWSEBLoadBalancer
The name of the elastic load balancer used in the Elastic Beanstalk
environment.
AWSEBRDSDatabase
The name of the Amazon RDS database.
AWSEBSecurityGroup
The name for the EC2 security group that Elastic Beanstalk uses
when it launches EC2 instances.
16. Advanced Deployment Techniques
• Deploying to QA and Production using branches
– Use multiple Git branches deployed to multiple environments
• Zero downtime deployments using CNAME flip
– Deploy a new version even under heavy load
• Controlling traffic using Amazon Route 53
– Define how much traffic is directed to your new version
27. Controlling Traffic
• What if you want more control of the traffic when
you deploy a new version?
• Use Amazon Route 53 weighted resource
record sets
– Associate multiple Elastic Beanstalk environments with the
same DNS name
– Control traffic flow using weights
32. Geographic Load Balancing
• Extend the Amazon Route53 idea to use latency
record sets
– Associate multiple Elastic Beanstalk environments in different
regions with the same DNS name
– Latency-based routing selects the “nearest” Elastic Beanstalk
environment
33. Call to Action
• Customize your infrastructure with
EBExtensions
• Use AWS CloudFormation in conjunction with
Elastic Beanstalk to control resources lifetime
• Deploy using multiple branches for development
and production
• Use CNAME flip or Amazon Route 53
configuration to manage your deployments
34. Other Resources
• DMG204 - Zero to Sixty: AWS Elastic Beanstalk
• DMG201 - Zero to Sixty: AWS CloudFormation
• DMG303 - AWS CloudFormation Under the Hood
Come find me in the developer resources booth