【あいえーしー】

IaC(Infrastructure as Code) とは?

最終更新:
💡 インフラ構築を「手作業」から「コード」に変える

サーバーやネットワークなどのインフラ構成をコードで定義し、アプリのコードと同じようにバージョン管理・レビューしながら構築・変更する手法。手作業や手順書に頼る属人化を減らせる。

📌 このページのポイント
手動管理 vs Infrastructure as Code 手動管理 コンソール 手動クリック操作 SSH接続 直接設定変更 構成ドリフトが起きやすい 環境ごとの差異がたまりやすい 再現しにくい 手順書が 古くなりがち 属人化 担当者 依存 追跡しにくい 変更履歴 が残りにくい IaC管理 コード (Git) Terraform / CDK 自動適用 plan → apply 再現しやすい 同じ定義から構築 メリット ✓ バージョン管理 ✓ コードレビュー ✓ 変更履歴追跡 ✓ テスト可能 ✓ チーム共有 ✓ 変更前に差分確認 ✓ 定義を再利用
Infrastructure as Codeの考え方
ひよこ ひよこ
なんで手動設定じゃダメなの?
ペンギン先生 ペンギン先生
手作業や手順書だと、手順を知っている人に頼りがちだし、手順書が更新されないと新しい環境を同じように作れなくなることがあるんだ。IaCなら構成をコードとして残せるから、変更履歴を追えて、同じ定義から環境を作り直しやすくなるよ。
ひよこ ひよこ
Terraformってどんなもの?
ペンギン先生 ペンギン先生
HashiCorp社のIaCツールで、「プロバイダー」を通じてAWS、Azure、Google Cloudなど多くのサービスのAPIを操作できるよ。HCLという言語で目指す状態を書いて、「terraform plan」で変更内容を確認してから「terraform apply」で反映するんだ。変更前に差分をレビューできるのが便利だね。
ひよこ ひよこ
「宣言的」ってどういう意味?
ペンギン先生 ペンギン先生
手順を1つずつ書くのではなく「こういう状態にしてほしい」と最終形を書くことだよ。Terraformは現在の状態と定義を比べて、足りない分を作り、余分な分を消す変更案を出す。例えば定義を「サーバー3台」にしておけば、今2台なら1台追加する案になるんだ。
ひよこ ひよこ
IaCの注意点は?
ペンギン先生 ペンギン先生
Terraformは今の構成を「state」というファイルに記録していて、そこにはデータベースの初期パスワードのような秘密情報が入ることもあるんだ。だからstateは暗号化できるリモートの保存先で管理するのが推奨されているよ。パスワードなどをコードに直接書かないことも大事だね。
ひよこ ひよこ
障害対応で急いで手動変更しちゃったらどうなる?
ペンギン先生 ペンギン先生
コードと実際の状態がずれてしまうよ。これを「ドリフト」と呼ぶんだ。Terraformなら「terraform plan -refresh-only」で外部で行われた変更を確認できるから、確認したうえでコード側に反映するか、コードの状態に戻すかを決めようね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「IaC」って出てきたら「インフラをコードで定義して、レビューしながら自動で構築・変更する手法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Infrastructure as Code」 = コードとしてのインフラ
💬 Infrastructure(インフラ)をCode(コード)として扱うことで、バージョン管理やレビューといったソフトウェア開発のやり方をインフラにも適用するよ

参考資料

← 用語集にもどる