Slide 1

Slide 1 text

色々なIaCツールを実際に触って比較してみる 
 2024/10/28 JAWS-UG 名古屋
 IaC運用のリアルを語りたい!LT大会
 入井 啓太


Slide 2

Slide 2 text

2 自己紹介 名前:入井啓太(@iridon0920) 所属:クラスメソッド株式会社    ゲームソリューション部/業務効率化ソリューション部 肩書:サーバーサイドエンジニア 業務領域: ゲーム開発運用支援      SaaS導入支援(Zendesk等) 居住:名古屋 趣味:ゲーム、漫画、猫、筋トレなど

Slide 3

Slide 3 text

ぶっちゃけあんまり触っていないです 私のIaC利用状況 ● クラウド系はAWS CDKを多少触ったことある程度 ○ でかい環境の構築・運用はやったことがない ● Dockerは開発環境構築とかで昔触っていた ○ IaCの魅力はDockerで学んだ ● IaCコードはプログラム言語の方がやりやすい 今回は初心者目線で各種 IaCツールを触った感想を話します。

Slide 4

Slide 4 text

クラウド系はいくつかあるけど何が違うんだろう?

Slide 5

Slide 5 text

実際に触ってみる

Slide 6

Slide 6 text

試作環境の構成図

Slide 7

Slide 7 text

実際に触ってみる 1. AWS CDK 2. Terraform 3. Pulumi

Slide 8

Slide 8 text

AWS CDKの概要 AWSによるAWSのためのIaCツール ● 2018年公開 ● 各種プログラミング言語でリソース定義を書ける ○ TypeScript, Python, Java, C#, Go ● Cloudformationテンプレートを生成 ○ 実際のリソース作成はこれを使う ● Cloudformationより簡潔に書ける ● AWS以外には対応していない

Slide 9

Slide 9 text

AWS CDKコード例(VPC、オートスケーリンググループ)

Slide 10

Slide 10 text

AWS CDKコード例(ACM証明書発行->Cloudfrontでの利用)

Slide 11

Slide 11 text

AWS CDKの感想 ● 慣れ親しんだプログラミング言語を使って書けるのが良い ● パラメータ指定が最低限で済むように抽象化されている ○ 今回の3つのツールで記述量が一番少なかった ○ 必要に応じて細かく設定することも可能 ● AWS純正なので安心感がある。 ● 今回はAWS環境のみなので何の問題も無かったが、もしマルチ クラウドや各種SaaSと連携した環境を構築する場合悩ましくなる

Slide 12

Slide 12 text

実際に触ってみる 1. AWS CDK 2. Terraform 3. Pulumi

Slide 13

Slide 13 text

Terraformの概要 Hashicorp社による様々な環境に対応した IaCツール ● 2014年公開 ● 各種パブリッククラウドだけでなくSaaS製品、仮想環境などのIaC 化に利用可能 ● コードは独自のHCLという記法で書くのが基本 ○ CDK for Terraformではプログラミング言語を利用可能 ● Terraform Cloudという管理環境をSaaSで提供

Slide 14

Slide 14 text

Terraformコード例(VPC、オートスケーリンググループ)

Slide 15

Slide 15 text

Terraformコード例(ACM証明書発行->Cloudfrontでの利用)

Slide 16

Slide 16 text

Terraformの感想 ● 独自の記述方法なので学習コストがかかる ○ CDK for Terraformである程度クリアできそう ● AWS CDKと比べると記述量が多い ○ 逆に言えばリソースの中身を細かく管理することができる ● 今回の環境はAWSオンリーだが、マルチクラウド等複数環境を1 つのコードベースで管理できるのは非常に大きな強み

Slide 17

Slide 17 text

実際に触ってみる 1. AWS CDK 2. Terraform 3. Pulumi

Slide 18

Slide 18 text

Pulumiの概要 Pulumi社によるOSSのIaCツール ● 2017年公開 ● Terraform同様各種パブリッククラウドやSaaS製品に広く対応 ○ Terraformで提供しているプロバイダもサポート ● 各種プログラミング言語でリソース定義を書ける ○ TypeScript, Python, Java, C#, Go, YAML ● Pulumi CloudというSaaSの管理環境を標準で提供 ● Pulumi AIという生成AI機能を使用可能

Slide 19

Slide 19 text

Pulumiコード例(VPC、オートスケーリンググループ)

Slide 20

Slide 20 text

Pulumiコード例(ACM証明書発行->Cloudfrontでの利用)

Slide 21

Slide 21 text

Pulumiの感想 ● AWS CDK同様プログラミング言語を使って書ける ○ ただし記述量は多くリソースの中身を細かく管理する形 ● Pulumi Cloudは標準でLocalから利用可能 ○ Terraform CloudはLocalで使う場合トークン設定が必要 ● Terraform同様、幅広い環境に対応しているのは明確な強み ● Pulumi AIはユニークだが、生成されたコードは細かい調整が必 要 ● Local利用時、AWSのMFA認証に対応していないなど、細かい部 分で他ツールよりも機能が不足している印象

Slide 22

Slide 22 text

3つのツールを使った印象 ● AWSしか使わないならAWS CDKが学習コスト含めて一番使いやす い気がする。 ● マルチクラウド等が必須であればTerraformかPulumiが良い。 ○ Terraformは学習コストの問題はあるが、Terraform CDKで解決 できそう。記述の抽象化も対応しているらしい。 ○ TerraformとPulumiはどちらも必要な機能は整っており、後は細 かな機能の違いでどちらを選択するか決めることになりそう。 結論:何がベターなツールかは状況による

Slide 23

Slide 23 text

ありがとうございました