Slide 1

Slide 1 text

TerraformをやめてCDKでReStartしたあと、 CDKをやめてCDK for TerraformでReStartした話 三浦 大幸

Slide 2

Slide 2 text

アジェンダ 自己紹介 Terraform / CDK / CDK for Terraformとは TerraformからCDKへのReStart CDKからCDK for TerraformへのRestart 実際に使うツールとしてどれを選ぶべきか 最後に

Slide 3

Slide 3 text

氏名 三浦大幸 技術スタック インフラ バックエンド フロントエンド iOSアプリ 自己紹介

Slide 4

Slide 4 text

Terraform / CDK / CDK for Terraformとは

Slide 5

Slide 5 text

IaC Infrastructure as Code

Slide 6

Slide 6 text

IaCとは インフラの構造をコードとして管理すること インフラ構築が再現性のあるものになる コード自体がドキュメントの機能を持つ ツールの例 Terraform CDK CDK for Terraform

Slide 7

Slide 7 text

HashiCorp社が提供しているIaCツール 様々なクラウドに対応 言語はHCL(HashiCorp Configuration Language) 設定を書いていくようなイメージ Terraformとは

Slide 8

Slide 8 text

CDKとは AWSが提供しているIaCツール 様々な言語で書くことができる 以下の手順で実行 1. CDKとしてコードを作成 2. CloudFormationの形式に変換 (AWSの公式IaCツール) 3. CloudFormationとして実行

Slide 9

Slide 9 text

CDK for Terraform (CDKTF) とは HashiCorp社が提供しているIaCツール CDKの仕組みを使っており、様々な言語 で書くことができる 以下の手順で実行 1. CDKTFとしてコードを作成 2. Terraformの形式に変換 3. Terraformとして実行

Slide 10

Slide 10 text

TerraformをやめてCDKでReStartしたあと、 CDKをやめてCDK for TerraformでReStartした話

Slide 11

Slide 11 text

TerraformからCDKへのReStart

Slide 12

Slide 12 text

基本的にはTerraformを 使用していたが… メディアでは、基本的にTerraformを使用 便利なツールであるものの、以下のような問題点も 複雑なことをやろうとすると可読性が落ちやすい あまり使われない言語であり、学習コストが高い 新規サービスを作るにあたり、これらを解消するため CDKを使うこととした

Slide 13

Slide 13 text

CDKに変えてよかったこと CDKに変えることで、以下の利点があった 複雑なことをやろうとすると可読性が落ちやすい → 複雑な処理でも可読性を保つことができる あまり使われない言語であり、学習コストが高い → 使い慣れた言語を使えるので、学習コストが低い ただし、別の問題もまた発生した… Terraform CDK

Slide 14

Slide 14 text

CDKからCDK for TerraformへのReStart

Slide 15

Slide 15 text

CDKの問題点 CDKにも問題はあった CDK自体の学習コストがかかる CloudFormationの学習コストがかかる ドリフト周りが扱いづらい 特に3つめは、継続的にIaCで開発していく上ではかな り致命的に感じた そこで、まだリリース前だったこともありCDKTFに変 更することにした CloudFormation CDK ドリフト

Slide 16

Slide 16 text

CDKTFに変えてよかったこと CDKTFに変えることで、以下の利点があった CloudFormationの学習コストがかかる → Terraformに知見があれば学習コストが小さい ドリフト周りが扱いづらい → ドリフトの対処が容易 CDKそのものの学習コストは掛かってしまう Terraform自体の懸念点考えると許容範囲か HCLだと、複雑なことをしようとしたとき可読性が落ちる HCLの学習コストが高い CDK ドリフトの自動マージ

Slide 17

Slide 17 text

実際に使うツールとしてどれを 選ぶべきか

Slide 18

Slide 18 text

CDKTFにデメリットは無い のか? CDKTFにも以下のようなデメリットがある CDK自体の学習コストは掛かる Terraformの知見がなければ、Terraformの学習コ ストが掛かる v1になるまでは破壊的変更が起こる可能性がある 必ずしも「CDKTFが最強」というわけではないので注意 https://github.com/hashicorp/terraform-cdk https://developer.hashicorp.com/terraform/cdktf (2024/02/14時点)

Slide 19

Slide 19 text

CloudFormation に知見がある Terraform に知見がある どちらにも知見がある/ ない シンプルなインフラ構成 CloudFormation Terraform 個人的にはTerraform (ドリフトに有利) 複雑なインフラ構成 CDK CDKTF 個人的にはCDKTF (ドリフトに有利) どのサービスを選ぶべきか 上記以外にも、以下の方法が考えられる Webコンソールで管理する 上記以外のツールを使用する

Slide 20

Slide 20 text

最後に

Slide 21

Slide 21 text

最後に 今回のケースでは、以下のように使うツールを 変更した Terraform 1. CDK 2. CDKTF 3. ただし、これは開発対象の複雑さ・元々持ち合 わせていた知見などをもとに決めたもので、常 に最適とは限らない 状況に合わせ、適切な選択をするのが良い