×
  • Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
 

Elastic beanstalk と Docker と Play

on

  • 311 views

 

Statistics

Views

Total Views
311
Views on SlideShare
302
Embed Views
9

Actions

Likes
2
Downloads
3
Comments
0

2 Embeds 9

https://twitter.com 8
https://www.rebelmouse.com 1

Accessibility

Categories

Upload Details

Uploaded via SlideShare as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Elastic beanstalk と Docker と Play Elastic beanstalk と Docker と Play Presentation Transcript

    • 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 の最新版では出ないエラー めげずに
    • 動いた! Dockerfile 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 を展開して Dockerfile を入れて 再度圧縮し、elastic beanstalk へ upload 解凍した top directory に Dockerfile が無いとエラーなので注意
    • さてここで問題です 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