2. AWS Cloud Kata for Start-Ups and Developers
Taipei
AWS Elastic Beanstalk
Multi-container Microservices with Docker
KJ Wu
Solutions Architect
Amazon Web Services
3. AWS Cloud Kata for Start-Ups and Developers
Elastic Beanstalk vs DIY
How to use Elastic Beanstalk
Multi-container Docker with AWS Elastic Beanstalk
Recently added Features
Agenda
4. AWS Cloud Kata for Start-Ups and Developers
Web Services
APP DEPLOYMENT ENVIRONMENTS INFRASTRUCTURE
5. AWS Cloud Kata for Start-Ups and Developers
Developer Challenges
Complexity of deploying code,
provisioning and managing
infrastructure
Expertise and time needed to
manage and configure servers,
databases, load balancers,
firewalls, and networks
How to automate application
scaling
DevOps changes how you are used to working
6. AWS Cloud Kata for Start-Ups and Developers
What if you could just focus on your app ?
APP
and a TOOLBOX for
DEPLOYMENT, ENVIRONMENTS and INFRASTRUCTURE
7. AWS Cloud Kata for Start-Ups and Developers
YES! You can, with AWS Elastic Beanstalk!
APP AWS Elastic Beanstalk
8. AWS Cloud Kata for Start-Ups and Developers
Okay let’s get started!
9. AWS Cloud Kata for Start-Ups and Developers
AWS Elastic Beanstalk
Easy to use Service
Deploy and Scale
Web Apps
Don’t Sweat the Small
Stuff
10. AWS Cloud Kata for Start-Ups and Developers
AWS Elastic Beanstalk
Your code
HTTP server
Application server
Language interpreter
Operating system
Host
• Each Amazon EC2
instance comes with the
necessary components
to run applications
• No more worrying about
logging into instances to
install and configure your
app stack
Focus on building your app
11. AWS Cloud Kata for Start-Ups and Developers
Components of a Web App
• Three tier architecture:
• Web Server
• App Server
• Database
• Components
• Application Compute
• Database Engine
• Storage and Delivery
12. AWS Cloud Kata for Start-Ups and Developers
AWS Elastic Beanstalk - EB
• Easily deploy, monitor, and scale applications
• Infrastructure provisioned and managed by EB.
You maintain complete control.
• Preconfigured application containers that are
easily customizable.
13. AWS Cloud Kata for Start-Ups and Developers
AWS Elastic Beanstalk Environment
• Two tiers
• Web Server
• Worker
• Two types:
• Single instance
• Load balanced, auto scalable
• Configures Amazon Route 53
and provides a domain name
https://yourapp.elasticbeanstalk.com
14. AWS Cloud Kata for Start-Ups and Developers
Application Versioning
Saved Configurations
Allow for easy duplication for
A/B testing or non-disruptive
deployments
Application Versions
All versions are stored
durably in Amazon S3.
Code can also be pushed
from a Git repository!
15. AWS Cloud Kata for Start-Ups and Developers
The Common Used Deployment Options
16. AWS Cloud Kata for Start-Ups and Developers
Deployment Options
1. Via the AWS Management Console
2. Via Git / EB CLI
3. Via the AWS Toolkit for Eclipse and
the Visual Studio IDE
$ pip install awsebcli
17. AWS Cloud Kata for Start-Ups and Developers
Example: CLI workflow
Initial app deployment:
$ git init . $ git add .
Initialize your Git repository01 Add your code04
$ eb init $ git commit –m “v1.0”
Create your Elastic Beanstalk app02 Commit05
Follow the prompts to configure the
environment
03
Create the resources and launch the
application
06
$ eb create
18. AWS Cloud Kata for Start-Ups and Developers
Example: CLI workflow
Update your app:
Update your code01
$ git add .
$ git commit –m “v2.0”
$ eb deploy
Push the new code02
Monitor the deployment progress03
$ eb status
19. AWS Cloud Kata for Start-Ups and Developers
Docker with
AWS Elastic Beanstalk
20. AWS Cloud Kata for Start-Ups and Developers
Docker with AWS Elastic Beanstalk
Single Docker
Container
Multiple Docker
Containers
21. AWS Cloud Kata for Start-Ups and Developers
Multi Container: Architecture
Each environment has its
own ECS Cluster
Supports a single ECS Task
definition per environment
The ECS Task is defined in
the Dockerrun.aws.json file
Supports multiple ELB
listeners for inbound traffic
Provides out of the box auto
scaling for ECS Tasks
Task 1-1 Task 1-2
Container 1 Container 1
ELB
Instance 1 Instance 2
Container 2
Container 3
Container 2
Container 3
22. AWS Cloud Kata for Start-Ups and Developers
Multi Container Dockerrun.aws.json
{
"AWSEBDockerrunVersion": 2,
[...]
}
the value "2" for multicontainer
Docker environments
23. AWS Cloud Kata for Start-Ups and Developers
Multi Container Dockerrun.aws.json
"containerDefinitions": [
{
"name": "php-app",
"image": "php:fpm",
"essential": true,
"memory": 128,
},
24. AWS Cloud Kata for Start-Ups and Developers
Multi Container Dockerrun.aws.json
"links": [
"php-app",
"list-service",
"search-service”
]
25. AWS Cloud Kata for Start-Ups and Developers
Multi Container Dockerrun.aws.json
"mountPoints": [
{
"sourceVolume": "php-app",
"containerPath": "/var/www/html",
"readOnly": true
}
]
"volumes": [
{
"name": "php-app",
"host": {
"sourcePath": "/var/app/current/php-app"
}
}
]
26. AWS Cloud Kata for Start-Ups and Developers
Nginx Proxy Example: bit.ly[….]
27. AWS Cloud Kata for Start-Ups and Developers
Live Demo
Slightly more difficult…
28. AWS Cloud Kata for Start-Ups and Developers
New Features
Support for EC2
Container Registry
Managed Updates
New Deployment
Options
Support for Application
Load Balancer
29. AWS Cloud Kata for Start-Ups and Developers
New Deployment Options
Rolling with additional batch
Rolling: Immutable
30. AWS Cloud Kata for Start-Ups and Developers
Questions?
KJ Wu
Solutions Architect, AWS
31. AWS Cloud Kata for Start-Ups and Developers
THANK YOU!
Please remember to fill out evaluations