主な構築自動化・プロビジョニングサービス
- Elastic Beanstalk
定番構成の自動構築 - OpsWorks
Chef環境を提供し、OSより上のレイヤーの自動構築をサポート - CloudFormation
JSONあるいはYAMLのテンプレートを作成して、OSより下のレイヤーの自動構築をサポート
Cloud Formation
環境構築を自動で作成してくれるツール。
最初はEC2やELBなどの設定をコンソールで一から手作業で入力していくことは大事ですが、パターン化した設定や工数の多いものは自動化した方がミスも少なくなる。
バッチファイル的な感じで簡単なコードを書いておけば、パターン化した環境構築を自動でやってくれるイメージ。
スタックとテンプレート
各種リソースの設計書を記述するのが「テンプレート」。JSONかYAML形式で定義される。
テンプレートに従って自動構築されたリソース群は「スタック」という単位でまとめられる。スタックを削除するとそれに紐づくリソース群は全て削除される。
画像引用:AWSのリソースをコードで自動構築する「AWS CloudFormation」とは?実際に使用してみた
「リソース群」って何よ?となるが、以下の9つが挙げられる。
Format Version (任意)
Description (任意)
Metadata (任意)
Parameters (任意)
Mappings (任意)
Conditions(任意)
Transform (任意)
Resources (必須)
Outputs (任意)
Resourcesのみ必須となっており、これはスタックに含めるAWSリソース(EC2/S3)を定義するもの。確かにこれがないと何も始まらないな。
OpsWorks
Chef や Puppet のマネージド型インスタンスを利用できるようになる構成管理サービスです
ChefやPuppetはオープンソースの構成管理ツールである。
構成管理ツールって何ぞや?という質問に対しては以下のイメージとなる。
画像引用:構成管理の自動化とは
Elastic Beanstalk
デプロイ管理ツールのようなイメージ。アプリをweb公開したいときに(しっかりしたサービスであるほど)考慮しなければならない構成が大量にある。ただそれにはある程度の知識&経験が必要。その辺りを自動的に行なってくれるのがElasticBeanstalkである。
CloudFormationとの違いは?となってしまうが、CloudFormationは「自分で何をすべきか考える、それに従って自動的に作業を行なってくれるもの」、ElasticBeanstalkは「裏側の仕組みは特段考えなくても大丈夫、魔法のようなもの」となる。また、ElasticBeanstalkはデプロイ周りに限定されており、自由度が少ない。(魔法だから仕方ない)
CloudFormationは対象範囲は広く、IAMの自動作成なども可能。
3者の違いは?
一見似たような役割を果たしているため使い分けがわかりにくい。初心者ながらのざっくりとした理解は以下。こちらの記事が参考になりました。
・CloudFormation
デプロイまでのAWS環境構築を全てやってくれるもの。幅広くプロビジョニングしてくれるもののデプロイはしてくれない。
・ElasticBeanstalk
アプリをWeb公開するまでの実行環境の手配からデプロイまで一貫して行ってくれるサービス。
・OpsWorks
ほぼ同上。こちらはChefを利用してサーバーの構成を自動化することができる。
これだけ見るとElasticBeanstalkとOpsWorksの違いがわからない。
ElasticBeanstalkは「定番の構成(オーソドックスな構成)を全自動で用意してくれる。手間要らず。」
OpsWorksは「Chefを使っているのでちょっとした細かい仕様にも対応できる。ちょっと手間かける。」のようなイメージで。
参考