elastic beanstalk と docker と play

32
Elastic beanstalk Docker Play 河内 @kawachi pLucky, Inc. AWS Startup Tech Meetup 2014/6/5

Upload: takashi-kawachi

Post on 25-Jan-2015

3.398 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Elastic beanstalk と Docker と Play

Elastic beanstalk と

Docker と Play

河内 崇 @kawachi

pLucky, Inc.

AWS Startup Tech Meetup 2014/6/5

Page 2: Elastic beanstalk と Docker と Play

データ分析関連書籍翻訳やってます。

Scala, Play, iOS,Ruby, Rails,"

Java, C, Python,"Javascript, Haxe etc.

Page 3: Elastic beanstalk と Docker と Play

サービス課題をサクッとチェック 事前登録受付中 http://logbook.strikingly.com/

Page 4: Elastic beanstalk と Docker と Play

9月6~7日

日本最大のScala Conference

http://scalamatsuri.org

Page 5: Elastic beanstalk と Docker と Play

Elastic beanstalk とはAmazon web service が提供する PaaS 的なもの

データベース(RDS)、仮想ホスト(EC2)、ロードバ

ランサ(ELB)をセットで立ち上げ

負荷に応じてホスト増加(Auto scaling)

Tomcat, Rails, PHP, Python, Node.js などをサポート

Page 6: Elastic beanstalk と Docker と Play

なぜ私は Elastic beanstalk を使いたいか?

運用で楽をしたい

いざとなったら ssh で入って調査できる

Blue-Green deployment 的なものが簡単

もう1セット立ち上げてガバっと切り替え

CNAME 切り替え

Page 7: Elastic beanstalk と Docker と Play

Elastic beanstalk + Tomcat + Scalatra

弊社製品の一部で安定稼働

Page 8: Elastic beanstalk と Docker と Play

普通の web アプリを

作りたくなった

Play framework

Page 9: Elastic beanstalk と Docker と Play

Play framework

Full stack Web framework

Scala

Rails ぽいけど rails より安全(型的に)

Netty based 非同期IO

高性能

Page 10: Elastic beanstalk と Docker と Play

Play を elastic beanstalk で

動かすには .war にして

Tomcat に乗せるしかない。

活かせない非同期IO (Netty)

Page 11: Elastic beanstalk と Docker と Play

そこにDocker対応のニュース!2014/4/23

Page 12: Elastic beanstalk と Docker と Play

DockerLightweight Linux container

環境(ライブラリなど)ごと持ち運べる

Ubuntu ホストで CentOS 環境動かしたり

DotCloud社(現Docker社)がオープンソース化

最新版は 0.11 (version 1 の RC 扱いらしい)

Page 13: Elastic beanstalk と Docker と Play

なにが嬉しいか?

開発、テスト、本番で同じ環境が使える

Tomcat に限定されない。Netty が動かせる!

Container内で httpd が動けばいい

play2-war-plugin からの脱依存

Page 14: Elastic beanstalk と Docker と Play

性能アップの予感

でもコンテナ層が増えてるぞ…

Page 15: Elastic beanstalk と Docker と Play

どっちが速いの?

JVM

Tomcat

アプリ

JVM

Netty

アプリ

Docker

Tomcat より

Netty の方が速い

一階層多い

Page 16: Elastic beanstalk と Docker と Play

無料の負荷計測サービス

https://catmdes.com/features/performance-test/

Page 17: Elastic beanstalk と Docker と Play

HTMLファイルを置くか

<meta> により所有者確認

国内5つのホストから

要求がくる

JMeter による

シナリオテストも可能

Page 18: Elastic beanstalk と Docker と Play

ちょっと測ってみるか

Play 2.2.3 で query string を echo back する

アプリを作成

Tomcat + .war V.S. Docker + Netty

Elastic beanstalk @ap-northeast-1Single instance m3.medium

Page 19: Elastic beanstalk と Docker と Play

まずは Tomcat + war385 req/sec, エラー率 0%, response time: 0.42 sec

Page 20: Elastic beanstalk と Docker と Play

念の為にもう一回584 req/sec, エラー率 0%, response time: 0.27 sec

Page 21: Elastic beanstalk と Docker と Play

あれ、だいぶ速くなった?

JIT?

とはいえ

一回の測定3分間

たまに外れ値が

出る模様 0

150

300

450

600

1 2 3 4

Page 22: Elastic beanstalk と Docker と Play

2度目の測定結果を採用

584 req/sec

Tomcat + .war の結果

Page 23: Elastic beanstalk と Docker と Play

続いて Docker + Netty

行ってみよう!

Page 24: Elastic beanstalk と Docker と Play

エラーを出してもエラーにならない めげない

Page 25: Elastic beanstalk と Docker と Play

fuse install しようとしてエラー

apt-get install -y --no-install-recommends openjdk-7-jdk で

回避可能

Docker が古い.. 0.9.0. Docker の最新版では出ないエラー

めげずに

Page 26: Elastic beanstalk と Docker と Play

動いた! 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 が無いとエラーなので注意

Page 27: Elastic beanstalk と Docker と Play

さてここで問題ですDocker + Netty にしたら性能はどうなったで

しょうか?

A: すごい速くなった

B: だいたい一緒くらいだった

C: 逆に遅くなった

Page 28: Elastic beanstalk と Docker と Play

コイツ、、1130 req/sec, エラー率 0%, response time: 0.12 sec

Page 29: Elastic beanstalk と Docker と Play

は、はやい!

0

300

600

900

1200

1 2 3 4

Tomcat Docker

Page 30: Elastic beanstalk と Docker と Play

584 req/sec

Tomcat + .war

1130 req/sec

Docker+Netty

約2倍速

2度目の測定結果を採用

Page 31: Elastic beanstalk と Docker と Play

SummaryElastic beanstalk は人手の少ない start up の味方

Elastic beanstalk + Docker は

とりあえず動かすならそんなにハマらない

Deploy 手段などノウハウはまだ溜まってない

Play やるなら Netty が速い

JVM以外の環境でも【あなたの好きなもの】が使える

CATS MDES は簡単無料で負荷テストできていい感じ

Page 32: Elastic beanstalk と Docker と Play

S3をprivate repo として

使えるように!

2014/6/1