【ダウンロード版】Pragmatic Terraform on AWS - KOS-MOS - BOOTH
これも職場の同僚氏がオススメしていた本。
普段から Terraform の設計に課題を感じていたので、ざーっと斜め読みして、第17章からしっかり読んだ。
その中での設計のやり方が
モノリス → モジュールの利用 → 環境(ステージ)の分離 → コンポーネント分離
と段階を踏んでおりとても良いと思った。そう、これなんですよ。最初は main.tf だけで十分。
Terraform の設計はアプリケーション設計とよく似ており、初めから抽象化すると難しくなると思う。
基本は宣言的に書いていき、設定ファイルのような読めるコードにする。3回くらい重複し始めたくらいで、変数やモジュールに落とし込むのが良いはず。
17.4.1 の “安定度の高いコンポーネントは、変動を想定したコンポーネントに依存してはいけません” もまさにアプリケーション設計あるある。『オブジェクト指向設計実践ガイド 』にも同じことが書いてある。→ [2016-09-22-1] [2017-11-01-1]
Terraform の Workspaces をオススメしない点にも同意。状態を気にしながらの terraform apply は怖い。
18.4 のリモートステートは知らなかった。便利そう。現状、ちょっとだけ関連があるリソースを同じコンポーネント(ディレクトリ)に集めている。リモートのバックエンドを使えば疎結合に出来るかも。Data Source でも良いと思うけどね。
Terraform だけでなく、第19章のように AWS のベストプラクティスが書かれている点も良い。S3 の暗号化は確認しようと思った。
ちなみにダウンロード版には .epub と .pdf しか存在しない。kindlegen 使って .mobi に変換して、Kindle 用のメールアドレスに送った。久々だと忘れちゃうね。
$ brew cask install kindlegen
$ kindlegen PragmaticTerraformOnAWS.epub
追記(2019-05-10):
作者様からありがたいお言葉が・・・!
素晴らしいブログ記事にしていただきありがとうございます!まさにアプリケーション設計の知見をヒントにして、Terraformの設計については書いたので、共通点を感じ取ってもらえてとても嬉しいです。ノイズになりそうなので書きませんでしたが、安定度の話はまんま「安定依存の原則(SDP)」ですw
— GitHub CI/CD実践ガイド@tmknom (@tmknom) May 9, 2019
追記(2022-03-03):
『実践Terraform』として商業出版されました。※ 書き忘れてたので今さらながら追記
『実践Terraform』刊行のお知らせと技術書典7での頒布について #技術書典 #Terraform - 憂鬱な世界にネコパンチ!