SlideShare a Scribd company logo
1
AWS Elastic Beanstalk
AWS Black Belt Tech Webinar 2015
アマゾン ウェブ サービス ジャパン株式会社
ソリューションアーキテクト 篠原 英治
2015/11/25
2
{
"Name" : "篠原英治",
"Twitter" : "@shinodogg",
"Blog" : "http://shinodogg.com",
"Profile" : {
"Role" : "Solutions Architect",
"Market": "Startup",
"Subject Matter Expert" : [
"Amazon CloudSearch",
"Amazon Elasticsearch Service",
"Amazon Simple Workflow Service",
"AWS Elastic Beanstalk"
]
}
}
3
Agenda
• Introduction
• Deployment
• Monitoring
• Docker Support
• Worker Tier
• Customer Use-cases
• Tips
4
Agenda
• Introduction
• Deployment
• Monitoring
• Docker Support
• Worker Tier
• Customer Use-cases
• Tips
5
AWS Elastic Beanstalk
http://en.hatsuon.info/word/beanstalk
http://ejje.weblio.jp/content/beanstalk
• 読み方
• ビーンストーク
• ビーンスターク
http://www.otsuka.co.jp/bst/
6
AWS Elastic Beanstalk
• 特徴 (http://aws.amazon.com/jp/elasticbeanstalk/)
– 速く簡単にアプリケーションをデプロイ可能
– インフラストラクチャの準備&運営からアプリ
ケーションスタックの管理まで自動化
– Auto Scaling によりコストを抑えながらスケー
ラビリティを確保
– Java, PHP, Ruby, Python, Node.js, .NET,
Docker, Goに対応
• 価格体系 (http://aws.amazon.com/jp/elasticbeanstalk/pricing/)
– 追加料金なし
– アプリケーションの保存、実行に必要なAWSリ
ソース (EC2, S3, RDS, DynamoDB など) に対
してのみ課金
インフラ構成の構築・アプリデプロイの自動化サービス
7
Elastic Beanstalk vs. Do It Yourself
On-instance configuration
Your code
HTTP Server
Application Server
Language Interpreter
Operating System
Host
8
On-instance configuration
Your code
HTTP Server
Application Server
Language Interpreter
Operating System
Host
アプリケーションの開発
”だけ”にフォーカス
Elastic Beanstalkにお任せ!
Elastic Beanstalk vs. Do It Yourself
9
• あらかじめ定義されたインフラストラクチャ
• Single instance (開発環境, ローコスト)
• Load balancing, Auto Scaling (本番環境)
• Web Tier と Worker Tier
• リソースのプロビジョニング
• Load Balancer
• Auto Scaling group
• Security groups
• Database (optional)
• ユニークなドメイン名の提供
• 例) yourapp.elasticbeanstalk.com
Infrastructure stack
Elastic Beanstalk vs. Do It Yourself
10
• アプリケーションを簡単にデプロイ
• 複数バージョンの切り替え
• 複数環境の切り替え
Easy Deployment
Elastic Beanstalk vs. Do It Yourself
11
Agenda
• Introduction
• Deployment
• Monitoring
• Docker Support
• Worker Tier
• Customer Use-cases
• Tips
12
Elastic Beanstalkでアプリケーションを
デプロイするのに必要なこと
1
2
3
4
Region
Stack (container) type
Single-Instance
Load Balanced
w/ Autoscaling
or
Database (RDS) optional
Your code
Supported Platforms
13
1
2
3
4
Region
Stack (container) type
Single-Instance
Load Balanced
w/ Autoscaling
or
Database (RDS) optional
Your code
■ デプロイを行う方法
1.AWS Management Console を使う
2.AWS Toolkit for Eclipse/Visual Studio IDEを使う
3.EB Command Line Interface(EB CLI) を使う
$ eb deploy
Elastic Beanstalkでのデプロイ
14
Elastic Beanstalkでのデプロイ
1
2
3
4
Region
Stack (container) type
Single-Instance
Load Balanced
w/ Autoscaling
or
Database (RDS) optional
Your code
■ デプロイを行う方法
1.AWS Management Console を使う
2.AWS Toolkit for Eclipse/Visual Studio IDEを使う
3.EB Command Line Interface(EB CLI) を使う
$ eb deploy
今回は上記3.のEB CLIを使ったデプロイ方法をご紹介します
15
サンプルアプリケーション
• Node.js + Expressな会員登録アプリケーション
– ソースコードは↓から入手可能
– https://github.com/awslabs/eb-node-express-sample
16
サンプルアプリケーションのデプロイ
1. EB CLIのインストール:
$ pip install --upgrade awsebcli
2. サンプルアプリケーションのダウンロード:
$ git clone https://github.com/awslabs/eb-node-express-
sample.git
3. Elastic Beanstalk applicationの作成:
$ eb init
4. プロンプトに従って環境の設定
5. リソースの作成およびアプリケーションのローンチ:
$ eb create
17
サンプルアプリケーションのデプロイ
• eb initのプロンプト: リージョンの選択
Select a default region
1) us-east-1 : US East (N. Virginia)
2) us-west-1 : US West (N. California)
3) us-west-2 : US West (Oregon)
4) eu-west-1 : EU (Ireland)
5) eu-central-1 : EU (Frankfurt)
6) ap-southeast-1 : Asia Pacific (Singapore)
7) ap-southeast-2 : Asia Pacific (Sydney)
8) ap-northeast-1 : Asia Pacific (Tokyo)
9) sa-east-1 : South America (Sao Paulo)
10) cn-north-1 : China (Beijing)
(default is 3):
18
サンプルアプリケーションのデプロイ
• eb initのプロンプト: アプリ名/スタック/SSH/Keypair
Enter Application Name
(default is "eb-node-express-sample"):
It appears you are using Node.js. Is this correct?
(y/n): y
Do you want to set up SSH for your instances?
(y/n): y
Select a keypair.
1) oregon
2) [ Create new KeyPair ]
(default is 2): 1
19
サンプルアプリケーションのデプロイ
• eb initのプロンプト: スタック
Select a platform.
1) Node.js
2) PHP
3) Python
4) Ruby
5) Tomcat
6) IIS
7) Docker
8) Multi-container Docker
9) GlassFish
10) Go
11) Java
20
サンプルアプリケーションのデプロイ
• eb createのプロンプト: Environment/CNAME/Deploy
Enter Environment Name
(default is eb-node-express-sample):
Enter DNS CNAME prefix
(default is eb-node-express-sample):
Creating application version archive "5529".
Uploading eb-node-express-sample/5529.zip to S3. This
may take a while.
Upload Complete.
Environment details for: eb-node-express-sample
Application name: eb-node-express-sample
Region: us-west-2
Deployed Version: 5529
Environment ID: e-ufxx79fmkc
21
サンプルアプリケーションのデプロイ
• EB CLIを使ってブラウザで表示
$ eb open
22
サンプルアプリケーションのデプロイ
• UIを変更
$ vim views/index.ejs
$ git commit –am “modify UI”
$ eb deploy
$ eb open
23
サンプルアプリケーションのデプロイ
• サンプルアプリケーションを動かす
24
デプロイしたサンプルアプリケーションの詳細
• Application dependency management
– package.json: パッケージの名前とバージョンを記載
{
"name": "Elastic-Beanstalk-Sample-App",
"version": "0.0.1",
"private": true,
"dependencies": {
"ejs": "latest",
"aws-sdk": "latest",
"express": "latest",
"body-parser": "latest"
},
"scripts": {
"start": "node app.js"
}
}
• Node.js→package.json
• Ruby→Gemfile
• PHP→composer.json
25
デプロイしたサンプルアプリケーションの詳細
• Application dependency management
– package.json: パッケージの名前とバージョンを記載
{
"name": "Elastic-Beanstalk-Sample-App",
"version": "0.0.1",
"private": true,
"dependencies": {
"ejs": "2.3.4",
"aws-sdk": "2.2.17",
"express": "4.13.3",
"body-parser": "1.14.1"
},
"scripts": {
"start": "node app.js"
}
}
本番運用の際はバージョンを明記しま
しょう
26
デプロイしたサンプルアプリケーションの詳細
• .ebextensions を活用した環境のカスタマイズ
– Elastic Beanstalkの定義されたテンプレートのカスタマイズ
– 例えば、”サーバー監視のサービスをインストールしたい”
本番運用の際はバージョンを明記しま
しょう
http://www.slideshare.net/shotaumeda1/aws-startuptechsummer2015/15
Retty 梅田さんのスライド
.ebextensionsでMackerelの
自動インストールを実現
27
デプロイしたサンプルアプリケーションの詳細
• options.config – 環境変数の設定
本番運用の際はバージョンを明記しま
しょう
option_settings:
aws:elasticbeanstalk:application:environment:
THEME: "flatly"
AWS_REGION: '`{ "Ref" : "AWS::Region"}`'
STARTUP_SIGNUP_TABLE: '`{ "Ref" : "StartupSignupsTable"}`'
NEW_SIGNUP_TOPIC: '`{ "Ref" : "NewSignupTopic"}`'
aws:elasticbeanstalk:container:nodejs:
ProxyServer: nginx
aws:elasticbeanstalk:container:nodejs:staticfiles:
/static: /static
aws:autoscaling:asg:
Cooldown: "120"
aws:autoscaling:trigger:
Unit: "Percent"
Period: "1"
BreachDuration: "2"
UpperThreshold: "75"
LowerThreshold: "30"
MeasureName: "CPUUtilization"
28
デプロイしたサンプルアプリケーションの詳細
• resources.config – 追加のリソース定義
本番運用の際はバージョンを明記しま
しょう
Resources:
StartupSignupsTable:
Type: AWS::DynamoDB::Table
Properties:
KeySchema:
HashKeyElement: {AttributeName: email, AttributeType: S}
ProvisionedThroughput: {ReadCapacityUnits: 1, WriteCapacityUnits: 1}
NewSignupQueue:
Type: AWS::SQS::Queue
NewSignupTopic:
Type: AWS::SNS::Topic
Properties:
Subscription:
- Endpoint:
Fn::GetOptionSetting: {DefaultValue: xxx@xxx.com, OptionName: NewSignupEmail}
Protocol: email
- Endpoint:
Fn::GetAtt: [NewSignupQueue, Arn]
Protocol: sqs
29
.ebextensions
• .ebextensions を活用してElastic Beanstalkに集約
– option_settings セクション
• 環境内のAWSリソース、アプリケーションを実行するソフトウエアの
設定
– resources セクション
• CloudFormationがサポートするあらゆるリソースの追加および設定
– 環境を起動する際に使うCloudFormationテンプレートに追加
– その他のセクション
• packages、sources、files、users、groups、commands、
container_commands、services
• 起動されるEC2インスタンスの設定
• セクション毎にファイルを分割するのを推奨
※ 設定ファイルはアルファベット順に処理される
30
• packages
– yum/rpm/rubygems等を利用したパッケージのインストール
– 例) yumから最新、rpmでURL指定、rubygemsでchef 0.10.2
.ebextensions
packages:
yum:
libmemcached: []
ruby-devel: []
gcc: []
rpm:
epel:
http://download.fedoraproject.org/pub/epel/5/i386/epel-
release-5-4.noarch.rpm
rubygems:
chef: '0.10.2'
31
• sources
– 外部からのアーカイブをダウンロードして指定した場所に展開
• tar、tar+gzip、tar+bz2、zip をサポート
– 例) S3にあるアーカイブファイルを指定したディレクトリに展開
.ebextensions
sources:
/etc/myapp: http://s3.amazonaws.com/mybucket/my.tgz
32
• files
– EC2上にファイルを作成。外部からファイルを取得することも可能
– 例) ファイルをコピーしてrootだけ書き込める権限で配置
– 例) シンボリックリンク myfile1.txt を参照する myfile2.txt
.ebextensions
files:
"/home/ec2-user/myfile" :
mode: "000755"
owner: root
group: root
source: http://foo.bar/myfile
files:
"/tmp/myfile2.txt" :
mode: "120400"
content: "/tmp/myfile1.txt"
33
• groups
– グループを作成
– 例) groupOneはグループIDなし、groupTwoのグループIDは45
.ebextensions
groups:
groupOne:
groupTwo:
gid: "45"
34
• users
– ユーザーを作成
– 例) ユーザーID、グループ名、ホームディレクトリの設定
.ebextensions
users:
myuser:
groups:
- group1
- group2
uid: "50"
homeDir: "/home/myuser"
35
• commands
– サーバー設定後、バージョンファイルが抽出される前に実行されるコマンド
– 例) pythonスクリプトを実行
.ebextensions
commands:
python_install:
command: myscript.py
cwd: /home/ec2-user
env:
myvarname: myvarvalue
test: '[ ! /usr/bin/python ] && echo "python not installed"'
36
• container_commands
– サーバー設定後、バージョンファイルが抽出された後に実行されるコマンド
• AWSセキュリティ認証情報などの環境変数にもアクセス可能
• leader_only(option): AutoScalingグループのリーダーにするインスタンスのみ
– 例) Djangoの管理タスクを実行
.ebextensions
container_commands:
01collectstatic:
command: "django-admin.py collectstatic --noinput”
02syncdb:
command: "django-admin.py syncdb --noinput"
leader_only: true
03migrate:
command: "django-admin.py migrate"
leader_only: true
37
• services
– インスタンス起動時に開始/停止する必要のあるサービスを定義
– 例) 起動時にサービスサービスが自動的に開始される
.ebextensions
services:
sysvinit:
myservice:
enabled: true
38
Elastic Beanstalkにおけるデプロイの選択肢
• Rolling Deploy
現 現 現 現
39
• Rolling Deploy
現 現 現 現
Elastic Beanstalkにおけるデプロイの選択肢
40
• Rolling Deploy
新 現 現 現
Elastic Beanstalkにおけるデプロイの選択肢
41
Elastic Beanstalkにおけるデプロイの選択肢
• Rolling Deploy
新 現 現 現
42
Elastic Beanstalkにおけるデプロイの選択肢
• Rolling Deploy
新 現 現 現
43
Elastic Beanstalkにおけるデプロイの選択肢
• Rolling Deploy
新 新 現 現
44
Elastic Beanstalkにおけるデプロイの選択肢
• Rolling Deploy
新 新 現 現
45
Elastic Beanstalkにおけるデプロイの選択肢
• Rolling Deploy
新 新 現 現
46
Elastic Beanstalkにおけるデプロイの選択肢
• Rolling Deploy
新 新 新 現
47
Elastic Beanstalkにおけるデプロイの選択肢
• Rolling Deploy
– Batch type: Auto Scaling グループ内のインスタンスの割合もしくは一定数
– Batch size: 割合(%)もしくはインスタンス数(AutoScaling設定の最大数まで)
– 2台ずつデプロイする場合の設定は Batch type: Fixed, Batch size: 2
– 例) 30%ずつRolling Deploy
48
Elastic Beanstalkにおけるインスタンス置換え
• Rolling Updates
– アプリケーションデプロイではなくインスタンスの置換え
• 内部的にはCloudFromationのUpdate Policyを利用
– VPC設定やAuto ScalingのLaunch Configurationの設定変更
一度に入れ替えるインスタンスの最大数
最低限維持すべきインスタンス数
各Update操作間のPause時間
49
Elastic Beanstalkにおけるデプロイの選択肢
• Blue/Green Deploy
現 現 現 現
50
Elastic Beanstalkにおけるデプロイの選択肢
• Blue/Green Deploy
現 現 現 現 新 新 新 新
51
Elastic Beanstalkにおけるデプロイの選択肢
• Blue/Green Deploy
現 現 現 現 新 新 新 新
52
Elastic Beanstalkにおけるデプロイの選択肢
• Blue/Green Deploy
新 新 新 新
53
v1.1 v1.1
v1.1 v1.1
v1.1 v1.1
v1.1 v1.1
v1.2
v1.2
v1.2.1
v1.2.1
v1.2.2
v1.2.2
DNS
(Amazon route 53)
Webサーバー群
(Amazon EC2)
データベースサーバ群
(Amazon RDS)
ロードバランサー
90% 5% 3% 2%
Elastic Beanstalkにおけるデプロイの選択肢
54
Elastic Beanstalkにおけるデプロイの選択肢
• Rolling Deploy? Blue/Green Deploy?
– Rolling Deploy
• 新しくサーバーを立てるわけではないのでデプロイにかかる時
間が短い
• 新しいバージョンにバグ等があった場合にRollbackに手間がか
かる
– Blue/Green
• 新しくサーバーを立てるので環境作成に時間がかかる
• Rollbackが容易
• Elastic BeanstalkのDNSのTTLはデフォルト60秒であるが、
接続元のデバイスによってDNSがキャッシュされてしまうよう
な場合デプロイが反映されない場合がある
55
Agenda
• Introduction
• Deployment
• Monitoring
• Docker Support
• Worker Tier
• Customer Use-cases
56
Elastic Beanstalkにおけるモニタリング
• EB CLIでモニタリング
$ eb health --refresh
57
Elastic Beanstalkにおけるモニタリング
• マネージメントコンソール上でモニタリング
58
Elastic Beanstalkにおけるモニタリング
• マネージメントコンソール上でモニタリング
カスタマイズ可能!
59
Elastic Beanstalkにおけるモニタリング
• マネージメントコンソールでの拡張ヘルスレポート
60
Elastic Beanstalkにおけるモニタリング
• マネージメントコンソールでの拡張ヘルスレポート
– メトリクス
• EnvironmentHealth
– OK
– Warning
– Degraded
– Severe
– Info
– Pending
– Unknown
http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/health-enhanced-cloudwatch.html#health-
enhanced-cloudwatch-metrics
61
Elastic Beanstalkにおけるモニタリング
• マネージメントコンソールでの拡張ヘルスレポート
– メトリクス: 該当のインスタンスの数を表示
• InstancesSevere
• InstancesDegraded
• InstancesWarning
• InstancesInfo
• InstancesOk
• InstancesPending
• InstancesUnknown
• InstancesNoData
http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/health-enhanced-cloudwatch.html#health-
enhanced-cloudwatch-metrics
62
Elastic Beanstalkにおけるモニタリング
• マネージメントコンソールでの拡張ヘルスレポート
– メトリクス: リクエスト総数および各レスポンスコード毎の数
• ApplicationRequestsTotal
• ApplicationRequests5xx
• ApplicationRequests4xx
• ApplicationRequests3xx
• ApplicationRequests2xx
http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/health-enhanced-cloudwatch.html#health-
enhanced-cloudwatch-metrics
63
Elastic Beanstalkにおけるモニタリング
• マネージメントコンソールでの拡張ヘルスレポート
– メトリクス: xパーセントの完了にかかった平均時間
• ApplicationLatencyP10
• ApplicationLatencyP50
• ApplicationLatencyP75
• ApplicationLatencyP85
• ApplicationLatencyP90
• ApplicationLatencyP95
• ApplicationLatencyP99
• ApplicationLatencyP99.9
http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/health-enhanced-cloudwatch.html#health-
enhanced-cloudwatch-metrics
64
Elastic Beanstalkにおけるモニタリング
• マネージメントコンソールでの拡張ヘルスレポート
– メトリクス
• LoadAverage1min: 1分間のLoad値の平均値
• InstanceHealth: 現在のインスタンスのヘルスステータス
• RootFilesystemUtil: 使用ディスク容量の割合
http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/health-enhanced-cloudwatch.html#health-
enhanced-cloudwatch-metrics
65
Elastic Beanstalkにおけるモニタリング
• マネージメントコンソールでの拡張ヘルスレポート
– メトリクス: 過去1分間のCPU使用状況
• CPUIrq
• CPUUser
• CPUIdle
• CPUSystem
• CPUSoftirq
• CPUIowait
• CPUNice
http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/health-enhanced-cloudwatch.html#health-
enhanced-cloudwatch-metrics
66
CloudWatch Logsを使ってログ監視
CloudWatch Logs Agentを追加する設定ファイ
ル
- Tomcat (Java)向け
- Apache (PHP and Python)向け
- Nginx (Ruby, Node.js, and Docker)向け
CloudWatch Logsへの書き込み権限はIAM Roleで
http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html
67
提供されるCloudWatch Logs Agent設定ファイル
• cwl-setup.config
– CloudWatch Logs agentを各EC2インスタンスにインストール
– 設定ファイルgeneral.confを作成
– 修正なしで利用可能
• cwl-webrequest-metrics.config
– どのファイルを監視するかを設定
– CloudWatch Logs Agentが適用するMetrics Filterを指定
– Alarmの条件や通知先Amazon SNSのTopicなどを指定
– カスタムログや追加のAlarm設定などがあれば必要に応じて修正して利用
• eb-logs.config
– CloudWatch Logs Agentが出力するログファイルのローテーションなどの設定
– 修正なしで利用可能
68
Elastic Beanstalkの便利機能
• SSH接続が必要な場合もEB CLIで
$ eb ssh –i xxxx
69
Agenda
• Introduction
• Deployment
• Monitoring
• Docker Support
• Worker Tier
• Customer Use-cases
• Tips
70
Elastic BeanstalkのDockerサポート
• Single Container
– EC2インスタンスの中で単一のDockerコンテナを実行
– Elastic Beanstalkの標準的であらかじめ定義された設定の活用
Environment
Host
Manager
AutoScaling
Nginx (tcp:80)
Docker
(tcp: xxxx)
コンテナの起動・終了
Nginxとコンテナとの
接続ポートの更新
コマンド
71
Elastic BeanstalkのDockerサポート
• Multi Container
– EC2 Container Service(ECS)を使用
– Dockerrun.aws.jsonを使ったより柔軟な構成が可能に
72
Elastic BeanstalkのDockerサポート
• Dockerrun.aws.json
73
Elastic BeanstalkのDockerサポート
• Dockerrun.aws.json
{
"AWSEBDockerrunVersion": 2,
"volumes": [
{
"name": "php-app",
"host": {
"sourcePath": "/var/app/current/php-app"
}
},
{
"name": "nginx-proxy-conf",
"host": {
"sourcePath": "/var/app/current/proxy/conf.d"
}
}
],
"containerDefinitions": [
{
"name": "php-app",
"image": "php:fpm",
"essential": true,
"memory": 128,
"mountPoints": [
{
"sourceVolume": "php-app",
"containerPath": "/var/www/html",
"readOnly": true
}
]
},
Single は 1
Multi は 2
PHPアプリ用コンテナと
ProxyのNginx用コンテナ
のボリューム(マウントポイント)
PHPアプリ用コンテナのインフラ設定
Dockerイメージ指定、メモリ設定、
Sourceボリュームからコンテナへのファイルコピー
74
Elastic BeanstalkのDockerサポート
• Dockerrun.aws.json
"mountPoints": [
{
"sourceVolume": "php-app",
"containerPath": "/var/www/html",
"readOnly": true
},
{
"sourceVolume": "nginx-proxy-conf",
"containerPath": "/etc/nginx/conf.d",
"readOnly": true
},
{
"sourceVolume": "awseb-logs-nginx-proxy",
"containerPath": "/var/log/nginx"
}
]
}
]
}
{
"name": "nginx-proxy",
"image": "nginx",
"essential": true,
"memory": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80
}
],
"links": [
"php-app"
],
Proxy用コンテナのインフラ設定
ホスト側の80版ポートとコンテナ側の80版ポート
をマッピングして裏のPHPアプリへルーティング
75
Elastic BeanstalkのDockerサポート
• ローカルでのDockerコンテナの実行
– EB CLI
$ eb local run
• 開発時に便利なコマンド群
$ eb local status
$ eb local open
$ eb local logs
$ eb local run
Creating elasticbeanstalk_phpapp_1...
Creating elasticbeanstalk_nginxproxy_1...
Attaching to elasticbeanstalk_phpapp_1, elasticbeanstalk_nginxproxy_1
phpapp_1 | [23-Apr-2015 23:24:25] NOTICE: fpm is running, pid 1
phpapp_1 | [23-Apr-2015 23:24:25] NOTICE: ready to handle connections
76
Agenda
• Introduction
• Deployment
• Monitoring
• Docker Support
• Worker Tier
• Customer Use-cases
• Tips
77
Elastic Beanstalk Worker Tier
• バッチアプリケーションもElastic Beanstalkで
– SQS + Auto Scalingでスケーラブルなバッチ処理基盤
• Scale-InしてもメッセージはSQSに残るため後から処理
78
Elastic Beanstalk Worker Tier
• Workerホスト内でWebアプリケーションが動作
– Sqsd
• Workerホスト内で動作するデーモン
• Webアプリからの応答
– 200 OKの場合→SQSからメッセージを削除(DeleteMessage)
– 200 OK以外の場合→VisibilityTimeout(SQSの設定)後にSQS
からメッセージが取得可能(リトライ)
– 応答無し→Inactivity Timeout(Elastic Beanstalkの設定)後
にSQSからメッセージが取得可能(リトライ)
• Dead Letter Queue
– 何度実行しても200 OK以外でSQSのキューに残り続けてしま
うメッセージを別のキュー(Dead Letter Queue)に移動
79
Elastic Beanstalk Worker Tier
• 定期的なタスク実行
– cron.yaml
• 例) 12時間ごとにbackupジョブを実行
毎日午後11時にauditジョブを実行
version: 1
cron:
- name: "backup"
url: "/backup"
schedule: "0 */12 * * *"
- name: "audit"
url: "/audit"
schedule: "0 23 * * *"
80
Agenda
• Introduction
• Deployment
• Monitoring
• Docker Support
• Worker Tier
• Customer Use-cases
• Tips
81
ユーザー事例: Royal Caribbean Cruises Ltd.
• 43隻の大型船を運営中。今後更に拡大予定
• 7大陸490地点でサービスを展開中
• 9,000 ページのHTMLがサイトにホストされている
• 2015年3月に royalcaribbean.com をElastic Beanstalkを使ってローンチ
• ピークシーズンは月間1億ページView
• 600万ユニークユーザー
82
ユーザー事例: Royal Caribbean Cruises Ltd.
• Scaling Your Web Applications with AWS Elastic Beanstalk
http://www.slideshare.net/AmazonWebServices/dvo201-scaling-your-web-applications-with-aws-elastic-beanstalk
https://www.youtube.com/watch?v=nkj0GXgaRv8
83
ユーザー事例: Royal Caribbean Cruises Ltd.
84
ユーザー事例: Retty
• RettyがElastic Beanstalkを使い始めて1年経過
http://www.slideshare.net/shotaumeda1/aws-startuptechsummer2015
85
ユーザー事例: Retty
• eb cloneで環境を丸ごと新たしい環境にコピー
86
ユーザー事例: SONY
• Building At-Scale Services with AWS Elastic Beanstalk
https://www.youtube.com/watch?v=gA_m_4ikTgg
http://www.slideshare.net/AmazonWebServices/dvo312-sony-building-atscale-services-with-aws-elastic-beanstalk
87
• Infrastructure as Code を実践
– Shinya Kawaguchiさん
• “Especially Elastic Beanstalk configuration files are
very useful and powerful to customize environment,
so we are utilizing them in our system”
ユーザー事例: SONY
88
• Auto Scaling: Custom Scaling Policy
ユーザー事例: SONY
89
• Zero Downtime Deployment
ユーザー事例: SONY
90
• クラスメソッドが構築した
クラウドネイティブなプラットフォーム
ユーザー事例: バーミヤン公式アプリ
http://dev.classmethod.jp/cloud/skylark-bamiyan-mobile-app/
91
Agenda
• Introduction
• Deployment
• Monitoring
• Docker Support
• Worker Tier
• Customer Use-cases
• Tips
92
Environment間リンク機能
• SQSのキューを介して疎結合なアーキテクチャを実現
– Environment Manifest (env.yaml)
本番運用の際はバージョンを明記しま
しょう
AWSConfigurationTemplateVersion: 1.1.0.0
EnvironmentLinks:
"WORKERQUEUE": "worker"
93
時間指定のスケーリング
• Time-based Scaling
– 時間設定でスケールアウト/インを制御
本番運用の際はバージョンを明記しま
しょう
94
各種ログの有効活用
• インスタンスログ
http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-
features.logging.html
95
Tomcatに複数のwarをデプロイ
• warファイルと.ebextensionsを一つのzipに
– MyApplication.zip
• .ebextensions
• foo.war -> http://MyApplication.elasticbeanstalk.com/foo
• bar.war -> http://MyApplication.elasticbeanstalk.com/bar
• ROOT.war -> http://MyApplication.elasticbeanstalk.com/
– 注意点
• ELBのヘルスチェックは一つのwarにしか行われない
• 解決策: ヘルスチェック用のwarをデプロイ
– 各warにアクセスし想定通りのレスポンスが返ってくるかチェック
96
Release Notes
• 更新情報はリリースノートでチェック
– https://aws.amazon.com/releasenotes/AWS-Elastic-Beanstalk
97
Q&A
次回Webinarのお申し込み
http://aws.amazon.com/jp/event_schedule/
98
Webinar資料の配置場所
• AWS クラウドサービス活用資料集
– http://aws.amazon.com/jp/aws-jp-introduction/
99
公式Twitter/Facebook
AWSの最新情報をお届けします
@awscloud_jp
検索
最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを
日々更新しています!
もしくは
http://on.fb.me/1vR8yWm
100
ご参加ありがとうございました。

More Related Content

PDF
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
PDF
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要
PDF
20200623 AWS Black Belt Online Seminar Amazon Elasticsearch Service
PDF
20200526 AWS Black Belt Online Seminar AWS X-Ray
PDF
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
PDF
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
PDF
20191023 AWS Black Belt Online Seminar Amazon EMR
PDF
20170621 aws-black belt-ads-sms
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要
20200623 AWS Black Belt Online Seminar Amazon Elasticsearch Service
20200526 AWS Black Belt Online Seminar AWS X-Ray
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20191023 AWS Black Belt Online Seminar Amazon EMR
20170621 aws-black belt-ads-sms

What's hot (20)

PDF
AWS Black Belt Online Seminar AWS Key Management Service (KMS)
PDF
20190522 AWS Black Belt Online Seminar AWS Step Functions
PDF
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
PDF
20190723 AWS Black Belt Online Seminar AWS CloudHSM
PDF
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
PDF
AWS Black Belt Online Seminar 2018 AWS Well-Architected Framework
PDF
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
PDF
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
PDF
AWS Black Belt Online Seminar 2017 Amazon ElastiCache
PDF
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
PDF
AWS Black Belt Online Seminar 2017 Amazon Kinesis
PDF
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
PDF
20210119 AWS Black Belt Online Seminar AWS CloudTrail
PDF
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-
PDF
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
PDF
20190320 AWS Black Belt Online Seminar Amazon EBS
PDF
20200617 AWS Black Belt Online Seminar Amazon Athena
PDF
20200818 AWS Black Belt Online Seminar AWS Shield Advanced
PDF
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
PDF
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
AWS Black Belt Online Seminar AWS Key Management Service (KMS)
20190522 AWS Black Belt Online Seminar AWS Step Functions
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
20190723 AWS Black Belt Online Seminar AWS CloudHSM
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
AWS Black Belt Online Seminar 2018 AWS Well-Architected Framework
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
AWS Black Belt Online Seminar 2017 Amazon ElastiCache
20190122 AWS Black Belt Online Seminar Amazon Redshift Update
AWS Black Belt Online Seminar 2017 Amazon Kinesis
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
20210119 AWS Black Belt Online Seminar AWS CloudTrail
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190320 AWS Black Belt Online Seminar Amazon EBS
20200617 AWS Black Belt Online Seminar Amazon Athena
20200818 AWS Black Belt Online Seminar AWS Shield Advanced
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
Ad

Similar to AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk (20)

PDF
Application Deployment on AWS
PDF
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
PDF
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~
PDF
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
PDF
SolrCloud on Amazon ECS
PDF
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
PPTX
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
PDF
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
PDF
AWS Black Belt Techシリーズ AWS Elastic Beanstalk
PDF
成長を加速する minne の技術基盤戦略
PPTX
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
PDF
10分で作る Node.js Auto Scale 環境 with CloudFormation
PDF
Introduction of aws-cli
PDF
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
PDF
ASP.NET シングル ページ アプリケーション (SPA) 詳説
PDF
AWS SAMで始めるサーバーレスアプリケーション開発
PDF
Amazon Simple Workflow Service (SWF)
PPTX
Cloudstack user group meeting in osaka
PPTX
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
PDF
20170809 AWS code series
Application Deployment on AWS
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
SolrCloud on Amazon ECS
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
AWS Black Belt Techシリーズ AWS Elastic Beanstalk
成長を加速する minne の技術基盤戦略
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
10分で作る Node.js Auto Scale 環境 with CloudFormation
Introduction of aws-cli
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
ASP.NET シングル ページ アプリケーション (SPA) 詳説
AWS SAMで始めるサーバーレスアプリケーション開発
Amazon Simple Workflow Service (SWF)
Cloudstack user group meeting in osaka
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
20170809 AWS code series
Ad

More from Amazon Web Services Japan (20)

PDF
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
PDF
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
PDF
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
PDF
Infrastructure as Code (IaC) 談義 2022
PDF
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
PDF
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
PDF
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
PPTX
20220409 AWS BLEA 開発にあたって検討したこと
PDF
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
PDF
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
PDF
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
PDF
Amazon QuickSight の組み込み方法をちょっぴりDD
PDF
マルチテナント化で知っておきたいデータベースのこと
PDF
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
PDF
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
PDF
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
PDF
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
PDF
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
PPTX
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
PDF
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
Infrastructure as Code (IaC) 談義 2022
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
20220409 AWS BLEA 開発にあたって検討したこと
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon QuickSight の組み込み方法をちょっぴりDD
マルチテナント化で知っておきたいデータベースのこと
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介

AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk