SINKCAPITAL
SINKCAPITAL
Comapny Blog
CloudFormationとterraformの比較
tech

背景

 弊社ではAWSとGCP両方のご提案をさせていただく機会が多いため、 CICDとしては両方対応可能なterraformを利用する機会が多かったのですが、 今回AWS CloudFormationに関するご支援もさせていただける機会があり、 使う中で感じた違いをブログとしてまとめようと思います。

利用して感じた主な違い

 実際に利用していて感じた主な違いについて以下にまとめています。 (網羅性はなく個人的に感じた点だけをまとめているので、あくまで参考程度にみていただければと思います)

参照できる値の種類

 まず一番大きく感じた違いは参照できる値の種類でした。 terraformは「リソースタイプ名.リソース名.参照値名」と言った変数指定の方法で値を参照し、 CloudFormationではRefを利用してリソースIDなどの値を参照するのですが、 terrraformがほぼリソースに関するほぼ全ての値を参照できるのに対し、 CloudFormationはリソースIDなど限られた値しか参照することができませんでした。 例えばCloudFrontであれば、 IDかドメイン名しか参照することができません。
 個人的にこの点は完全にCloudFrontの方が使いにくいと思っており、 例えば値を指定しなかった際にデフォルト値が割り振られる値があったとしても、 その値を参照することができなければデフォルトではなくわざわざ値を指定する必要が出てきます。

導入ハードル

 次に感じたものが導入ハードルです。 terraformだと実行までに最低限ローカル環境構築などが必要になるのに対し、 CloudFormationだとコンソールから操作することができるので、 yamlさえあればコンソール上から簡単にデプロイすることができます。 また記載言語もterraformが独自言語であるHCLであるのに対して、 yamlやjsonを使うことができるので扱いやすくなっています。

柔軟性

 3つ目に感じた違いが柔軟性の違いです。 例えばterraformが「loop処理を噛ませる」「shellを実行させる」「hash値をパラメーターで持たせる」 と言った様々なことができるののに対し、CloudFormationには特にそう言った機能がありません。 そのため例えばloop処理をCloudFormationでやろうとした場合は、 Jinjaなどを使って複数リソースが記述されたyamlを作る必要があります。 必要不可欠な機能ではないもののterraformで運用を行っていた際そういった機能に何度か助けられたので、 要件が複雑になった際にCloudFormationで対応できるかどうかは不安が残ります。

比較結果

 今回感じた違いをまとめると以下表のような結果となりました。 これを見るとちょっとしたものはCloudFormationで作っても問題ないが、 ちゃんと管理を行う場合はterraformを利用した方が良いのではないかと感じています。

項目CloudFormationterraform
参照できる値の種類
導入ハードル×
柔軟性×

感想

 結果として組めるのであればterraformを利用した方が良さそうという結果になったのですが、 「導入ハードル」はユースケースによってはかなり重要な項目になってくると思っており、 例えば「AWSで動くアプリケーションを配布したい」と言った場合では間違いなくCloudFormationの方がメリットが大きいと思っています。 そのため今後はterraformだけではなく各特性を考慮したご提案をしていければと思っています。 またどちらもアップデートが進んでいるので、 そちらについても逐一追っていきたいと思います。
クラウドでのデータ基盤の運用をしていくにあたってterraformやCloudFormationの知識は必要不可欠なものです。 弊社では、これらの技術を使い多くのクライアント様のデータ基盤の運用の実績があります。 お困りの際は是非こちらよりお問い合わせください。

参考リンク

Nuxt上でのd3を利用した散布図の作成方法
櫻井 裕司
2021/10/29 櫻井 裕司
techdataAnalytics
クリック可能な散布図をNuxtjs上で作成する場合にd3.jsが汎用性が高く便利でした。利用するにあたって難しかった点などを備考録としてまとめています。
アクセスログを可視化しGAのデータを直感的に理解できる型態にする試み(ネットワーク型)
櫻井 裕司
2021/09/05 櫻井 裕司
techdataAnalytics
ビジネスに活きる分析を進める上で弊社では「理解できる」ことを重要と考えており、特に直感的理解は可視化を進める上で特に重要だと考える内容の一つです。弊社では様々なお客様のデータ分析を進める上で常により示唆の大きい可視化を追求しており、今回はその中で最近試みているネットワーク側の可視化についてまとめたいと思います。
代表櫻井による特別講演会が白陵高等学校で開かれました
櫻井 裕司
2021/07/31 櫻井 裕司
eventpersonal
2021年の夏に兵庫県の私立白陵高等学校において、代表櫻井による特別講演会を開催いたしました。今振り返って高校の頃の自分に伝えたいことについてお話しました。
Nuxtで動的ページを随時追加する場合にNot Foundとなる
櫻井 裕司
2021/05/31 櫻井 裕司
tech
Nuxtで動的ページを登録する方法はありますが、登録後に随時コンテンツが追加される際はNot Foundとなってしまうので、そう言った際の対処方法について
GKEをやめてCloud Runを始めてみました
櫻井 裕司
2021/04/19 櫻井 裕司
tech
firebaseで構築したシステムの裏で動かすバッチの負荷が大きく、cloud functionsで終わらなかったためCloud Runを利用してみました。動作確認までの知見等を雑多にまとめてみました。
AWSをやめてfirebaseを使い始めて感じたメリットやデメリットとそれの対応策(LT登壇内容)
櫻井 裕司
2021/03/26 櫻井 裕司
techeventpersonal
みそかつウェブ・GDG Nagoya主催の「around firebase」とCloud Native Nagoya主演の「Cloud Native Nagoya」にてfirebaseのLTをさせていただきました。そこで会話させていただいたfirebaseを使い始めて感じたメリット・デメリットについてまとめています。
PWA+SPAのwebアプリ作成にnuxtjs+firebaseがめちゃ便利だった
櫻井 裕司
2021/01/16 櫻井 裕司
tech
PWA+SPAのwebアプリを作る際にnuxt.js+firebaseを合わせて利用すると便利だったので知見を書き留めています
s3のhostingでPWAを導入する方法
櫻井 裕司
2020/12/19 櫻井 裕司
tech
アプリ作成時にpwaが比較されることが多かったですが、実際にpwaを実装した経験がなかったため今回自社サイトをPWA化してみました。
dockerでseleniumを動かしてみる(chrome_headless)
櫻井 裕司
2020/12/06 櫻井 裕司
tech
seleniumの相談をいただくことが増えたため、seleniumの勉強もかねてdockerでの実行テストを行いました
THE DECKのイベントにお邪魔させていただきました
本林 秀和
2020/12/05 本林 秀和
eventpersonal
大学コンソーシアム大阪のイベント@The DECK にお邪魔してきました
flutter(dart)を触ってみた感想
櫻井 裕司
2020/11/18 櫻井 裕司
tech
android向けアプリへの対応も考慮してflutter(dart)を触ってみたので、感想をまとめておこうと思います。理解が深まっていく中で定期的にまとめていければと思います。
代表本林による特別講演会が滝高校で開かれました
本林 秀和
2020/11/07 本林 秀和
eventpersonal
2020年11月7日(土)愛知県の私立滝高校において、代表本林による特別講演会を開催いたしました。IT業界やデータサイエンスについてお話しました。
AWS・GCPを選ぶ際の観点
櫻井 裕司
2020/10/28 櫻井 裕司
tech
AWSかGCPを選ぶ際の観点について書き留めておこうと思います
iosのcallkit周りでできること
櫻井 裕司
2020/08/24 櫻井 裕司
tech
新規事業を検討する上でios(swift)の電話周りでできることを調査したため、調査結果をブログとして残しています。
【個人ブログ】CTOの株運用ブログ_順調な滑り出し
櫻井 裕司
2020/07/19 櫻井 裕司
personalstock
長年放置してた株に少し手を出してみました。自分なりに少し情報整理と分析と予想をしたので記事にしてみます。
総務省特定サービス産業実態調査のデータ分析
櫻井 裕司
2020/07/18 櫻井 裕司
techdataAnalytics
総務省がAPIで市場データを公開しており、分析技術向上と市場感を養うことを目的に定期的に分析を行なっていこうと思います。今回は「特定サービス産業実態調査」について見ていこうと思います。
「お絵かきつみ木バトル」をリリースしました
櫻井 裕司
2020/07/12 櫻井 裕司
techapp
タスク管理を二次元的に行うアプリ「お絵かきつみ木バトル」をリリースしました。SinkCapitalはデータコンサルですが、知見蓄積のため様々な媒体での実験的開発を行っています
総務省工業統計調査のデータ分析
櫻井 裕司
2020/07/11 櫻井 裕司
techdataAnalytics
総務省がAPIで市場データを公開しており、分析技術向上と市場感を養うことを目的に定期的に分析を行なっていこうと思います。今回は「工業統計調査」について見ていこうと思います。
【個人ブログ】CTOが個人的に株をはじめました
櫻井 裕司
2020/07/08 櫻井 裕司
personalstock
長年放置してた株に少し手を出してみました。自分なりに少し情報整理と分析と予想をしたので記事にしてみます。
総務省サービス産業動向調査のデータ分析
櫻井 裕司
2020/07/08 櫻井 裕司
techdataAnalytics
総務省がAPIで市場データを公開しており、分析技術向上と市場感を養うことを目的に定期的に分析を行なっていこうと思います。初回は「サービス産業動向調査」について見ていこうと思います。
タスク管理アプリ「タスククロス」をリリースしました
櫻井 裕司
2020/04/08 櫻井 裕司
techapp
タスク管理を二次元的に行うアプリ「タスククロス」をリリースしました。SinkCapitalはデータコンサルですが、知見蓄積のため様々な媒体での実験的開発を行っています
【terraform】gcpでcicd環境を構築する方法
櫻井 裕司
2020/01/04 櫻井 裕司
tech
企業サイトはAWSを利用しているのですが、要件によってはGCPの方が適している場合もあるため、GCPでのcicd構築も行いました。AWSと比較しつつ説明しているため是非ご参考にしてみてください。
【合格体験記】GCP_Cloud_Archtectに受かりました
櫻井 裕司
2019/12/23 櫻井 裕司
personalqualification
Google Professional Cloud Architectに合格したので、勉強法別のコスパをまとめてみました。
AWSでサブドメインなし(wwwなし)からサブドメインあり(wwwあり)へのリダイレクト設定
櫻井 裕司
2019/12/23 櫻井 裕司
tech
もともと企業サイトがサブドメインありで公開していたが、サブドメインなしでもエラーなく接続できるように設計。terraformで作成しているので是非ご参考ください。
マークダウンで記事を書けるようにしてみた
櫻井 裕司
2019/12/16 櫻井 裕司
tech
ホームページのブログをマークダウンを使用してかけるようにしました。gatsbyなどもありますが、今回はお手製cicd+pythonを使用してライトに作成しました。