39
Elastic Beanstalk で ででで / でででで でででで ででで 2016-10-13

Elastic Beanstalkでアプリ/インフラかんたん一括管理

Embed Size (px)

Citation preview

Page 1: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Elastic Beanstalkでアプリ /インフラかんたん一括管理

2016-10-13

Page 2: Elastic Beanstalkでアプリ/インフラかんたん一括管理

自己紹介

氏名 : 駒原雄祐 ( こまはらゆうすけ )

年齢 : 36歳

家族 : 妻と子供 (3ヶ月 )と犬 (2歳 )

お仕事 : 広告配信プラットフォーム A.J.A.の開発・運用エンジニア

Page 3: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Agenda

Elastic Beanstalkって何?

Elastic Beanstalkの基本構成

Elastic Beanstalkのイケてるポイント

Elastic Beanstalk運用上の注意点

まとめ

Page 4: Elastic Beanstalkでアプリ/インフラかんたん一括管理

突然ですが

Page 5: Elastic Beanstalkでアプリ/インフラかんたん一括管理

AWS使ってますか?

Page 6: Elastic Beanstalkでアプリ/インフラかんたん一括管理

きょうは Elastic Beanstalkの

お話をします

Page 7: Elastic Beanstalkでアプリ/インフラかんたん一括管理
Page 8: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Elastic Beanstalkって何?

AWS上でアプリケーションを実行、管理するのに必要な機能がパッケージングされたもの

いわば AWSフレームワークといった趣

AWSの FAQによると、下記の事項を開発者が 簡単に行えるもの https://aws.amazon.com/jp/elasticbeanstalk/faqs/

容量のプロビジョニング

負荷分散

Auto Scaling

アプリケーションの状態モニタリング

Page 9: Elastic Beanstalkでアプリ/インフラかんたん一括管理

ところで

Beanstalkの読み方は?

✕ びーんず・とーく ◯びーん・すたーく

意味は?

豆の主茎

( 出典 : Weblio http://ejje.weblio.jp/ )

Page 10: Elastic Beanstalkでアプリ/インフラかんたん一括管理

AWSでWeb アプリケーションを作るとき ( 1 )

NW 系の各種設定 (新規の場合 )

VPC

Subnet

Route Table

etc ...

Page 11: Elastic Beanstalkでアプリ/インフラかんたん一括管理

AWSでWeb アプリケーションを作るとき ( 2 )

セキュリティ系の各種設定 (新規の場合 )

Security Group

WAF

etc ...

Page 12: Elastic Beanstalkでアプリ/インフラかんたん一括管理

AWSでWeb アプリケーションを作るとき ( 3 )

アプリケーション実行環境の設定

ELB

Auto Scaling Group

EC2

RDS

etc ...

Page 13: Elastic Beanstalkでアプリ/インフラかんたん一括管理

AWSでWeb アプリケーションを作るとき ( 4 )

デプロイのための仕組みの準備

アプリケーションのビルド環境の用意

Jenkinsや Circle CIなどのクラウド CIサービスなど

サーバへのデプロイ方法の用意

アプリケーションのバージョン管理

Page 14: Elastic Beanstalkでアプリ/インフラかんたん一括管理

ElasticBeanstalkがカバーしているもの

NW系● VPC● Subnet● Route Table

セキュリティ系● Security Group● WAF

App実行環境● ELB● Auto Scaling Group● EC2● RDS

デプロイ●ビルド環境●デプロイ方法●アプリケーションバージョン管理

Page 15: Elastic Beanstalkでアプリ/インフラかんたん一括管理

ElasticBeanstalkがカバーしているもの

NW系● VPC● Subnet● Route Table

セキュリティ系● Security Group● WAF

App実行環境● ELB● Auto Scaling Group● EC2● RDS

デプロイ●ビルド環境●デプロイ方法●アプリケーションバージョン管理

Page 16: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Elastic Beanstalk のアプリデプロイの流れ

アプリケーションのビルド

ビルド成果物を ZIP圧縮し、 S3にアップロード

S3にアップロードした ZIPファイルを Elastic Beanstalkにアプリケーションとして登録

登録したアプリケーションを Elastic Beanstalkの Environmentに対してデプロイ指示

Page 17: Elastic Beanstalkでアプリ/インフラかんたん一括管理

こんな人に向いている

よくあるアーキテクチャ構成で、 AWSサービスを個別に設定をしていくのが面倒

アプリケーションのデプロイから起動まで、自分で仕組みを構築するのが面倒

リリース後の切り戻しなど、アプリケーションの状態管理をしたいが仕組みを構築するのが面倒

Page 18: Elastic Beanstalkでアプリ/インフラかんたん一括管理

…一方で

自分で構築するといろいろ面倒な部分をまとめてお世話してくれる

その分 Elastic Beanstalkが指定する流儀に則る必要はある(ある程度はカスタマイズも可能 )

自分でなんでも細かくやりたい (やる必要がある )場合にはそもそも向かない

Page 19: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Elastic Beanstalkの基本構成

Page 20: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Elastic Beanstalk の基本構成 ( 1 )

Application (アプリケーション )

アプリケーション名

Web Application or Worker

アプリケーションのバージョン管理

1個以上の Environmentを持つ

Page 21: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Elastic Beanstalk の基本構成 ( 2 )

Environment (環境 )

Applicationの子要素

ドメイン

紐づく各種 AWSサービス (EC2/ELB等 )の設定

インスタンスの状態管理

Rebootや Terminateなど一部運用も可

Page 22: Elastic Beanstalkでアプリ/インフラかんたん一括管理

構成例 ( 配信サーバ )

1 Application 内に 2 Environemnt 構成

Page 23: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Environment を作ると一緒に作られるもの

ELB (HTTP or HTTPS -> EC2 port)

Health Check

Auto Scaling Group

EC2 (指定したランタイムプリインストール )

インスタンスタイプ

Security Group

EBS

など

Page 24: Elastic Beanstalkでアプリ/インフラかんたん一括管理

EC2の実行環境のカスタマイズ例

EC2のレイヤーについては 2通りのやり方

起動する EC2の AMIを指定できる

予め必要なミドルウェア等をインストールした AMIを用意しておくとよい

.ebextensionsディレクトリを配置http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/ebextensions.html

ディレクトリ内の hogehoge.config と名の付いた YAMLに実行内容を記載

Page 25: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Elastic Beanstalkのイケてるポイント

Page 26: Elastic Beanstalkでアプリ/インフラかんたん一括管理

アプリケーションのバージョン管理

登録したアプリケーションのバージョン履歴の保持

現在デプロイされているバージョンの確認

バージョンを指定してのデプロイ

Page 27: Elastic Beanstalkでアプリ/インフラかんたん一括管理

バージョンを指定してのデプロイ

アプリケーションのアップデートだけでなく、切り戻しも簡単にできる

(古いバージョンの再ビルドという形ではなく、以前動作していたものと完全に同一のモジュールをデプロイできる )

Page 28: Elastic Beanstalkでアプリ/インフラかんたん一括管理

2つの Environmentでの Blue Green DeploymentEnvironmentは個別にドメインが割り当てられる

同一 Application内の Environmentは、 URL Swapでドメインを入れ替えることができる

Page 29: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Environmentのドメインと URL Swap

prd-glasgow-deliver-active ↑こっちにアクセスが来る

prd-glasgow-deliver-standby↑こっちはスタンバイ

URL Swap

Page 30: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Blue Green Deploymentの流れ

Env1Domain: active…AppVer: 001

Env2Domain: standby…AppVer: 001

Env1Domain: active…AppVer: 001

Env2Domain: standby…AppVer: 002

Env1Domain: standby…AppVer: 001

Env2Domain: active…AppVer: 002

Page 31: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Blue Green Deploymentの利点

本番環境を 2系統用意して片側にデプロイすることで、リリース作業を安全に行える

万一問題があった場合でも、再度 URL Swapを行うことで、容易に切り戻しが可能

Page 32: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Elastic Beanstalk運用上の注意点

Page 33: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Elastic Beanstalkレイヤーで保持する設定との齟齬

一部の設定は、対象の AWSサービス本体の設定とは別に Elastic Beanstalk上でも保持

ex) ELBのリスナーや Auto Scaling Groupのmin/maxインスタンス数など

AWSサービス本体側の設定を直接変更した場合、 Elastic Beanstalk側の設定と差異が生じ、不具合につながる場合がある

Elastic Beanstalk側に設定がある項目はそちらから設定変更するのが無難

Page 34: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Blue Green Deployment 実施時の注意 ( 1 )

Auto Scalingによるスケールアウト /スケールインをしている場合 (高トラフィックなアプリケーションなど )

URL Swapによってスケールアウトしていない状態の環境が突然高負荷にさらされることになる

URL Swapの前に、インスタンス数を増やしておくなどの準備が必要

Page 35: Elastic Beanstalkでアプリ/インフラかんたん一括管理

Blue Green Deployment 実施時の注意 ( 2 )

高トラフィックなアプリケーションなどで、 ELBを利用している場合、 URL Swapによって、 ELB自体がスケールダウンしている状態で突然高負荷にさらされることになる

事前にダミートラフィックを流しておくなどして ELBの性能を引き上げておく

両環境の ELBのプレウォーム申請をしておくことで性能を確保しておく(A.J.A.ではこちらを採用 )

Page 36: Elastic Beanstalkでアプリ/インフラかんたん一括管理

URL Swap方式であることによる注意点

URLが入れ替わるだけのため、待機系環境もNW的に接続できなくなるわけではない

DNSキャッシュなどの要因で、少量ながら待機系にもアクセスは残る

待機系へのアクセスが許容できない場

URL Swap後に同一バージョンのアプリケーションを待機系にもデプロイ

ELBの Security Groupでアクセスを遮断

などの対策が必要

Page 37: Elastic Beanstalkでアプリ/インフラかんたん一括管理

まとめ

Page 38: Elastic Beanstalkでアプリ/インフラかんたん一括管理

まとめ

Elastic Beanstalkは、形式に則って実装することで、インフラ面をほぼまるっとおまかせできる AWSフレームワーク

立ち上げ期で時間がない人や面倒くさがりな人におすすめ

いくつかの罠は存在するが、バージョン管理やBlue Green Deploymentなど、うまく使えば運用が便利になる機能が盛り込まれている

Page 39: Elastic Beanstalkでアプリ/インフラかんたん一括管理

ご清聴ありがとうございました