クラウドにデプロイされたアプリは、それを実行するOS、CPUパワー、メモリを必要とします。また定期的なメンテナンスも必須です。
AWS Elastic Beanstalkはそれらのセットアップの手間と時間を大幅に節約してくれます。Elastic BeanstalkではOSやプログラミング言語を自由に選択でき、その上でハードウェアリソースや詳細を抽象化してくれるのです。
Elastic BeanstalkはJavaをはじめPHP、.NET、Dockerなどの言語をサポートし、バックグラウンドのタスクを自動化してくれます。
負荷を分散するための自動スケーリングやロードバランサーも利用可能です。Amazon CloudWatchからアプリケーションの健康状態をモニターすることができます。AWS管理コンソールではBeanstalk APIやコマンドラインを利用したオプションを提供してくれます。大規模なアプリケーションを高い信頼性で運用するためのツールが揃っているのです。
セキュリティに関してもしっかりと考えられています。サービスへのアクセスにはHTTPSエンドポイントが使用され、アクセスは暗号化されています。DMZも設定でき、プライベートなサブネットを作成すればさらにセキュリティを高めることができます。利用しているサブネットはダッシュボードから管理することが可能です。
他のAWSサービスと同様に、サーバーのリージョンを選択することができます。また複数のインスタンスが必要になった場合には負荷の分散が行われます。インスタンスに必須のリソースを転送し、アプリケーションの最適化とスケーリングを行うには必須となるものです。
BeanstalkはAmazon S3と同時に使うこともできます。すでにアプリがS3上に存在する場合でも問題ありません。
Beanstalkの代替としてAWS CloudFormationがあります。Beanstalkは簡便さを重視しており、一方のCloudFormationは柔軟なカスタマイズが可能です。時と場合によって使い分けるといいでしょう。
アプリケーションの開発者であれば、インフラ管理に必要な様々な面倒事をできるだけ避けたいはずです。Elastic Beanstalkを使用すれば、Beanstalkに面倒事を全て任せながらアプリケーションの開発・管理に集中することができるのです。
※本記事は、What does Elastic Beanstalk Do and Why use it?を翻訳・再構成したものです。