Terraformでmoduleを使わずに複数環境を構築して感じた利点

Date
October 26, 2023 7:11 PM (GMT+9)
Private

TOP📎クリップ

📝
また見たい思ったインターネット上の記事を 📎クリップ しています。

📎 クリップした記事

  • moduleは複雑になりがちだし、気づけばそこからも参照されてる?という共通化が生まれるリスクがある。
  • 複雑化がますことで、Aだけ新しくしたいけど、moduleを変更するとBもCも変更が生まれる問題
  • ブランチ戦略などでmainじゃなけばBにはapplyしなければいいけど、そうなると特定のブランチが大きく育つ and 他の変更を追加できない。
  • moduleにrequire要素を追加すると、もしほかでも参照していたら、関係ないworkspaceまで変更がうまれる。(そもそもそれをするなだけど)
  • module間の依存。例えばネットワークとRunなどがあり、思想を作り上げて浸透させるのは難しい。
  • 会社によるがサービスが増えれば増えるほど、そういった依存が増えていく。増えると最後あとできれいにすることにとても神経を使う

など確かにmoduleはとても複雑になる。導入時点のメンバーが使えていればいいけど、全員がTFに親しんでない環境では、そういった複雑さは触ったり、理解したりする心理的ハードルはあがっちゃうよねぇ。

tfvarsを使うことで得られるメリットは、moduleという考え方や依存に悩まなくていいことかな。

AでもBでも同じ物書く(例えばIAM作ってRoleを割り当てるmoduleなど)ことあると、共通化したくなることもあるかもしれないけど、そういった共通化を防ぐことにはとてもメリットあるよね。

読む・書くに関しては言いなーと思う一方で、運用し続ける(数年)視点で考えると、後でつらくなる課題もありそう。まぁtfmigrate使うとか、state rm and importで頑張るでも全然よさそうだけどね。

moduleでもtfvarsでも解決できないことは、`count=0` とか count=1 とかでDevでは作る、Prodでは作らないとかをコントロールすることになる事かな。

↑を解決するには、もう少し意味ある単位でmodule化してversion管理して、prodのroot moduleではrun v1、devのroot moduleではrun v2を参照するとか、ヴァージョン管理の複雑さは生まれるけど、そういう方法かな。どこの複雑さやどんなリスクを許容して、どんなメリットを受けるかだと思うので、組織にあった形になっているとしたらとても良いなーという雑感想

🏷️ タグ

🗞 登場した用語まとめ

TOP📎クリップ