CDP:Stack Deploymentパターン
From AWS-CloudDesignPattern
サーバ群立ち上げのテンプレート化
Contents |
解決したい課題
システム開発や運用保守においては、一般的に開発環境やステージング環境を準備する。しかしこれらの環境は常時利用するものでもないので、そのために丸々サーバ群を用意するのは非常にコスト効率が悪い。
クラウドを利用することで仮想サーバを稼働させることができるようになり、一時的に利用する環境へのコスト効率は非常に改善する。
しかしシステムが複雑で仮想サーバ数も多い場合、その環境の構築や、関連する仮想サーバの起動と停止の作業は、非常に煩雑になってしまう。煩雑になればなるほど時間もかかりミスも多くなってしまい、それらが一時的に利用する環境の運用課題となってしまう。
クラウドでの解決/パターンの説明
サーバ群の立ち上げに関するテンプレートを用意し、それに従い一気に自動で起動する方法を利用する。構築したい環境で必要なクラウドコンポーネントをテンプレートに記載しておき、そのテンプレートに従い環境構築を行う事で、複雑なシステムをミスなく容易に準備することが可能となる。
実装
AWSにはCloudFormationと呼ばれる仕組みが提供されており、リソースのテンプレート作成や、それに従いシステム(EC2など)を構築することが可能となる。
- 既存の環境から、もしくは新規にCloudFormationテンプレートを作成しておく。
- 利用時に、CloudFormationテンプレートからシステム(EC2など)を一気に構築する。
- 利用が終わったら、再度CloudFormationテンプレートを利用して一気にシステムを削除する。
テンプレートの作成の際には、既存のシステムからテンプレートを作成するCloudFormerというツールも利用可能。
またこのパターンは、単にシステムをコピーするだけでなく、クラシックなEC2環境からVPC環境への移行時にも適用することができる。実装は以下の通り。
- CloudFormerを使って、既存システムのテンプレートを作成
- 移行先VPCの環境(ネットワーク体系、サブネット)を構築
- 構築したVPCのIDやサブネットのIDをCloudFormationテンプレートに登録
- CloudFormationテンプレートを使用してシステムを起動
構造
利点
- 立ち上げ順序が関係あるEC2も、その順序通りに起動するようにCloudFormationテンプレートを作成することができるので、オペーレーションミスを減らすことができる
- CloudFormationテンプレートをバージョニングすることで、システム構成の履歴管理も可能
- 環境の構築だけでなく、破棄も容易に行える
注意点
- システム(EC2など)がアップデートされたら、CloudFormationテンプレート内のAMIのIDの記載もアップデートする必要がある。