ふくふくHukuhuku Inc.
EP.06Toolbox 9分公開: 2026-05-10

Infrastructure as Code の選び方:Terraform / Pulumi / CDK / SST

「環境を再現可能にする」のはデータ基盤の必須要件。HCL / TypeScript / Python それぞれの iac を比較し、どこで何を選ぶか。

#道具箱#Terraform#Pulumi#iac
シェア

Infrastructure as Code(は環境再現性の要。本記事では主要 4 ツールを比較し、データ基盤での使い分けを提示します。

1. なぜ IaC が必要か

  • 再現性: 同じ環境を何度でも作れる (dev / staging / prod)
  • 変更履歴: Git で誰が何を変えたか追える
  • レビュー: PR でインフラ変更をレビューできる
  • ロールバック: 問題があれば前バージョンに戻せる
  • ドキュメント代わり: コード自体が現状を表す

2. 4 ツール比較

ツール言語強み向くケース
TerraformHCL業界デファクト、エコシステムマルチクラウド
OpenTofuHCLTerraform fork、Apache 2.0ライセンス重視
PulumiTS/Python/Go/C#プログラミング言語の力ロジカル分岐多い
CDKTS/PythonAWS 統合最強AWS 専業
SSTTypeScriptNext.js 連携、サーバーレスNext.js + AWS

3. データ基盤での使い分け

  • / :Terraform が定石
  • Storage( / GCS):Terraform、Pulumi も可
  • IAM / 権限:Terraform、変更履歴の追いやすさ重視
  • Lambda / Cloud Functions:CDK / SST が楽
  • :Helm + Terraform が定石

4. tfstate 管理のベストプラクティス

S3 + DynamoDB ロック (定番)
Code
terraform {  backend "s3" {    bucket         = "my-terraform-state"    key            = "prod/terraform.tfstate"    region         = "ap-northeast-1"    dynamodb_table = "terraform-locks"    encrypt        = true  }}

5. CI/CD への組込み

  • PR 時: `terraform plan` を自動実行、差分を PR コメントに
  • main マージ時: `terraform apply` を自動実行 (本番は手動承認推奨)
  • Atlantis: PR コメントで `atlantis plan` のような対話運用
  • Spacelift / env0 / Terraform Cloud: マネージド runner、ロック管理込み

6. よくある落とし穴

  • 手動変更との差分: 誰かがコンソールで変更すると、次の plan で破壊的変更が出る
  • state ファイルの破損: バックアップ必須 (S3 のバージョニング有効化)
  • tfstate の競合: 複数人同時 apply はロック必須
  • 機密情報: tfstate に DB パスワード等が平文で入る → 暗号化 + アクセス制限
  • module の循環参照: 設計時に依存関係を明確に

ふくふくの進め方

IaC 化されていないインフラの棚卸しから、段階的 Terraform 化を 1〜2 ヶ月で。既存リソースの import → 新規変更を tf 経由に → 全体 IaC 化、の流れ。

次回予告

EP.07 はローカル開発環境を綺麗に保つ道具:mise / direnv /

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp