Elastic Beanstalk とは?AWS の Platform-as-a-Service
AWS Elastic Beanstalk は platform-as-a-service です。アプリをアップロードすると、Beanstalk が裏側で EC2 インスタンス、load balancer、スケーリングをプロビジョニングして管理します。
Beanstalk は、EC2、load balancer、auto-scaling を手作業で組み立てずに web アプリを AWS へデプロイしたいチーム向けです。プラットフォーム(Node.js、Python、Java、Docker など)を選び、コードをプッシュすると、Beanstalk が環境を構築します。必要なときには基盤リソースまで降りて操作することもできます。
Beanstalk がプロビジョニングするもの
単一の application version から、Beanstalk は EC2 インスタンス、Auto Scaling group、Elastic Load Balancer、security group、ヘルスモニタリングを備えた環境を作成します。これらを相互に接続し、アプリが最初から到達可能でスケーラブルになるようにします。
アプリケーション、バージョン、環境
- Application - 論理的なプロジェクト。
- Application version - アップロードされた特定の build。
- Environment - 稼働中のデプロイ(例えば staging や production)。
コントロールは手元に残る
Beanstalk がリソースを管理するとはいえ、option settings や .ebextensions で構成でき、作成された EC2 インスタンスやその他のリソースへのフルアクセスも維持されます。ブラックボックスにならない、管理された利便性です。
デプロイポリシー
Beanstalk は all-at-once、rolling、追加バッチ付き rolling、immutable のデプロイをサポートします。より安全なポリシーは、古いインスタンスを引退させる前に新しいインスタンスを立ち上げ、デプロイ速度と引き換えにダウンタイムなしの更新を実現します。
CI/CD での役割
パイプラインはアプリをパッケージ化し、新しい application version をアップロードし、それを環境へデプロイするよう Beanstalk に指示します。AWS CLI または EB CLI がこれを行い、IAM/OIDC の role で認証します。CI が build とテストを担当し、Beanstalk がプロビジョニングと展開ポリシーを担当します。
重要なポイント
- Elastic Beanstalk は AWS の PaaS です。コードをアップロードすればインフラをプロビジョニングします。
- EC2、load balancing、スケーリングを管理しつつ、リソースへのアクセスも維持します。
- パイプラインは新しい application version をアップロードして展開をトリガーすることでデプロイします。