CDP:Stack Deploymentパターン
サーバー群立ち上げのテンプレート化
目次 |
解決したい課題
システム開発や運用保守においては、テスト環境やステージング環境を準備するのが一般的である。これらの環境は常時利用するものではないので、本番環境と同じ台数のサーバーを用意するのはコスト効率が悪い。仮想サーバーを利用するとコスト効率は改善する。
しかし、システムが複雑で仮想サーバー数が多い場合、その環境の構築や、関連する仮想サーバーの起動・停止などの作業は煩雑になってしまう。煩雑になればなるほど時間もかかりミスも多くなってしまう。
クラウドでの解決/パターンの説明
サーバー群の立ち上げに関するテンプレートを用意し、それに従い一気に自動で起動する方法を利用する。構築したい環境で必要なクラウドコンポーネントをテンプレートに記載しておき、そのテンプレートに従い環境構築を行うことで、複雑なシステムをミスなく容易に準備することが可能となる。
実装
AWSの「CloudFormation」と呼ぶサービスを使い、サーバーリソースなどを記述した「CloudFormationテンプレート」からシステム(EC2など)を起動する。
- 新規にもしくは既存の環境からCloudFormationテンプレートを作成しておく。
- システムを利用する際、CloudFormationテンプレートからシステム(EC2など)を一気に起動する。
- システムを終了させる際、CloudFormationテンプレートを利用して一気にシステムを削除する。
テンプレートの作成の際には、既存システムからテンプレートを作成するCloudFormerというツールも利用可能。
また、CloudFormationテンプレートをAWS Service CatalogのProductとして登録することで、管理者はCloudFomationテンプレートで作成するシステムをサービスメニュー化できる。システムが必要な各担当者はAWS Service Catalogから登録されたProductを選択してシステム環境を構築することができる。
構造
利点
- 立ち上げ順序が関係ある仮想サーバー(EC2)も、その順序通りに起動するようにスタックテンプレート(CloudFormationテンプレート)を作成できるので、オペーレーションミスを減らすことができる。
- スタックテンプレート(CloudFormationテンプレート)をバージョニングすることで、システム構成の履歴管理も可能。
- 環境の構築だけでなく、破棄も容易に行える。
- スタックテンプレート(CloudFormationテンプレート)は重ねて利用することもできるので、部品としてのテンプレートを幾つか用意し、それらのテンプレートを必要に応じて重ね合わせることで、システムを柔軟に、そして素早く構築することができる。[関連ブログ 1]
注意点
- システム(仮想サーバーなど)がアップデートされたら、スタックテンプレート(CloudFormationテンプレート)内のマシンイメージ(AMI)のIDの記載もアップデートする必要がある。
その他
またこのパターンは、単にシステムをコピーするだけでなく、クラシックなEC2環境からユーザー企業と専用ネットワークでつながる仮想プライベートクラウド「VPC(Virtual Private Cloud)」環境への移行時にも適用できる。
- ツール(CloudFormer)を使って、既存システムのCloudFormationテンプレートを作成。
- 移行先VPC環境(ネットワーク体系、サブネット)を構築。
- 構築したVPCのIDやサブネットのIDをCloudFormationテンプレートに登録。
- CloudFormationテンプレートを使用してシステムを起動。