狠狠撸

狠狠撸Share a Scribd company logo
Elastic beanstalk と
Docker と Play
河内 崇 @kawachi
pLucky, Inc.
AWS Startup Tech Meetup 2014/6/5
データ分析関連書籍?
翻訳やってます。
Scala, Play, iOS,?
Ruby, Rails,"
Java, C, Python,"
Javascript, Haxe etc.
サービス課題をサクッとチェック
事前登録受付中 http://logbook.strikingly.com/
9月6~7日
日本最大のScala Conference
http://scalamatsuri.org
Elastic beanstalk とは
Amazon web service が提供する PaaS 的なもの
データベース(RDS)、仮想ホスト(EC2)、ロードバ
ランサ(ELB)をセットで立ち上げ
負荷に応じてホスト増加(Auto scaling)
Tomcat, Rails, PHP, Python, Node.js などをサポート
なぜ私は Elastic beanstalk を?
使いたいか?
運用で楽をしたい
いざとなったら ssh で入って調査できる
Blue-Green deployment 的なものが簡単
もう1セット立ち上げてガバっと切り替え
CNAME 切り替え
Elastic beanstalk +
Tomcat +
Scalatra
弊社製品の一部で安定稼働
普通の web アプリを?
作りたくなった?
Play framework
Play framework
Full stack Web framework
Scala
Rails ぽいけど rails より安全(型的に)
Netty based 非同期IO
高性能
Play を elastic beanstalk で
動かすには .war にして?
Tomcat に乗せるしかない。
活かせない非同期IO (Netty)
そこにDocker対応のニュース!
2014/4/23
Docker
Lightweight Linux container
環境(ライブラリなど)ごと持ち運べる
Ubuntu ホストで CentOS 環境動かしたり
DotCloud社(現Docker社)がオープンソース化
最新版は 0.11 (version 1 の RC 扱いらしい)
なにが嬉しいか?
開発、テスト、本番で同じ環境が使える
Tomcat に限定されない。Netty が動かせる!
Container内で httpd が動けばいい
play2-war-plugin からの脱依存
性能アップの予感
でもコンテナ層が増えてるぞ…
どっちが速いの?
JVM
Tomcat
アプリ
JVM
Netty
アプリ
Docker
Tomcat より?
Netty の方が速い
一階層多い
無料の負荷計測サービス
https://catmdes.com/features/performance-test/
HTMLファイルを置くか?
<meta> により所有者確認
国内5つのホストから?
要求がくる
JMeter による?
シナリオテストも可能
ちょっと測ってみるか
Play 2.2.3 で query string を echo back する?
アプリを作成
Tomcat + .war V.S. Docker + Netty
Elastic beanstalk @ap-northeast-1?
Single instance m3.medium
まずは Tomcat + war
385 req/sec, エラー率 0%, response time: 0.42 sec
念の為にもう一回
584 req/sec, エラー率 0%, response time: 0.27 sec
あれ、だいぶ速くなった?
JIT?
とはいえ?
一回の測定3分間
たまに外れ値が?
出る模様 0
150
300
450
600
1 2 3 4
2度目の測定結果を採用
584 req/sec
Tomcat + .war の結果
続いて Docker + Netty?
行ってみよう!
エラーを出してもエラーにならない
めげない
fuse install しようとしてエラー
apt-get install -y --no-install-recommends openjdk-7-jdk で?
回避可能
Docker が古い.. 0.9.0. Docker の最新版では出ないエラー
めげずに
動いた! Docker?le
FROM ubuntu:trusty
RUN sudo apt-get install -y --no-install-recommends openjdk-7-jdk
ADD . /usr/local/play22-echo
EXPOSE 80
CMD /usr/local/play22-echo/bin/play22-echo -Dhttp.port=80
sbt dist zip を展開して Docker?le を入れて
再度圧縮し、elastic beanstalk へ upload
解凍した top directory に Docker?le が無いとエラーなので注意
さてここで問題です
Docker + Netty にしたら性能はどうなったで
しょうか?
A: すごい速くなった
B: だいたい一緒くらいだった
C: 逆に遅くなった
コイツ、、
1130 req/sec, エラー率 0%, response time: 0.12 sec
は、はやい!
0
300
600
900
1200
1 2 3 4
Tomcat Docker
584 req/sec
Tomcat + .war
1130 req/sec
Docker+Netty
約2倍速
2度目の測定結果を採用
Summary
Elastic beanstalk は人手の少ない start up の味方
Elastic beanstalk + Docker は?
とりあえず動かすならそんなにハマらない
Deploy 手段などノウハウはまだ溜まってない
Play やるなら Netty が速い
JVM以外の環境でも【あなたの好きなもの】が使える
CATS MDES は簡単無料で負荷テストできていい感じ
S3をprivate repo として?
使えるように!
2014/6/1

More Related Content

Elastic beanstalk と Docker と Play