AWS Elastic Beanstalkは、Java、PHP、.NET、Node.js、Python、Ruby、Goのアプリケーション向け実行環境のPaaSだ。Beanstalk(ビーンスターク=豆の木)という名称は「ジャックと豆の木」に由来する。負荷に合わせて処理性能をスケーリングさせたり、随時アプリケーションを更新したりして、システムを柔軟に育てられる、という意味だ。

 Beanstalkの提供が始まったのは2011年で、実績がある。主に二つの用途で使われてきた。

 一つは、アプリケーションの実行基盤だ。Apache HTTP Server、Nginx、Phusion Passenger、IISというWebサーバー、負荷分散やオートスケーリングの機能などを備えており、簡単な設定でアプリケーションを動作させることができる。

 もう一つの用途はコンテナ基盤。Beanstalkは簡易なコンテナ基盤として、バッチ処理などに使われてきた。最近はAWS LambdaやAWS Batchにその役目を譲りつつある。

 本稿ではアプリケーション実行基盤としてのBeanstalkを取り上げる。

 Beanstalkの特徴として、実行基盤の自由度が高いことが挙げられる。

 一般に、アプリケーション実行基盤のPaaSはバックエンドが隠蔽されて、カスタマイズの余地が小さい。そのため、実行基盤に合ったアプリケーションを用意する必要がある。これは、特に既存アプリケーションをPaaSに展開するとき問題になる。

 一方、Beanstalkではカスタマイズの制約が少ない。インスタンスの種類やサイズ、オートスケーリングの条件など、構成・設定の大半はカスタマイズ可能だ。

 その理由は、Beanstalkで作る実行基盤は、EC2やAuto Scaling、ELB(Elastic Load Balancing)、CloudWatchなど、AWSのサービス(リソース)を組み合わせて実現したものだからだ。構築した実行基盤は、CloudFormationスタック(AWSリソースの集合)として保存される(図1)。Beanstalk独自のリソースとして、EC2インスタンスに導入する「Beanstalk状態エージェント」があるが、基盤の構成変更の制約にはほとんどならない。

図1 Beanstalkで構築したアプリケーション実行基盤の構成
[画像のクリックで拡大表示]

 そのため、Beanstalkのアプリケーション実行基盤は自由にカスタマイズできる。アプリケーション実行環境としてBeanstalkの用途は広い。

VPC内に実行基盤を配置

 ここからBeanstalkの特徴的な機能を二つ取り上げる。VPC(Virtual Private Cloud)対応とアプリケーションの更新だ。順に説明する。

 Beanstalkのリソースは、ユーザーごとの論理的に独立したネットワークVPCに配置できる。クラウド上に構築したアプリケーションサーバーというと、インターネット向けに公開するもの、というイメージがあるかもしれない。もちろんBeanstalkはその用途に使えるが、業務システムのようなインターネットに公開しないシステムにも利用できる。

 その場合は、VPCにリソースを配置したうえで、オンプレミス環境とAWSとを専用線接続サービスAWS Direct ConnectやVPNで結ぶ。

この先は有料会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら