Infrastructure

Terraform module を分ける基準をどこに置くか

Terraform module の分割は、ファイル数をきれいにするためではなく、変更の境界を安定させるために行う。呼び出し元が知るべき情報と、module 内に閉じ込めるべき詳細を分けるのが出発点になる。

変更頻度で見る

頻繁に変わる設定と、ほとんど変わらない基盤を同じ module に入れると、レビューのたびに意図が読みづらくなる。CloudFront の振る舞い、S3 の公開制御、DNS のように責務が違うものは、変更理由も別々にしておく。

出力を小さく保つ

module の output は便利だが、多すぎると内部構造を外へ漏らす。外部が本当に必要とする識別子だけを返すようにすると、後から実装を差し替えやすくなる。