【要約】AWS CDKとTerraformで書き比べてみた - Lambda × S3 署名URLアップロードAPI編 [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
ソーイ株式会社のエンジニアが、複数サービスを管理する際のヒューマンエラーを防ぐため、IaCの導入を検討している。既存の手順書による管理には、以下の課題が存在する。
- ・構成管理の属人化とミス。
- ・IaCツールの選定基準となる具体的な比較データの不足。
- ・ツールごとの記述量や運用負荷の差異の不明瞭さ。
// Approach
筆者が同一の構成(Lambda × S3 署名URL API)を両ツールで実装し、多角的な比較を行った。具体的な手法は以下の通りである。
- ・AWS CDK (Python) による高レベル抽象化を用いた実装。
- ・Terraform (HCL) によるリソース単位の明示的な実装。
- ・コード量、IAM設定、State管理・デプロイサイクルの3軸による比較分析。
// Result
実装の結果、両ツールは得意領域が明確に異なることが判明した。比較による成果は以下の通りである。
- ・コード量: CDKは約44行、Terraformは約80行と、CDKが記述効率で勝る。
- ・IAM設定: CDKはメソッド一つで完結するが、Terraformは詳細な定義を要する。
- ・運用面: CDKはAWSにState管理を委ねられる。Terraformは詳細な差分確認とマルチクラウド対応に優れる。
Senior Engineer Insight
> 実戦投入においては、開発体験と運用の厳格性のトレードオフを考慮すべきだ。AWSに特化し、開発速度を最大化するならCDKが極めて強力である。対して、インフラの境界がAWS外に及ぶ場合や、IAMの明示的な監査を重視するならTerraformが妥当だ。State管理の運用負荷を許容できるかが、Terraform採用の分水嶺となる。