AWSのIaCはどれがいい?

AWS

インフラストラクチャー・アズ・コード(IaC)もはや、一般化してます。コンパネで作っていてもIaC化を考えてない企業はないでしょう。

AWSの構築を外注するときに、コードで要求する企業も多いです。自社のアカウント内に一気にインフラを作るためですね。他社にアカウント渡して変なもの作られるリスクを避けたいと考えたり、障害でリージョン全滅したときに他のリージョンで再作成して復旧させるといったやり方が考えられます。

で、AWSのIaC化の方法としてはCloudFormation、terraform、CDKの3つが考えられます。その利点と欠点を挙げておきます。

○CloudFormation

jsonかyamlでプロパティを書いていってインフラを記述するというものです。

利点

 パラメーターシートの代わりになる。
 マネコンから構築するのでわかりやすい
 サポートに相談することができる

欠点

 細かすぎるのでマニュアル(それもAWS直訳の)と首っ引きになる
 json選ぶとコメントが書けず、なのでyamlでコメント書くと日本語が使えなかった様な気が(うろ覚え)

○terraform

HashiCorpが作成したオープンソースのインフラ作成ツール。AWSだけでなくGCPやAzureなどにも対応。IaCシェアは一番多いと思われる。

 独自のHCLという言語使うがそんなに難しい言語じゃない。一応分岐やループ文はあるが使わなくても書ける。

利点

 上記のように他のクラウドに対応していて、使う企業も多いので覚えておいて損はない。
 本が出ていて、しかも、Kindle Unlimitedという定額読み放題に登録されているので電子本読みにはラッキー。
 HashiCorpのマニュアルとサンプルコードが懇切丁寧で迷うことはほとんどない。
 サポートはあるのか? 一応、slackのユーザー会のチャンネルがあるのでそこで相談できる(詳しい方がいつもいるので。……本職はなんだろう?)

欠点

 まあ、CloudFormationと同じくプロパティ一々書かないといけないよね(省略できるのはできるが)

○CDK

 プログラム言語(TypeScriptかPython)で書く。コードをCloudFormationのコードにコンパイルして実行する。

利点

 CloudFormationで数百行のコードを数行で書くことができる。
 プログラマにはわかりやすい。
 AWSサポートに相談できる(但し、コードの作成は別料金らしい……)

欠点

 インフラエンジニアがシェルを作れてもTypeScriptやPythonに精通してるわけないだろ!
 少なくとも社員に1人はCDKに詳しい人が必要。業務委託の人は居なくなったらロストテクノロジーとなってしまうので避けた方が無難。
 そんなに普及してない。
 バージョンアップの頻度が高め(2023/03/28現在)
 マニュアルページの記述がバージョンアップに追いついてないので戸惑うし、サンプルもクラス使ってないのにthisを使用していてコピペして動かないという事態があって敷居が高すぎる。

結論

 CDK良いように見えるけど、おっちゃん悪いこと言わないからterraform使いなさい。なお、マネコンで作成したリソースをコードに落とすアプリはCloudFormationもterraformもあります。terraformはterraformerってアプリです。CDKは無理。私は思い余って出始めのChatGPTに訊いて作りました。AIバンザイ!!!

コメント

タイトルとURLをコピーしました