📌 概要
AWSでインフラをコードとして管理する方法(IaC: Infrastructure as Code)には大きく分けて以下の2つがあります。
- Terraform(HashiCorp社製のオープンソース)
- AWS CloudFormation(AWS純正サービス)
どちらもIaCを実現できますが、思想・適用範囲・運用体験に違いがあります。
この記事では以下を整理します。
- TerraformとCloudFormationの違い
- CloudFormationを選ぶべきケース
- 観点ごとの評価比較(業務規模・スピード感・スキル汎用性)
- Yes/Noで即決できるサポート図
1. TerraformとCloudFormationの違い
項目 | Terraform | CloudFormation |
---|---|---|
開発元 | HashiCorp(OSS) | AWS |
対応範囲 | マルチクラウド(AWS, Azure, GCP, ほか多数) | AWS専用 |
言語/定義 | HCL (HashiCorp Configuration Language) | JSON / YAML |
リソース対応スピード | 新サービスの対応はやや遅れることも | AWS新サービスに最速対応 |
状態管理 | tfstateファイルで管理(S3, DynamoDBロック推奨) | AWS側で自動管理(スタック) |
拡張性 | プラグイン・モジュール豊富 | AWS専用のカスタムリソースで拡張 |
学習コスト | HCL習得必要、直感的に書きやすい | YAML/JSONベース、複雑になりがち |
エコシステム | OSSモジュール、コミュニティ活発 | AWS公式ドキュメント中心 |
2. CloudFormationを選ぶべきケース
Terraformが汎用的で便利とはいえ、CloudFormationが有利なケースも存在します。
- AWS専用で閉じた運用
- 新サービスを即利用(TerraformのProvider対応待ちを避けたい)
- 状態管理をAWSに委ねたい(tfstate不要)
- AWS CDK/SAM/StackSetsと統合したい
3. 観点ごとの評価比較
(1) 業務規模
- 小規模・AWS専用 → CloudFormationで十分
- 中〜大規模・マルチクラウドや将来的な拡張 → Terraformが有利
(2) スピード感
- 新サービスを即試したい → CloudFormation
- モジュール化・再利用・CI/CD統合 → Terraform
(3) スキル汎用性
-
Terraform
- AWS以外でも使える
- 転職市場や他社案件でも有利
-
CloudFormation
- AWS専用スキルの習熟には有効
- 他クラウドには転用不可
4. 図解で理解する
アーキテクチャ的な位置づけ
Terraformは「マルチクラウド制御レイヤー」、CloudFormationは「AWS専用の純正制御レイヤー」というイメージです。
5. Yes/Noで判断できるサポート図
フローチャート版
6. まとめ
-
Terraform
- マルチクラウド時代に強い
- スキル汎用性・再利用性・CI/CD統合が優秀
-
CloudFormation
- AWS専用に特化
- 最新サービス対応や状態管理の容易さが強み
👉 結論:
- 「AWS専用・短期集中型」 → CloudFormation
- 「長期拡張・マルチクラウド・スキル汎用性」 → Terraform
7. 筆者の考え
個人的には、どちらか一方に偏るよりも 両方をまんべんなく理解しておくのが一番安心だと思っています。
特に転職市場やキャリア形成を考えると、Terraformをメインにハンズオン経験を積んでおくことが多くの企業にマッチする近道です。
そのうえで CloudFormation の基礎も押さえておけば、AWS特化の現場にもすんなり対応できます。
結局のところ、
- Terraformで幅広さ
-
CloudFormationでAWSの深さ
を押さえておくと、将来の選択肢が一気に広がるのかなと感じています。