なぜインフラコードのモジュール化は難しいのか - アプリケーションコードとの本質的な違いから考える by 宮下 剛輔

YAPC::Fukuoka 2025
トーク(40分)
当日の配信可(OK) アーカイブ配信可(OK)

なぜインフラコードのモジュール化は難しいのか - アプリケーションコードとの本質的な違いから考える

gosukenator 宮下 剛輔 gosukenator
11

YAPC::Japanがリブートした2016年当時、Terraformはまだv0.7の段階で、インポート、Data Sources、ステート管理CLIといった機能が実装されました。また、Chef、Puppet、Ansible等の既存の構成管理ツールとどう使い分けるべきかが議論されていました。

あれから9年、Terraformはv1.12となり、ツールとして成熟しました。モジュール機能も2014年のv0.3から実装されています。

しかし、Terraformでモジュール化を進めると、様々な「辛さ」に直面します。大量のパラメータ、どんなリソースが作られるか分からない不安、細部を制御できないもどかしさ、モジュールの多層化による見通しの悪さ——これらは単なる実装の問題ではなく、インフラコードとアプリケーションコードの本質的な違いから生まれる必然的な課題です。

なぜこのような辛さが生まれるのでしょうか?本セッションでは、両者の根本的な違いである「記述の視点」から出発し、そこから必然的に生まれるモジュール化アプローチの違いを紐解いていきます。

根本的な違い

  • 記述の視点:状態を記述する vs 処理を記述する

この違いから生まれるモジュール化の特徴

  • 抽象化の目的:構成のテンプレート化 vs 処理のカプセル化
  • 再利用の考え方:ホワイトボックス的利用 vs ブラックボックス的利用
  • 設計の難しさ:抽象化と可視性の板挟み vs 抽象化に専念できる
  • 階層化の影響:モジュールの多層化による透明性の低下 vs 階層化による整理

これらの違いを理解することで、インフラコードのモジュール化が難しい本質的な理由と、その難しさとどう向き合うべきかを考察します。

想定する聴衆

  • インフラエンジニア、SRE
  • インフラにも関わるアプリケーション開発者