# @danluu.com__Reading postmortems [[Dan Luu]] が [[Google]] ・[[Microsoft]] 在籍時に社内ポストモーテムを大量に読んだ経験から、フォーマルな定量分析に先立って観測した「重大障害の再発パターン」5分類を、公開文献の引用で裏付けながら整理したエッセイ。公開日はページ上に明記されていない(参照論文・出来事から2016年前後の執筆と推定されるが未確認のため `date_published: unknown` とする)。 ## 5分類の要約 ### 1. エラーハンドリング エラーハンドリングコードのバグは「バグが誤ったエラーハンドリングコードの実行を誘発する」という連鎖により、単純な独立確率の積では説明できない深刻な障害を引き起こす。[[Ding Yuan]] らの OSDI'14 論文([[@2014__OSDI__Simple Testing Can Prevent Most Critical Failures - An Analysis of Production Failures in Distributed Data-Intensive Systems|Simple Testing Can Prevent Most Critical Failures]])を引用し、Cassandra・HBase・HDFS・MapReduce・Redis の重大障害48件の**92%がエラーの誤処理**に起因すると報告する。内訳はエラーの単純無視25%、誤った例外捕捉8%、TODO未完了2%、「statement coverage テストやコードレビューで容易に検出可能だった」ケース23%。Jepsen によるバグ再現性の高さ(重大障害の98%が3ノードクラスタで再現可能)にも言及する。詳細な図表・実験結果は [[@2014__OSDI__Simple Testing Can Prevent Most Critical Failures - An Analysis of Production Failures in Distributed Data-Intensive Systems]] を参照。 ### 2. 設定(Configuration) 「global outage postmortem」でウェブ検索した結果の約50%が設定変更起因であり、コードバグでなく設定バグが最悪の障害の最多原因だと主張する。2014年11月の Azure 大規模障害を実例として挙げる。1985年の [[Jim Gray]] の観察(「運用操作・システム設定・システム保守が障害原因の42%」、[[@1985__Tandem__Why Do Computers Stop and What Can Be Done About It]])と Rabkin and Katz の研究(誤設定が最多原因)を並置し、コード変更は全台同時ロールアウトが避けられる一方、設定変更は同等の慎重さで扱われないことが多いと指摘する。 ### 3. ハードウェア DRAM のエラー率は公称値より一桁近く高い([Schroeder, Pinheiro, Weber])、Ethernet チェックサムは誤り検出として不十分、フェイルオーバー機構自体が失敗しうる(2012年 AWS East のジェネレーター障害を実例として挙げる)ことを指摘する。 ### 4. 人間(Humans) > Oh, we're about to do a risky thing! Ok, let's have humans be VERY CAREFUL about executing the risky operation. Oops! We now have a global outage. 「リスクの高い操作だから人間が細心の注意を払う」という追加の人手プロトコルの存在それ自体を、著者は**ops smell(運用上の悪臭)**と呼ぶ。複数人での確認やスタンバイ体制はリスクを一定程度緩和するが、多くのポストモーテムでは自動化の方がはるかに大きくリスクを削減・除去できたはずだと主張する。IDC 調査ではデータセンター障害の最厄介な原因として人的エラーが最多に選ばれたことも紹介する。公開ポストモーテムでは人的エラーが過小代表されている逆説(高自動化組織ほど人的エラー比率が高く見える)も指摘する。 ### 5. モニタリング/アラート 監視不備が単独の障害原因になることは稀だが、深刻な寄与要因になることは多い。エスカレーション経路の欠如・バックアップオンコール不在などのプロセスバグが典型例。[Northeast blackout of 2003](https://en.wikipedia.org/wiki/Northeast_blackout_of_2003) を、一連の見逃されたアラートが被害を拡大させた実例として挙げる。 ## 「Elsewhere」セクションの参照文献 記事末尾で障害原因研究の系譜として挙げる文献のうち、以下はこの wiki に既に source として ingest 済み: - Richard Cook, [[@1998__CtL__How Complex Systems Fail]] — 複雑システム障害論の一般的アプローチ - Jim Gray (1985), [[@1985__Tandem__Why Do Computers Stop and What Can Be Done About It]] - Xu et al., [[@2013__SOSP__Do Not Blame Users for Misconfigurations]] - Oppenheimer et al. (2003), [[@2003__USITS__Why Do Internet Services Fail and What Can Be Done About It]](別セッションで ingest 済み) - Ding Yuan et al. (2014), [[@2014__OSDI__Simple Testing Can Prevent Most Critical Failures - An Analysis of Production Failures in Distributed Data-Intensive Systems]] — §1「エラーハンドリング」の中核引用元(別セッションで ingest 済み) 未 ingest の参照文献(スコープ外・記録のみ): Nagaraja et al. "Understanding and Dealing with Operator Mistakes in Internet Services" (2004) / Barroso et al. "The Datacenter as a Computer" (2009、著者 [[Luiz André Barroso]] は既存エンティティ) / Rabkin and Katz "How Hadoop Clusters Break" (2013)。 ## 関連 - 概念: [[ポストモーテム]] / [[設定ミス脆弱性]] / [[人的要因]] / [[ソフトウェア耐障害性]] / [[複雑システム障害論]] - ソース: [[@1998__CtL__How Complex Systems Fail]] / [[@1985__Tandem__Why Do Computers Stop and What Can Be Done About It]] / [[@2013__SOSP__Do Not Blame Users for Misconfigurations]] / [[@2003__USITS__Why Do Internet Services Fail and What Can Be Done About It]] / [[@2014__OSDI__Simple Testing Can Prevent Most Critical Failures - An Analysis of Production Failures in Distributed Data-Intensive Systems]] - エンティティ: [[Dan Luu]] / [[Ding Yuan]] / [[Jim Gray]] / [[Luiz André Barroso]] ## 出典 - Dan Luu, "Reading postmortems", danluu.com. https://danluu.com/postmortem-lessons/(取得日: 2026-08-19、原文に公開日の記載なし)