AWS Elastic Beanstalk
アプリケーションが動作する定番の構成を提供。アプリケーションの開発者は、Elastic Beanstalkによって用意されている定番構成の中からアプリケーションの実行環境に適したものを選んで数クリックするだけで、環境(インフラ)を作成することができます。
EC2インスタンスは、OSはもちろん、Webサーバーソフトウェアやアプリケーションの実行環境などがインストール・設定された状態で提供されます。単一インスタンス・複数インスタンス(Multi-AZ)の構成を選択でき、関連する各種AWSサービス(ELBやS3、Auto Scalingグループなど)も設定済みのため、開発者はアプリケーションをアップロードするだけでデプロイ(実行環境への展開)を行うことができます。
Elastic Beanstalkでは、状況に応じたデプロイ方式を選択することができます。例えば、新規の環境やテスト時などにはすべてのインスタンスに一括でデプロイを行えます。一方、稼働中のアプリケーションをバージョンアップするような場合には、一部のインスタンスから段階的にデプロイを行う方式や、旧環境は稼働したまま新しい環境にバージョンアップしたアプリケーションをデプロイし、問題ないことが確認できたら旧環境とURLを入れ替える方式などがあります。段階的にデプロイする際に行うELBの切り替えや新規インスタンスの構築などは、Elastic Beanstalkがすべて自動で行います。アプリケーションの開発者にとってはシステムの複雑な設定や切り替え作業を行う必要がなく、開発したアプリケーションを安全に展開できます。
環境が構築された後も、運用管理などはAWSによって行われます。例えば、EC2インスタンスのOSや導入されている各ソフトウェアへのアップデートも自動的に適用されるように設定できます。
また、Elastic Beanstalkで利用するリソースは自動スケーリング(Auto Scaling)に対応しており、利用状況に合わせた柔軟な構成変更を行うことができます。
なお、Elastic Beanstalk自体は無料で利用可能です。Elastic Beanstalkで構築した環境で動作するEC2インスタンスやS3バケットなど、利用したAWSリソースの分の料金がかかります。
ユーザーはアプリケーションの名前と使用するプラットフォーム(実行環境)の情報のみで使い始めることができます。
さらに細かな設定を行いたい場合は「より多くのオプションの設定」から設定可能です。例えば負荷分散を考慮して複数のインスタンスを構築したい場合や、データベースサービスのRDSに関する設定を行うことができます。
Elastic Beanstalkで利用可能なプラットフォームには、Java、.NET、PHP、Ruby、Python、Node.js、Go、Docker。またWebサーバー用のソフトウェアにApacheやNginx、IISなど。
Dockerは、ミドルウェアの設定や各種環境をDockerfileというテキストファイルにコード化して管理できるため、同じ環境を配布したり別の環境に持ち出したりできる、などの特徴があります。
なお、Elastic Beanstalkでは単一(シングル)コンテナ、マルチコンテナの両方に対応しています。シングル・マルチとはEC2インスタンス上で作成できるコンテナの数を意味しており、シングルコンテナの場合は1インスタンスに1つのコンテナを、マルチコンテナの場合は1インスタンスに複数のコンテナを動作させることができます。
Elastic Beanstalkを利用する大きな目的は「アプリケーションのデプロイを時間をかけずに行う」という点にあります。
インフラやサーバーに関する知識がなくても定番の構成を利用するだけでアプリケーションを公開することができます。