# イミュータブルインフラストラクチャ
## 定義
イミュータブルインフラストラクチャ(immutable infrastructure)とは、小さなベースイメージを出発点にソフトウェアコンポーネントをインストールし、すべてのリリースについてイメージを再ビルドしてからプロダクションへ配布し、リリース後はイメージを一切変更・更新せず新しいイメージへの交換のみで更新するインフラストラクチャ運用のプラクティスである。実行中のインスタンスは、Puppet・Chef・SSH のようなツールを通じて更新されることが一切ない(デバッグ目的の SSH 実行を除く)。すべてのインスタンスが同一の構成・設定になるためシステムの変数が減り、コンポーネントの交換が容易になることで、大量のプロダクションサーバーを維持するトイルを飛躍的に削減する。([[@2021__OReillyJapan__SREの探求 - Chapter 24 イミュータブルなインフラストラクチャとSRE]] 冒頭, §24.1)
## 横断的知見
- **収束型の設定管理(Chef・Puppet)が動的スケーリング下で破綻する現象は、収束理論(Burgess 2000)が前提とする「理想状態はゆっくり劣化する」という仮定が崩れる具体例として読める**: [[収束型システム管理]] が扱う Burgess(2000)の収束理論は、システムを理想状態の近傍に保ち続けるための補正操作数が偏差に対して線形にしか増えないことを数理的に示し、「理想平均状態はゆっくり(slowly)劣化する」ことを前提にしている。ch.24 は、この前提が大規模 Web 運用では崩れる具体的な状況を報告する——クラスタが動的にスケーリングし新しいノードが頻繁に追加される環境では、各ノードは「理想状態に近い状態から補正する」のではなく「ゼロの状態から理想状態まで到達する」ことを毎回求められ、Burgess のモデルが想定する低偏差での安価な補正という前提そのものが成立しなくなる。加えて設定管理システム自体が完全ではなく実行に失敗することがあるという ch.24 の指摘(§24.5)は、収束のプロセスそのものが理想状態への到達を保証しないという、Burgess の理論的定式化には現れない実務上の脆さを示す。イミュータブルなインフラストラクチャは、この「毎回の到達」問題と「補正の失敗」問題の両方を、補正(convergence)ではなく交換(replacement)によって迂回する設計である。(Source: [[@2021__OReillyJapan__SREの探求 - Chapter 24 イミュータブルなインフラストラクチャとSRE]] §24.1, §24.5, [[@2000__LISA__Theoretical System Administration]])
## 未解決の問い
- Kubernetes の reconciliation loop・Terraform の宣言的インフラ管理のような現代の収束型システムは、ch.24 が指摘する「動的スケーリング下での破綻」をどこまで克服しているか。イミュータブルイメージの交換とコントローラによる収束(reconciliation)を併用する現代のクラウドネイティブ運用は、収束とイミュータブルの二項対立をどう統合しているか。
- ベースイメージの週次再ビルドという ch.24 の推奨は、イメージビルドのコストとトイル削減効果のどのようなトレードオフに基づくか。ビルド頻度の最適値を定量的に導く枠組みは既存ソースにはない。
- 永続的なデータレイヤーでのイミュータブル運用の限界(ch.24 §24.12)は、[[Infrastructure as Code]] が扱うクラウド API 経由のプロビジョニングとどう組み合わされるべきか。
## 関連
- ソース: [[@2021__OReillyJapan__SREの探求 - Chapter 24 イミュータブルなインフラストラクチャとSRE]]
- 概念: [[収束型システム管理]](補正 対 交換という対立軸) / [[Infrastructure as Code]] / [[ヘルメティックビルド]] / [[カナリアテスト]] / [[ソフトウェアエイジング]] / [[ライブアップグレード]] / [[変更起因インシデント]] / [[コンテナ仮想化]]
- エンティティ: [[Jonah Horowitz]] / [[Netflix]] / [[Chef]] / [[Puppet]] / [[Packer]] / [[Docker]] / [[Apache Cassandra]] / [[Chaos Monkey]] / [[HashiCorp]]
## 出典
- [[@2021__OReillyJapan__SREの探求 - Chapter 24 イミュータブルなインフラストラクチャとSRE]](Jonah Horowitz, 24章全体)