# ウェブシステムの運用自律化に向けた構想
[[Yuuki Tsubouchi]](y_uuki、[[Hatena]] SRE)が 2017-12-02 に公開したブログ記事。はてなエンジニア Advent Calendar 2017 の 2 日目として、人工知能学会 合同研究会 2017 第 3 回ウェブサイエンス研究会の招待講演内容を加筆修正したもの。講演タイトルは「自然のごとく複雑化したウェブシステムの運用自律化に向けて」。
## 核心テーゼ
**SREの最適化問題定義**: SRE の仕事のメンタルモデルは「目標設定された信頼性(SLO)を制約条件として、費用(コンピューティングリソース費用 + 人件費用 + 機会費用)を最小にする最適化問題」である。なお、2018 年の追記で著者自身が「費用も制約条件であり、変更速度を最大にする最適化問題」の方がしっくりくると修正している。
**最終ゴール**: コンピュータのみでシステムを運用可能な状態にすること。人間がなにもしなければ約 1 週間で信頼性が損なわれる現実がある。
## 自律化の3軸アプローチ
### 観測
従来の監視(ping・メトリック時系列グラフ)を超えた、構成要素と要素間の関係の包括的把握。現状では SRE がシステムのネットワークグラフ構造・ログ・アプリケーションコード・変更履歴を脳内で統合して状況を理解している。ログ・イベント・構成関係の把握などが求められる。
### 制御
3 段階の進化:
1. **ナイーブな制御**: メトリックの変動に応じた自動スケール。パラメータはエンジニアの経験頼り
2. **待ち行列による制御**: 到着分布と処理分布の観測によるリソース配分。課題は突発的外乱への対応
3. **フィードバック制御**: 制御対象をブラックボックスとして扱い外乱にも対応できる手法。SRE がアプリケーションの中身を知らずに観測結果だけをみて障害対応する様子に似ている
フィードバック制御の実例: PerfEnforce[jen16](SIGMOD'16)がデータベースクラスタのスケーリングにフィードバック制御・強化学習・パーセプトロン学習を比較。Apache Spark へのPID制御組み込み実装も存在。
### 実験
制御モデルのパラメータ決定には実システムの応答計測が必要。新システムはデータがゼロなので本番蓄積データだけでは不十分。
Chaos Engineering(Netflix提唱)にインスパイアされ、「クラウド・コンテナ技術で限りなく本番に近い環境をオンデマンドに構築し、実験を高速・安全に自動化する」アプローチを提案。動作テスト・負荷テスト・パラメータチューニングも実験として内包する。
## Experimentable Infrastructure
観測と実験の自動化には**近代科学の仮説演繹法のループの自動化**というメタファーが込められている:
1. 観察に基づいた問題の発見(観測)
2. 問題を解決する仮説の提起
3. 仮説からのテスト命題の演繹
4. テスト命題の実験的検証または反証(実験)
5. テストの結果に基づく仮説の受容、修正または放棄
ウェブシステムの観測と実験で判明することは「世の中的には既知のなにか」であることがほとんどなので、仮説提起をパターン化できる。
詳細: [[Experimentable Infrastructure]]
## ウェブシステムの複雑性3要因
1. **ソフトウェア依存関係の複雑さ**: 多数のソフトウェアの重ね合わせによるバージョン・プロトコル・依存地獄問題
2. **分散システムとしての複雑さ**: ノード増加・部分故障・ネットワーク遅延・分断への対応
3. **入力パターン(ワークロード)の複雑さ**: 人間・クローラ・スパマーによる突発的外乱、予測困難
複雑性の指標として複雑性科学[mel11]の「サイズ」と「階層度」が適用可能。はてなのシステムサイズ例: サービス 100+、ロール 1000+、ホスト 1000+、SRE 10 人弱。
## 自律運用の壁
1. **ハードウェアリソース制約**: 予め用意したリソースプール上限
2. **予測できない外乱の大きな変化**: フィードバックが間に合わないケース
ウェブサイエンスの状態予測をフィードフォワード制御に利用するアイデアを提示。
## 自律運用と自律開発の区別
- **自律運用**: 与えられた信頼性制約を満たすよう自律動作。条件設定・アーキテクチャ決定・効率化は依然人の仕事
- **自律開発**: 自律的に費用を最小化するシステム。進化・適応の概念が必要。ソフトウェア進化研究と関連
## 議論
SRE の分野はまだ「技芸」であり「科学」でない。不足している解析として:
- ウェブシステムの複雑さの定義と解析
- 階層構造の変化の解析
- 階層ごとの到着分布・処理分布の解析
- 自律度合いの定義と解析
- 異常のパターン分析と体系化
WSA研(ウェブシステムアーキテクチャ研究会)立ち上げを宣言。SREの分野では日本に直接扱う研究会が存在しないという問題意識から。
## 年次変遷との対応関係
| 2017 年の視点 | 2019–2024 年のフォローアップ |
|---|---|
| SRE = 費用最小化最適化問題 | [[@2019__yuuk.io__2019-SRE-Thinking]] で「SRE = サイト信頼性を制御するための技術」と再定義 |
| 技芸から科学へ | [[@2024__yuuk.io__SRE-NEXT-2024]] で「技芸から工学へ」のテーゼとして集大成 |
| 観測・制御・実験の自律化 | [[@2022__DICOMO__AI時代に向けたクラウドにおける信頼性エンジニアリングの未来構想]] でセルフクラフト・Interactive AIOps へ発展 |
## 関連
- 著者: [[Yuuki Tsubouchi]]
- 所属機関(当時): [[Hatena]]
- 監視サービス: [[Mackerel]]
- 核心概念: [[Experimentable Infrastructure]]
- 関連概念: [[SRE]] / [[agentic SRE]] / [[SRE AI Autonomy Levels]] / [[SREの工学化]]
- 後続記事: [[@2019__yuuk.io__2019-SRE-Thinking]] / [[@2024__yuuk.io__SRE-NEXT-2024]] / [[@2022__DICOMO__AI時代に向けたクラウドにおける信頼性エンジニアリングの未来構想]]