#AWS Elastic Beanstalkとは?
「定番構成の構築・アプリデプロイの自動化サービス」
#特徴
・速く簡単にアプリケーションをデプロイ可能
・Auto Scalingによりコストを抑えながらスケーラビリティを確保
・Java,PHP,Ruby,Python,Node.js,.NET,Docker,Goなどに対応
#構成要素
アプリケーション
・トップレベルの単位
・バージョン、環境、環境設定が含まれている入れ物
バージョン
・デプロイ可能なコード
・S3上ででのバージョン管理
・異なる環境に異なるバージョンをデプロイ可能
環境
・各環境に応じて構築されるインフラ環境
・バージョンをデプロイ
・例)ELB+EC2など
環境設定
その環境に関連するリソースの動作を定義する設定パラメータ
例)EC2インスタンスのタイプ、AutoScalingの設定など
#環境のタイプ
ロードバランシング、AutoScaling環境
・高い可用性
・ウェブサーバ環境:ELB+AutoScaling
・ワーカー環境:SQS+AutoScaling
シングルインスタンス環境
・EC2インスタンス1台構成
・開発環境構築のために低コストで構築可能
#環境の種類
ウェブサーバー環境
・スケーラブルなウェブアプリケーションを実行
・ELB+AutoScaling
・環境ごとにDNS名付与
ワーカー環境
・バッチアプリケーションを構築
・SQS+AutoScaling
・ワーカーホスト内でWebアプリケーションが動作
Sqsd
ワーカーホスト内で動作するデーモン
Webアプリからの応答
・200OKの場合→SQSからメッセージを削除
・200OK以外の場合→VisibilityTimeout後にSQSからメッセージが取得可能
・応答なし→InactivityTimeout後にSQSからメッセージ取得可能
定期的なタスク実行
#デプロイメント
In Place Deployment(Rolling Deploy)
インスタンスの現行環境のものをそのまま利用し、新しいリビジョンのコードをその場で反映させる
Blue/Green Deployment(Red/BNlack Deployment)
新しいリビジョンのコードを、新しいインスタンスに反映させ、インスタンスごとに入れ替える
#デプロイに関する設定
バッチタイプ:一度にデプロイを反映させる台数をどう決めるか設定
・割合(%):現在起動中のインスタンスの合計数に対する割合で構成
・固定:決まった台数で絶対値で指定
バッチサイズ:各バッチにデプロイするインスタンスの数または割合
#デプロイ戦略
環境設定の変更
・環境とその環境に関連づけられているリソースの設定変更も可能
例)インスタンスタイプの変更
ELBのヘルスチェック設定変更など
・環境設定の変更によりインスタンスの置換が必要な場合も様々な方式から選択可能
・無効:All at Onceでアップデート
・ヘルスに基づくローリング:ヘルスチェックの結果が正常なら次のバッチをアップデート
・時間に基づくローリング:指定した時間が経過したら次のバッチをアップデート
・Immutable:新規インスタンスを作成して入れ替え
#環境設定のカスタマイズ
環境設定
・その環境に関連するリソースの動作を定義する設定パラメータ
例)EC2インスタンスタイプ、AutoScalingの設定など
・各リソースに対してデフォルトの環境設定が定義
環境作成時に直接設定、保存済み設定、.ebextensionsのいずれかでカスタマイズ可能
保存済み設定
・起動中の環境で使用している環境設定を保存可能→Amazon S3に設定ファイルとして保存
・保存した環境設定を再利用可能、作成時に指定
.ebextensions
・環境で利用しているリソースの高度なカスタマイズが可能
・環境に対する様々な操作を自動化と集約可能
・ユースケース
(1)ソフトウェアインストール
(2)インストールしたソフトウェアの実行
#モニタリング
基本ヘルスレポート
・環境のヘルスステータス
・ELBヘルスチェック
・CloudWatchメトリクス
拡張ヘルスレポート
・OSレベルのメトリクス
・アプリケーションレベルのメトリクス
拡張ヘルスレポートの主なメトリクス
・EnvironmentHealth
・インスタンスの状態
・リクエスト総数および各レスポンスコード毎の数
・Xパーセントの完了にかかった平均時間
・LoadAverage1min:1分間のLoad値の平均値
・InstanceHealth:現在のインスタンスのヘルスステータス
・RootFilesystemUtil:使用ディスク容量
・CPU使用状況詳細