管理の効率化
Linuxの効率的な管理(cloud-init)
EC2インスタンス起動時にテキストデータやファイルをインスタンスに渡すことが出来る。
このデータを受け取って実行出来るcloud-init
という仕組みが用意されている。
cloud-init
はインスタンスの初回起動時のみ実行され、AMIに含まれていないような追加ソフトウェアのインストールや設定ファイルの微調整などを挟むことが出来る。
AWSのアプリケーション管理サービス
Elastic Beanstalk
複数の環境で負荷分散、監視、要領設定、ミドルウェアのインストール、アプリケーションの配備を自動的に行うことが可能。
アプリケーションのライフサイクルに主眼を置いているため、Rubyなどのアプリケーションプラットフォームの管理まで行う。
例えば
Apache、 PHPをインストールしたEC2にAuto Scalingを設定してELB配下に起き、セキュリティグループを設定し、RDSを用意して、Gitからアプリケーションを配備する
というような環境をごく少ない設定で構築可能。
設定はプリセットが主体になっているので、仙人のインフラ担当者が不在の状態で開発者が短時間でインフラを調達したい場合などに最適。
OpsWorks
Beanstalkよりも柔軟性があり、単純な構成から複雑なものまで様々なアーキテクチャに対応。
ユーザ独自のChefのクックブックを使用できるため、EC2内部ではほぼ自由に設定することが可能。
例えば
Railsの最新バージョンを入れたEC2にRDSと接続するアプリケーションをGitでデプロイし、既存のELB配下で時間ベースのスケーリングルールを適用し、cronでバッチジョブを設定、ログ集約してS3に保存する
と言った構築をOpsWorks経由で設定可能。
専任のインフラ担当者が運用効率や作業の統一性を求める場合に優れた効果を発揮。
CloudFormation
AWSのほぼすべてのリソースの構築と設定を行うことが可能。
JSONフォーマットを使用して構成を記述する。
例えば
頻繁に構築する構成の既存の環境内にあるアプリケーションサーバとELB、Auto Scalingの設定、RDS、ElastiCache、セキュリティグループ、VPC構成
をCloudFormerで雛形化しておき、新規プロジェクトで使用する際に使いまわせるようにしていくと捗る