# How to SRE When Everything is Already on Fire **登壇者**: [[Alex Hidalgo]](@ahidalgosre, Squarespace Observability SRE)、[[Alex Lee]](@ahl91, Service Reliability) **イベント**: SREcon19 EMEA(2019-10、ダブリン) **スライド**: 105 ページ / transcript なし ![[_attachments/2019__SREcon19EMEA__How-to-SRE-When-Everythings-Already-on-Fire/page-001.png]] ## 概要 [[Squarespace]] の ELK スタック(Elasticsearch / Logstash / Kibana)は 2015 年から急成長に伴って導入されたが、2018〜2019 年にかけて繰り返し大規模インシデントを起こしていた。本発表は「すでに炎上している」サービスに対して SRE 原則(SLI/SLO/エラーバジェット・オブザーバビリティ改善・ICS・ポストモーテム・継続的改善)を段階的に適用し、5 月時点で SLO ターゲットを 99% 5 分 → **99.9% 2 分**へ厳格化するまでの変革を記録した実録ケーススタディである。 ## 主要メッセージ 本発表は 7 つの原則を軸に構成される。 1. **アラートは「重要なことだけ」鳴らす** — ユーザー視点の単一 SLI で多数の内部コンポーネント監視を置き換える 2. **意味ある SLO を作る** — 完璧を目指さず、エラーバジェットを意思決定の道具にする 3. **オブザーバビリティを高める** — 何が起きているか分からなければ直せない 4. **環境を改善する** — ツーリングと自動化でオペレーター負荷を減らす 5. **実績ある手法を信頼する** — ICS 等の確立済みフレームワークを IT 運用に移植する 6. **意味あるポストモーテムを行う** — 過去から学ぶ 7. **すべてを反復する** — 改善は一度では終わらない ## 視覚的に重要な図表 **p.16 ELK オリジナルアーキテクチャ** ![[_attachments/2019__SREcon19EMEA__How-to-SRE-When-Everythings-Already-on-Fire/page-016.png]] Log Shippers → Kafka → Logstash → Elasticsearch(書き込み経路)、ユーザー → Kibana → Elasticsearch(読み取り経路)の 2 経路構成。Logstash が単一の複雑ポイントであり、複数コンポーネント監視が「既知の未知だけ捉えるノイジーなアラート」を生んでいた。 **p.24 新 SLI の定義(単一アラートへの移行)** ![[_attachments/2019__SREcon19EMEA__How-to-SRE-When-Everythings-Already-on-Fire/page-024.png]] Kafka 積み残しメッセージ数(msg)÷ Logstash 処理レート(msg/s)= エンドツーエンドレイテンシ(秒)を SLI と定義。6 種の内部コンポーネント監視を 1 つのユーザー体験指標に集約した。 **p.35 エラーバジェットの意思決定フロー** ![[_attachments/2019__SREcon19EMEA__How-to-SRE-When-Everythings-Already-on-Fire/page-035.png]] 余剰エラーバジェットがあれば「やりたいことをやる」、枯渇したら「信頼性にフォーカスする」という 2 方向の意思決定。2019-03-04 に SLO(99% / 5 分以内)を定義したことで、03-05 の障害でエラーバジェット枯渇が宣言でき、「全力対処の許可」が組織的に与えられた。 **p.50 改善後のアーキテクチャ(Logstash 廃止)** ![[_attachments/2019__SREcon19EMEA__How-to-SRE-When-Everythings-Already-on-Fire/page-050.png]] Logstash を「ブラックホール」として排除し、複数ソース → Kafka → Elasticsearch(直接)、ユーザー → Kibana → Elasticsearch の構成にシンプル化。 **p.65 ICS サブリード体制** ![[_attachments/2019__SREcon19EMEA__How-to-SRE-When-Everythings-Already-on-Fire/page-065.png]] Operations Lead 配下に Databases Operations Lead・Networking Operations Lead・Systems Operations Lead の 3 サブリードを配置。IC が Communications Lead・Planning Lead と並んでオペレーション全体を分離・委任する構造を示す。 **p.90 ポストモーテム修復項目の 2 軸分類** ![[_attachments/2019__SREcon19EMEA__How-to-SRE-When-Everythings-Already-on-Fire/page-090.png]] インシデントレスポンス軸(タイムライン分析・TT Detect・TT Engage・TT Mitigate)とシステム軸(予防的/緩和的対応・「なぜこんな仕組みがあるのか?」の自問)の 2 軸でアクションアイテムを分類する。 ## 背景と文脈:ELK インシデント年表 スライドはインシデント実録をタイムライン形式で示す。 | 日時 | 出来事 | |---|---| | 2015 年春 | ELK スタック導入(Squarespace 最大トラフィックサービス) | | 2018 年 8 月 | スタックが不健全な状態に | | 2019-03-04 16:29 ET | SLO 定義「ログラインを平均 5 分以内に処理 99%」 | | 2019-03-05 20:00 ET | 同じ問題が再発(インシデント開始) | | 2019-03-05 20:36 ET | エラーバジェット枯渇宣言 → 全力対処開始 | | 2019-03-21 20:00 ET | 37 時間インシデント開始(ES シャード過多問題) | | 2019-03-22 09:23 ET | 37 時間インシデント終息 | | 2019-03-24 午後 | 根本原因特定(シャード数 2,200 > 推奨上限 600) | | 2019-04-23 | ELK 変革の章を社内記録 | | 2019-05-10 | SLO 更新「99.9% / 2 分以内」へ厳格化 | 37 時間インシデントでは複数回の Incident Commander 引き継ぎが発生し、ICS 由来の公式引き継ぎプロセスが重要だった。 ## アラーム疲労の歴史的位置づけ スライドは「None of this is new」と強調し、アラーム疲労が IT 固有の問題ではないことを示す:ヘルスケア・鉱業・建設・原子力産業での研究の蓄積、そして 2,600 年前のイソップ寓話「嘘をついた少年」まで遡る。IT 運用の多数コンポーネント監視は「既知の未知しか捉えない・ノイジー・ユーザー視点でない」という 3 つの欠点を持つ。 ## 概念・実体への接続 - [[アラート疲労]] — 「None of this is new」として歴史的文脈を示した後、ユーザー視点の単一 SLI への移行で解決 - [[サービスレベル目標]] — SLI/SLO/エラーバジェットスタックをシンプルに解説。Reliability Stack として視覚化 - [[エラーバジェット]] — 枯渇が「信頼性対応の許可証」として機能した具体事例 - [[ポストモーテム]] — 3 要素(データ収集・教訓・修復項目)と「多様なバックグラウンドが鍵」 - [[Incident Commander]] — ICS 適用と引き継ぎ(Handing Off)プロセスの実例 ## 限界・不確実点 - SREcon19 EMEA の正確な発表日は確認できていない(2019-10 として記録、SREcon19 EMEA は 2019-10-02〜04) - transcript なし(動画 URL 未取得、Whisper 未実行) - Logstash 廃止後の具体的な代替コンポーネントはスライドから読み取れなかった(Kafka → ES 直結か、別の ingestor 経由かは不明) - Alex Lee(@ahl91)の所属部門や現在のキャリアは公式ページから確認できなかった