Infrastructure as Code

DevOps の基本原則として、デベロッパーがコードを扱うのと同じ方法でインフラストラクチャを扱う必要があります。アプリケーションコードには定義済みの形式と構文があります。プログラミング言語のルールに従ってコードを記述しないと、アプリケーションを作成できません。コードは、バージョン管理システムまたはソース管理システムに保存され、そこでコードの開発、変更、バグ修正の履歴が記録されます。コードのコンパイルや、アプリケーションへの組み込みを行う場合、一貫性のあるアプリケーションが作成され、ビルドには再現性と信頼性があることが期待されます。

Infrastructure as Code の実践とは、同じ厳密なアプリケーションコード開発をインフラストラクチャのプロビジョニングに適用することを意味します。設定はすべて宣言型アプローチで定義し、アプリケーションコードと同様に、AWS CodeCommit などのソース管理システムに保存する必要があります。また、インフラストラクチャのプロビジョニング、オーケストレーション、デプロイで、Infrastructure as Code の使用をサポートする必要があります。

従来、インフラストラクチャのプロビジョニングにはスクリプトと手動プロセスの組み合わせが使用されていました。これらのスクリプトは、バージョン管理システムに保存されている場合も、テキストファイルやランブックで手順ごとに記録されている場合もありました。多くの場合、ランブックの記述は、ランブックの使用またはスクリプトの実行とは別の人物によって行われます。スクリプトまたはランブックの更新頻度が十分でなければ、デプロイ時に致命的な問題が生じる可能性があります。そのような場合は、新しい環境の作成において、必ずしも再現性、信頼性、一貫性が保たれない結果になります。

これとは対照的に AWS では、DevOps に重点を置いたインフラストラクチャの作成と保守の方法を提供しています。ソフトウェアデベロッパーがアプリケーションコードを記述するように、AWS では、プログラムによって記述および宣言するという方法でインフラストラクチャの作成、デプロイ、保守を行うサービスを提供しています。このようなサービスを使用することで、厳密さ、明確さ、信頼性を確保できます。このホワイトペーパーで説明する AWS のサービスは、DevOps の手法の中核であり、AWS DevOps の高レベルの原則とプラクティスの基盤を形成しています。

AWS では、インフラストラクチャをコードとして定義するために以下のサービスを提供しています。