【IaC】IaCの運用的な利点と可読性の向上について
こんにちは。
今回は IaC(Infrastructure as Code)の可読化 についてまとめます。
IaCは効率化・再現性の観点で便利ですが、IaCの機能は最適化されている部分があることから、暗示的定義がされている項目が多く、レビューする際に割と苦労します。
今回は、Terraformの可読性を補助するツールを紹介します。
IaCとは
IaC(Infrastructure as Code)は、クラウドサービスのリソースをコードとして記述・管理する手法です。
以下のようなメリットがあります。
① 手作業の設定ミス防止
② バージョン管理が可能
③ 環境の再現性を担保できる
④ 監査・セキュリティ面での一貫性が確保できる
また、特にIaCのセキュリティ利点についてのセッションもありますので、こちらも参照ください。
Infrastructure as Code でセキュリティを楽にしよう !
IaCは無駄なく権限周りの構築を最適化してくれるため、セキュリティ面も担保してくれます。
一方で、セッションの中では「導入時からセキュリティを盛り込むことが重要」とあり、IaCを開発時から導入する必要性も論じています。
IaCは読みづらい?
ただ、Terraformのコード上で、リソースのブロックや依存関係がどうなっているか把握しにくいのが正直なところです。
特にレビュー時、パッと見たときにどんな構造か把握するのが難しく、どうしても時間がかかってしまうのが難点です。
IaCで記載したシステム構造を簡単に視認できるようなツールが欲しいところです。
Terraformレビュー補助ツール
そこで筆者が気になった補助ツールを紹介します。
terraform graph
リソース間の依存関係を図にできます。
公式ドキュメント:terraform graph command

できること
・ dot 可視化ツールと組み合わせてグラフ化
・ 依存関係の可視化
欠点
・大規模だと図が複雑になりがち
terraform-docs
リソースの情報をMarkdown形式で自動でドキュメント化してくれるツールです。
公式ドキュメント:terraform docs
できること
・ 変数や出力を一覧化
・ Github Actionsと連携して、デプロイ時に自動更新
欠点
・ 説明は自動的・限定的で、ドキュメントの手動補正が必要
まとめ
IaCは便利ですが、レビューしづらさがネックになります。
Terraformには graph や docs といった補助ツールがあり、これらを使用することである程度の視認性も担保できるかと思います。
特に、terraform-docsのMarkdown資料と、terraform graphの図表を組み合わせ、自然言語処理を加えることでよりリッチなドキュメントを作成できる可能性があります。
「IaCの読みやすさ」=「レビューしやすさ」や「保守性」につながるので、なるべく可読性を意識したいものです。
それでは。
Tags