40
AWS Elastic Beanstalk概要 2015414アールスリーインスティテュート 西島 幸一郎

Elastic Beanstalk 概要

Embed Size (px)

Citation preview

Page 1: Elastic Beanstalk 概要

AWS Elastic Beanstalk概要

2015年4月14日 アールスリーインスティテュート

西島 幸一郎

Page 2: Elastic Beanstalk 概要

http://www.r3it.com/

Elastic Beanstalkとは?

Page 3: Elastic Beanstalk 概要

http://www.r3it.com/

大きく育つ(予定の)豆の茎2014-07-15

Page 4: Elastic Beanstalk 概要

http://www.r3it.com/

AWSの中で一番導入が容易な デプロイ自動化ツール

Page 5: Elastic Beanstalk 概要

http://www.r3it.com/

公式の最も詳しい資料は、安川さんのこちらの資料へ(ちょいちょい引用させて頂きます(^^;)

http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-aws-elastic-beanstalk

Page 6: Elastic Beanstalk 概要

http://www.r3it.com/

Q: Elastic Beanstalk(略してeb)を使うと 何が嬉しいか?

Page 7: Elastic Beanstalk 概要

http://www.r3it.com/

A: 定番のWebアプリ実行環境をすぐ構築できる (よくheroku的なPaaSとも言われます)

Page 8: Elastic Beanstalk 概要

http://www.r3it.com/

ロードバランサ配下にWebサーバがあってDBがあって 非同期処理用のWorkerがある みたいな2 or 3層構造

定番とは?

Page 9: Elastic Beanstalk 概要

http://www.r3it.com/

今回は簡略化のためWebアプリのデプロイに話を絞って説明します。

Page 10: Elastic Beanstalk 概要

http://www.r3it.com/

対応言語環境

Page 11: Elastic Beanstalk 概要

http://www.r3it.com/

$ aws elasticbeanstalk list-available-solution-stacks \ > --query 'SolutionStacks[]' [ "64bit Amazon Linux 2015.03 v1.3.0 running PHP 5.5", "64bit Amazon Linux 2015.03 v1.3.0 running PHP 5.4", "64bit Amazon Linux 2014.03 v1.1.0 running PHP 5.5", "32bit Amazon Linux 2014.03 v1.1.0 running PHP 5.5", "64bit Amazon Linux 2014.03 v1.1.0 running PHP 5.4", "32bit Amazon Linux 2014.03 v1.1.0 running PHP 5.4", "32bit Amazon Linux running PHP 5.3", "64bit Amazon Linux running PHP 5.3", "64bit Amazon Linux 2015.03 v1.3.0 running Node.js", "64bit Amazon Linux 2014.03 v1.1.0 running Node.js", "32bit Amazon Linux 2014.03 v1.1.0 running Node.js",

2015年4月13日時点のstack一覧

Page 12: Elastic Beanstalk 概要

http://www.r3it.com/

"64bit Windows Server 2008 R2 running IIS 7.5", "64bit Windows Server 2012 running IIS 8", "64bit Windows Server 2012 R2 running IIS 8.5", "64bit Windows Server Core 2012 R2 running IIS 8.5", "64bit Amazon Linux 2015.03 v1.3.0 running Tomcat 8 Java 8", "64bit Amazon Linux 2015.03 v1.3.0 running Tomcat 7 Java 7", "64bit Amazon Linux 2015.03 v1.3.0 running Tomcat 7 Java 6", "64bit Amazon Linux 2014.09 v1.2.0 running Tomcat 8 Java 8", "64bit Amazon Linux 2014.09 v1.2.0 running Tomcat 7 Java 7", "32bit Amazon Linux 2014.09 v1.2.0 running Tomcat 7 Java 7", "64bit Amazon Linux 2014.09 v1.2.0 running Tomcat 7 Java 6", "32bit Amazon Linux 2014.09 v1.2.0 running Tomcat 7 Java 6", "64bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 7", "32bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 7",

2015年4月13日時点のstack一覧

Page 13: Elastic Beanstalk 概要

http://www.r3it.com/

"64bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 6", "32bit Amazon Linux 2014.03 v1.1.0 running Tomcat 7 Java 6", "32bit Amazon Linux running Tomcat 7", "64bit Amazon Linux running Tomcat 7", "32bit Amazon Linux running Tomcat 6", "64bit Amazon Linux running Tomcat 6", "64bit Amazon Linux 2015.03 v1.3.0 running Python 3.4", "64bit Amazon Linux 2015.03 v1.3.0 running Python 2.7", "64bit Amazon Linux 2015.03 v1.3.0 running Python", "64bit Amazon Linux 2014.03 v1.1.0 running Python 2.7", "32bit Amazon Linux 2014.03 v1.1.0 running Python 2.7", "64bit Amazon Linux 2014.03 v1.1.0 running Python", "32bit Amazon Linux 2014.03 v1.1.0 running Python", "32bit Amazon Linux running Python",

2015年4月13日時点のstack一覧

Page 14: Elastic Beanstalk 概要

http://www.r3it.com/

"64bit Amazon Linux running Python", "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 2.2 (Puma)", "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 2.1 (Puma)", "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 2.0 (Puma)", "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 2.2 (Passenger Standalone)", "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 2.1 (Passenger Standalone)", "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 2.0 (Passenger Standalone)", "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 1.9.3", "64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.1 (Puma)", "64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.1 (Passenger Standalone)",

2015年4月13日時点のstack一覧

Page 15: Elastic Beanstalk 概要

http://www.r3it.com/

"64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.0 (Puma)", "64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.0 (Passenger Standalone)", "64bit Amazon Linux 2014.03 v1.1.0 running Ruby 1.9.3", "32bit Amazon Linux 2014.03 v1.1.0 running Ruby 1.9.3", "64bit Amazon Linux 2014.09 v1.2.1 running Docker 1.5.0", "64bit Amazon Linux 2014.09 v1.2.1 running Multi-container Docker 1.3.3 (Generic)", "64bit Debian jessie v1.2.1 running GlassFish 4.1 Java 8 (Preconfigured - Docker)", "64bit Debian jessie v1.2.1 running GlassFish 4.0 Java 7 (Preconfigured - Docker)", "64bit Debian jessie v1.2.1 running Python 3.4 (Preconfigured - Docker)",

2015年4月13日時点のstack一覧

Page 16: Elastic Beanstalk 概要

http://www.r3it.com/

"64bit Debian jessie v1.2.1 running Go 1.4 (Preconfigured - Docker)", "64bit Debian jessie v1.2.1 running Go 1.3 (Preconfigured - Docker)"

以上

2015年4月13日時点のstack一覧

Page 17: Elastic Beanstalk 概要

http://www.r3it.com/

で、これらの実行環境にどうやってアプリをデプロイするか?

Page 18: Elastic Beanstalk 概要

http://www.r3it.com/

これらの実行環境にどうやってアプリをデプロイするか?

環境設定はManagement Console

orAWS CLI / eb CLI

Page 19: Elastic Beanstalk 概要

http://www.r3it.com/

これらの実行環境にどうやってアプリをデプロイするか?

アプリケーションのデプロイwar/zipファイル

orgit コマンド

Page 20: Elastic Beanstalk 概要

http://www.r3it.com/

簡単な流れ

Page 21: Elastic Beanstalk 概要

http://www.r3it.com/

まず大枠のアプリを作成 $ aws elasticbeanstalk create-application

Page 22: Elastic Beanstalk 概要

http://www.r3it.com/

S3にwar/zipをアップロード。この時ラベルを付けてバージョン管理

例えば” GitBucket3.1.1”とラベルを付けてwarをアップロード

Page 23: Elastic Beanstalk 概要

http://www.r3it.com/

そのwarなりzipなりを使う環境を作る (ステージングとか、本番とか名前をつけて)

この環境がそれぞれ1つのFQDNを持つ。

Webサーバの台数なんかは設定次第

Page 24: Elastic Beanstalk 概要

http://www.r3it.com/

最短なら3ステップ

http://環境名とか自分で空いてるのをつけたりした名前.elasticbeanstalk.com/

でアクセス可能な

Webアプリの出来上がり

Page 25: Elastic Beanstalk 概要

http://www.r3it.com/

本番運用なら

環境名とか自分で空いてるのをつけたりした名前.elasticbeanstalk.com

を自分のドメインにCNAMEします

Page 26: Elastic Beanstalk 概要

http://www.r3it.com/

何が嬉しいの?✴決まりきった環境なら構築要らず

✴アプリのバージョン管理がなされるので、ロールバックもお手軽

✴ブルーグリーンデプロイが楽

Page 27: Elastic Beanstalk 概要

http://www.r3it.com/

美味しい話をする前に覚えておきたいこと

✴環境配下のインスタンスは使い捨て→ログが欲しければS3に吐くなどの設定(or自前でログ集計環境に流すなど)

✴環境のカスタマイズはちょい悩む.ebextensionsなどを駆使すれば出来るし、カスタムのAMIも使える。が、スタックはどんどん最新に上がっていくので…

Page 28: Elastic Beanstalk 概要

http://www.r3it.com/

美味しい話をする前に覚えておきたいこと

✴Dockerのデプロイはすごく便利だけど、イメージのビルドに時間がかかるのでmicroインスタンスではお勧めしない(^_^;

✴歴史的背景によりeb CLI(旧:2.6.x)、AWS CLI 、eb CLI(3.x系)が混在しているのでググった時は要注意(旧eb CLIはディスコン)

Page 29: Elastic Beanstalk 概要

http://www.r3it.com/

では、嬉しい話に進みます。

Page 30: Elastic Beanstalk 概要

http://www.r3it.com/

決まりきった環境なら構築要らず

✴ロードバランサー配下でJava/Ruby/PHP等の バージョンを指定した環境が一発で出来る

✴NodeやらIISも出来るそれぞれの環境ごとのChefレシピがあれば要らないけどね・・・

Page 31: Elastic Beanstalk 概要

http://www.r3it.com/

IISもこれだけあるので

"64bit Windows Server 2008 R2 running IIS 7.5","64bit Windows Server 2012 running IIS 8","64bit Windows Server 2012 R2 running IIS 8.5","64bit Windows Server Core 2012 R2 running IIS 8.5",誰かに試して欲しいです!

Page 32: Elastic Beanstalk 概要

http://www.r3it.com/

アプリのバージョン管理がなされるので、ロールバックもお手軽

✴デプロイされたアプリケーションは常にS3上にバージョン管理されて保存される

✴必要があれば、戻りたい版を指定してデプロイし直す事ができる

Page 33: Elastic Beanstalk 概要

http://www.r3it.com/

アプリのバージョン管理がなされるので、ロールバックもお手軽

git aws.push するたびにバージョンが上がる

これらバージョン選んで環境を指定してデプロイし直せる

Page 34: Elastic Beanstalk 概要

http://www.r3it.com/

ブルーグリーンデプロイが楽

ステージング環境

本番(運用)環境

動作テストしてOKなら…

wwwは今こっち

Page 35: Elastic Beanstalk 概要

http://www.r3it.com/

いまの本番環境(元ステージング)

元本番環境

それぞれの環境のURLを入れ替えちゃう!

切り替わった!

ブルーグリーンデプロイが楽

Page 36: Elastic Beanstalk 概要

http://www.r3it.com/

普通にゼロダウンタイムで運用できます

Page 37: Elastic Beanstalk 概要

http://www.r3it.com/

その他TIPS

Q: Webアプリのセッション管理は・・・

A:そもそもWebサーバの外にだすことを推奨 PHPならElastiCacheに置くとか、 TomcatならDynamoDBに置くとか

Page 38: Elastic Beanstalk 概要

http://www.r3it.com/

その他TIPS

Q: Webサーバの中のカスタマイズは?

A:インスタンスにsshしたら負けなので カスタマイズしたAMIを使うか . ebextensions で頑張る ただしそれをやるならeb使う意味があまり・・・

Page 39: Elastic Beanstalk 概要

http://www.r3it.com/

あなたのebも大きく育つといいですね2014-07-15 → 2015-04-13

Page 40: Elastic Beanstalk 概要

http://www.r3it.com/

以上

簡単なことは簡単に難しいことは…なebのご紹介でした

ありがとうございました