Platform Engineering実践入門2025 - 開発基盤の整理と自動化
Platform Engineeringの基本概念から実装課題まで解説。内部開発者ポータル、セルフサービス化の現実的な導入方法と、企業環境での実装における課題を具体的な事例とともに紹介します。
Terraform最新バージョンの新機能、モジュール設計のベストプラクティス、マルチクラウド運用、エンタープライズでの導入事例まで、2025年版の包括的なTerraformガイドを提供します。
Infrastructure as Code(IaC)の代表的ツールである Terraform は、2025 年も進化を続けています。 本記事では、最新バージョンの新機能、エンタープライズ環境での実践的な活用方法、そして日本企業での導入事例まで、包括的に解説します。
安定版の最新リリース
新機能のベータ版
terraform {
backend "oci" {
bucket_name = "terraform-state"
namespace = "my-namespace"
region = "us-ashburn-1"
}
}
# 並列実行でテストを高速化
terraform test -parallelism=4
新しい terraform stacks
コマンドにより、複数の構成をスタックとして管理できるようになります。
# スタック操作の例
terraform stacks init
terraform stacks plan
terraform stacks apply
Deferred actions 機能(アルファ版)により、未解決の変数を含む変更を延期できるようになりました。 これにより、段階的なデプロイがより柔軟に行えます。
プラン | リソース数 | 価格 | 主な機能 |
---|---|---|---|
Free | 500まで | 無料 | リモートstate、リモート実行、プライベートレジストリ |
Standard | 500以降 | $0.00014/時間/リソース | SSO、3並列実行、5ポリシー |
Plus | 無制限 | 要問い合わせ | ドリフト検出、継続的検証、無制限ポリシー |
Enterprise | 無制限 | $15,000~/年 | 全機能+セルフホスト、監査ログ |
1 時間あたりのピークリソース数で課金されます。 例:3:05pm に 2,000 リソース作成、3:30pm に 500 リソース削除しても、その時間は 2,000 リソース分の課金となります。
チャートを読み込み中...
terraform-modules/
├── networking/
│ ├── main.tf
│ ├── variables.tf
│ ├── outputs.tf
│ ├── versions.tf
│ └── README.md
├── compute/
│ └── ...
└── security/
└── ...
# 開発環境:柔軟なバージョン制約
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "~> 5.0" # 5.x系の最新を利用
}
# 本番環境:厳密なバージョン固定
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "= 5.1.2" # 特定バージョンに固定
}
# モジュール開発:プロバイダー要件
terraform {
required_version = ">= 1.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = ">= 4.0, < 6.0"
}
}
}
チャートを読み込み中...
module "compute" {
source = "./modules/compute"
providers = {
aws = aws.tokyo
azure = azurerm
google = google
}
cloud_provider = var.cloud_provider
instance_type = var.instance_type
}
locals {
common_tags = {
Environment = var.environment
Project = var.project_name
ManagedBy = "Terraform"
}
}
GitHubへのコミット
tflint, tfsec, checkovによる検証
terraform planの自動実行
プルリクエストでの確認
マージ後の自動適用
# S3バックエンドの暗号化設定
terraform {
backend "s3" {
bucket = "terraform-state-bucket"
key = "prod/terraform.tfstate"
region = "ap-northeast-1"
encrypt = true
kms_key_id = "arn:aws:kms:ap-northeast-1:123456789012:key/xxx"
dynamodb_table = "terraform-state-lock"
}
}
data "aws_secretsmanager_secret_version" "db_password" {
secret_id = "prod/db/password"
}
resource "aws_db_instance" "main" {
password = data.aws_secretsmanager_secret_version.db_password.secret_string
}
provider "vault" {
address = "https://vault.example.com"
}
data "vault_kv_secret_v2" "db_creds" {
mount = "secret"
name = "database/creds"
}
data "azurerm_key_vault_secret" "db_password" {
name = "db-password"
key_vault_id = azurerm_key_vault.main.id
}
対象となるクラウドが数百台、数千台に及ぶ場合でも、 Terraform により人為的なミスを引き起こすことなく 正確かつスピーディな対応が可能になりました。
項目 | Terraform | OpenTofu |
---|---|---|
ライセンス | Business Source License (BSL) | Mozilla Public License 2.0 (MPL) |
商用利用制限 | 競合サービスでの利用制限あり | 制限なし |
管理主体 | HashiCorp(現IBM) | Linux Foundation |
State暗号化 | Enterprise版のみ | 標準機能として提供 |
OpenTofu は Terraform 1.5.6 からフォークされ、構文的に完全互換です。 既存の Terraform 構成をそのまま使用できますが、将来的には機能の乖離が予想されます。
GitOpsアプローチの採用
テスト戦略の実装
# Lintチェック
tflint .
# セキュリティスキャン
tfsec .
# コンプライアンスチェック
checkov -d .
モニタリングとアラート
PoC実施、チーム教育
開発環境での利用開始
ステージング環境への拡大
本番環境での運用、ガバナンス確立
Terraform 2025 は、エンタープライズ環境での IaC 実践において重要な進化を遂げています。 最新機能の活用、適切なモジュール設計、セキュリティベストプラクティスの実装により、 大規模なインフラストラクチャを効率的かつ安全に管理できます。