AWSのElastic BeanstalkとOpsWorksとCloudFormationの立ち位置
AWSには、リソース管理サービスとして、以下の3つのサービスがあります。
- AWS Elastic Beanstalk -- ビーンスターク(豆の木, 豆の茎)と発音するようです
- AWS OpsWorks
- AWS CloudFormation
- EC2, Auto Scaling等の個別サービス
それぞれの特徴と選択の仕方は、以下のページに書いてあります。
AWS のアプリケーション管理 | アマゾン ウェブ サービス(AWS 日本語)
以下の様な住み分けなんだと理解しました。
- Beanstalk - インフラ専任がいないので、とりあえずな環境が欲しい
- OpsWorks - インフラ専任もしくはそれなりにリソースがあるが、その運用に効率性・柔軟性を与えたい
- CloudFormation - 自分で好きなように管理モデルを構築したい
ちょっとまえにBeanstalkを使ってみたので、その感想
メリット
Beanstalkは学習コスト対効果がなかなか優れたサービスだと思います。自分の場合は、Beanstalkを調べ始めて1週間程度で、ステージング、本番環境を用意することが出来ました。
この程度の学習で、EC2のオートスケール、ELBによる、アプリケーションの自動配備、ローリングアップデート、DNSの切り替えによるダウンタイム0のデプロイ、システムの監視が得られます。
それぞれ調べて調整するには、もっと時間がかかるように思います。
デメリット
情報がまだ少ないです。設定ファイルの書式は ini ファイル形式なのですが、そこで使えるオプションについてはOpsWorksやCloudFormationのものを参考にしましたが、何が有効で何が効かないか等の情報が少なかったです。
コマンドラインツールでBeanstalkを制御する場合で、チームで開発する場合、どういう開発・デプロイフローが適切かが、不明瞭です。
今後の期待
Beanstalkにチーム開発を想定した追加サービスが現れることを期待します。Jenkins等のCIをサービス化され、GITへのPushをトリガーに、テスト、デプロイが自動化されると、開発環境構築コストがかなり低減されるのではないでしょうか。