0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的な備忘録:CloudFormation と Terraform の設計思想と機能の違いを体系的にまとめてみた

Last updated at Posted at 2025-02-04

はじめに

クラウド環境の普及に伴い、インフラ管理の自動化が求められるようになりました。

その中で、AWSのインフラをコード化するツールとして CloudFormation と Terraform は広く利用されています。

どちらのツールもインフラの構築や管理を効率化しますが、設計思想や機能に違いがあります。

本記事では、これらのツールの違いを整理し、それぞれのメリット・デメリットを比較することで、どのような場面でどちらを選ぶべきかを考えます。

書こうと思ったきっかけ

私自身、AWSを利用する中で、インフラ構築を手作業で行うことの煩雑さを痛感しました。

変更管理の難しさや環境ごとの差異が発生するリスクを減らすため、CloudFormationやTerraformを導入することを検討しましたが、それぞれの違いが分かりづらく、どちらを選べばよいか悩んだ経験があります。

同じように「どちらを選べばいいのか?」と迷う方がいるのではないかと思い、CloudFormationとTerraformの違いを整理し、分かりやすく解説することにしました。

いろいろな観点からまとめてみた

提供元と対応クラウド

項目 CloudFormation Terraform
提供元 AWS公式 HashiCorp
対応クラウド AWS専用 AWS, Azure, GCP, OCI などマルチクラウド対応
  • CloudFormationAWS専用 に最適化されており、AWSの最新機能に素早く対応。
  • Terraformマルチクラウド対応 で、AWS以外のインフラも統一管理できる。

言語と記述方式

項目 CloudFormation Terraform
記述言語 YAML / JSON HCL(HashiCorp Configuration Language)
宣言的 / 手続き的 宣言的(何を作るかを書く) 宣言的(何を作るかを書く)
コードの可読性 YAML/JSONで読みやすいが冗長 HCLは柔軟でシンプル
  • CloudFormationYAML/JSON を使用し、AWS公式のサポートがある。
  • TerraformHCL(HashiCorp Configuration Language)可読性と柔軟性が高い

ステート管理

項目 CloudFormation Terraform
ステート管理 AWSが管理 ユーザーが管理(S3やTerraform Cloudで管理)
  • CloudFormationAWSがステートを管理 し、ユーザーはステートファイルを気にする必要がない。
  • Terraform.tfstate ファイルを自分で管理 するため、適切な管理が必要(例:S3 + DynamoDBでロック管理)。

モジュール化

項目 CloudFormation Terraform
再利用性 一部あり(Nested Stacks, Macros) モジュール機能が強力
公式モジュール AWS-SAM や CDKで強化 Terraform Registryに豊富なモジュール
  • CloudFormationNested Stacks で分割可能だが、再利用性はやや低い。
  • Terraformモジュール化が強力 で、再利用しやすい。

実行スピードとデプロイ方法

項目 CloudFormation Terraform
実行スピード 遅め 速い
適用単位 スタック単位 リソース単位で適用可能
プレビュー Change Sets Plan(事前確認)あり
  • CloudFormationスタック単位 の適用で 変更が遅くなる ことがある。
  • Terraform差分適用が速い(例:特定のリソースのみ terraform apply できる)。

コミュニティとエコシステム

項目 CloudFormation Terraform
エコシステム AWS公式のみ Terraform Registry で拡張性あり
コミュニティ AWS公式が強い オープンソースのため広い
  • Terraform には 豊富な公式・非公式モジュール があり、カスタムプロバイダー も作成可能。

どちらを選ぶべき?

こんな場合は… CloudFormation がオススメ Terraform がオススメ
AWSのみ使う ✅ 最適 ❌ Terraform不要
マルチクラウド管理 ❌ AWS専用 ✅ 必須
AWS公式サポート重視 ✅ AWSサポートあり ❌ HashiCorp依存
カスタムプロバイダーを使う ❌ AWS外は苦手 ✅ 柔軟に対応
シンプルな構成 ✅ 簡単に管理可能 ✅ 柔軟に拡張可能

まとめ

Terraform はより汎用的で強力なツールですが、AWSに専念する場合は CloudFormation の方が公式のサポートが充実しており、運用の手間が少なくなります。

  • AWSに特化するなら CloudFormation

    • 公式サポートあり
    • AWS最新機能への対応が早い
  • マルチクラウドや拡張性を重視するなら Terraform

    • 柔軟で速い
    • エコシステムが広い

今後もこのような自分向けの備忘録をまとめていくので、温かく見守っていただけると嬉しいです。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?