Slide 1

Slide 1 text

CloudFormationと Terraformを 比較してみた Infrastructure as Code

Slide 2

Slide 2 text

プロフィール 名前:檜山 準(ひやま じゅん) 所属:ITクラウド事業会社 職業:インフラ(クラウド)エンジニア https://twitter.com/hiyanger https://qiita.com/hiyanger https://zenn.dev/hiyanger

Slide 3

Slide 3 text

IaCとは

Slide 4

Slide 4 text

そもそもITインフラは どう構築されるか 一般にはWebブラウザを使った コンソール画面からポチポチ と操作します。

Slide 5

Slide 5 text

ITインフラをコードで構築する プログラミングのようにコードを記述し、 それをインフラ環境に展開(デプロイ)す ることで、すぐに環境を構築することがで きます。 これをIaC(Infrastructure as Code)と 呼びます。

Slide 6

Slide 6 text

コード化(IaC)のメリット 構築における正義である、 スピードと精度の両方を爆上げできます。 再利用できる コードで書かれているので、 同じコードをデプロイすれば 同じ環境をすぐに構築できます。 設定値を確認しやすい 変更管理できる コードで書かれているので、 コードを変更管理(Git)すれば 過去の変更履歴を簡単に辿れます。 このサービスの設定値は どうだっけというとき、 コードをみればすぐに確認できます。 また設計書を起こす必要もないです。

Slide 7

Slide 7 text

CloudFormationと Terraformの比較

Slide 8

Slide 8 text

IaCの種類 クラウドベンダーに依存しない プログラミング言語に近い プルミ CDK

Slide 9

Slide 9 text

AWSにおける CloudFormatinとTerraformの 使い分けイメージ CloudFormation 確実性を重視 さくっとIaCを使いたい、出来る限り安全性を担保したいなど Terraform スピード感を重視 プロジェクトの規模が大きい、環境が割と自由など

Slide 10

Slide 10 text

AWS CloudFormationのメリット GUIが存在する これは初級者にとって大きなメリットです。どう動かすか と、どうなったが一目瞭然です。デプロイの流れも非常に追 いやすいです。 スタック(デプロイの単位)失敗時にリソースが綺麗にロー ルバックされる CloudFormationではとにかくスタックが失敗すれば、スタッ ク実行前の状態に戻してくれます。 利用権限が柔軟 AWSのサービスなので、スタック削除のできるできないの権限 を自由に与えることができます。 ドキュメントが豊富 権限同様、AWSのサービスなのでやはり情報が豊富です。 下図のような環境をCloudFormationで実際に作ってみて感じたメリットです。 実際のスタック画面

Slide 11

Slide 11 text

Terraformのメリット コードを記述するファイルの分割がしやすい リソースが膨大になれば、ファイルを分割する必要がでてきます。 ファイルを分割してしまうとデプロイが分かれるので、その依存関係を保つ必要がありますが、 Terraformではそれが容易に可能です。 デプロイ(apply)失敗してもそのまま次のデプロイができる 直前の失敗したdeployの対処が不要で、構わず次のデプロイが可能です。 そのため構築がスムーズに可能です。 コードが書きやすい 関数が豊富なので、結果コードが書きやすい(短くできる)です。 仕事で実際に使ってみて感じたメリットです。

Slide 12

Slide 12 text

Thanks!! どのIaCツールにもメリットデメリットがあります。 1つにこだわらず、是非状況に応じてIaCを使い分けし てみてください。 GitHub(CloudFormationで使った環境) https://github.com/hiyanger/cfn-std Zenn Books(CloudFormationで使った環境の作り方) https://zenn.dev/hiyanger/books/6d510a8f66093a 本資料 https://speakerdeck.com/hiyanger/cloudformationtot erraformwo-bi-jiao-sitemita