##コードによるインフラストラクチャ構成管理
ハードウェアを自社で調達して行うインフラストラクチャ構築では、一般的にインフラストラクチャ担当のエンジニアが環境構築手順書を作成して、環境のセットアップを行います。
そのときの課題として、以下のようなことが挙げられます。
- 作業中にミスが発生する可能性がある
- 導入後に構成変更がることを考慮して、インフラストラクチャ管理(設計書やサーバーのパラメータなど)が必要
アプリケーション開発においても、以前はプログラムの変更やリリース作業で同様の問題が起きていました。しかし、現在は、サーバーへのデプロイ作業が自動化できるようになるなど、作業の効率化に有効な手段が一般化しています。
このようにアプリケーション開発で実践されているコード管理・作業自動化という手法をインフラストラクチャ構築にも導入して、インフラストラクチャ構築作業内容をコードで記述して管理できるようにした**Infrastructure as Code(IaC)**という考え方があります。
AWSでは、定義ファイルをコーディングし、コードを実行することでリソースをプロビジョニングすることができます。インフラストラクチャ環境の運用をコードで管理しているため、まったく同じ作業であれば以前に実行したコードをそのまま流用できます。構築作業に変更が生じた場合は、該当箇所のみを修正してコードを実行することにより修正版のインフラストラクチャ環境を構築することができます。
これにより、従来は煩雑だったインフラストラクチャ構築手順のバージョン管理も容易になりました。
###CloudFormationのコード管理
AWSにおいてIaCを実現したのが、AWSリソースをプロビジョニングするサービスである**AWS CloudFormation(CloudFormation)**です。
「テンプレート」と呼ばれるプロビジョニングのための定義ファイルを用意し実行することで、定義内容に従ってAWSリソースを構築することができます。
AWSにおいてIaCを実現したのが、AWSをリソースをプロビジョニングするサービスである**AWS CloudFormation(CloudFormation)**です。