<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Sre on Tarragon</title><link>https://tarrragon.github.io/blog/tags/sre/</link><description>Recent content in Sre on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 01 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/sre/index.xml" rel="self" type="application/rss+xml"/><item><title>模組六：可靠性驗證流程</title><link>https://tarrragon.github.io/blog/backend/06-reliability/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/backend/06-reliability/</guid><description>&lt;p>可靠性驗證模組的核心目標是說明測試如何從單一函式擴展到整個後端系統。語言教材會處理 unit test、table-driven / parameterized test、race / async test 與 integration test；本模組負責 &lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/ci-pipeline/" data-link-title="CI Pipeline" data-link-desc="說明持續整合流程如何在合併前驗證品質與相容性">CI pipeline&lt;/a>、壓力測試、fuzz campaign、chaos testing、SLO 與 &lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/release-gate/" data-link-title="Release Gate" data-link-desc="說明變更在正式釋出前如何通過或阻擋">Release Gate&lt;/a>。&lt;/p>
&lt;p>本輪規劃採問題驅動方法、用 SRE 領域 first-class 詞彙（&lt;a href="https://tarrragon.github.io/blog/backend/04-observability/sli-slo-signal/" data-link-title="4.6 SLI 量測與 SLO 訊號設計" data-link-desc="把可靠性目標的訊號從 metric 端設計好、餵給 6.6 SLO 政策">SLI&lt;/a> / &lt;a href="https://tarrragon.github.io/blog/backend/06-reliability/slo-error-budget/" data-link-title="6.6 SLO 與 Error Budget 政策" data-link-desc="把可靠性目標轉成可驗證量測與凍結條件">SLO&lt;/a> / &lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/error-budget/" data-link-title="Error Budget" data-link-desc="說明 SLO 允許的失敗額度如何影響發版與可靠性投入">Error Budget&lt;/a> / Failure Mode / Chaos Hypothesis），把驗證議題拆成問題節點，蒐集公開 SRE 實踐作為服務級案例庫，再把控制面交接到可觀測性、部署平台與事故處理模組落地。&lt;/p>
&lt;h2 id="驗證角色">驗證角色&lt;/h2>
&lt;p>可靠性驗證的角色是把「系統會不會在真實壓力下失敗」變成可預演的工程問題。這一層不負責寫測試語法，也不負責定義服務功能，而是負責定義哪些失效值得被主動打破、哪一種訊號可以證明風險存在、哪一種門檻可以阻止變更往下流。&lt;/p>
&lt;p>當讀者把驗證看成流程，就會自然分出三個層次。第一層是訊號，先知道要看什麼。第二層是演練，先知道要怎麼打。第三層是放行，先知道什麼情況需要暫停或退回。這三層分別對應可觀測性、可靠性驗證與交付平台的責任。&lt;/p>
&lt;h2 id="問題節點">問題節點&lt;/h2>
&lt;p>問題節點先描述失效風險，再描述驗證手段。這樣寫的好處是，讀者能先理解「為什麼要驗證」，再看到「怎麼驗證」，讓工具名回到解題手段的位置。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>節點&lt;/th>
 &lt;th>驗證問題&lt;/th>
 &lt;th>常見訊號&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>CI pipeline&lt;/td>
 &lt;td>測試是否真的攔住回歸、artifact 是否可重播&lt;/td>
 &lt;td>flaky rate、test duration、build queue&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Load test&lt;/td>
 &lt;td>真實負載是否被模型覆蓋、瓶頸是否被提早暴露&lt;/td>
 &lt;td>latency curve、throughput ceiling、error rate&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Fuzz campaign&lt;/td>
 &lt;td>邊界輸入是否能觸發 crash、corpus 是否持續擴充&lt;/td>
 &lt;td>crash reproduction、coverage delta&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Chaos testing&lt;/td>
 &lt;td>依賴失效後系統是否仍能維持服務、回復路徑是否可執行&lt;/td>
 &lt;td>steady state drift、rollback success rate&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>SLO / Error Budget&lt;/td>
 &lt;td>可靠性是否已經被消耗、變更是否還能繼續推進&lt;/td>
 &lt;td>&lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/burn-rate/" data-link-title="Burn Rate" data-link-desc="說明 error budget 消耗速度如何支援告警與事故分級">burn rate&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/error-budget/" data-link-title="Error Budget" data-link-desc="說明 SLO 允許的失敗額度如何影響發版與可靠性投入">error budget&lt;/a> remaining&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>這張表的責任是提供路由。每一列都要回到服務案例庫，從公開實踐找出真實世界的樣本，把問題節點和失效模式綁在一起。&lt;/p>
&lt;h2 id="案例庫讀法">案例庫讀法&lt;/h2>
&lt;p>案例庫的責任是提供幾種反覆出現的失效與驗證模式。Google、Netflix、Amazon、Stripe 與 Shopify 這五個 T1 案例，分別對應量化門檻、主動故障注入、隔離邊界、交易正確性與峰值準備。&lt;/p>
&lt;p>當讀者遇到某個驗證節點卡住時，可以先問三個問題。第一，現在缺的是訊號還是門檻。第二，失敗是在單一服務內還是在依賴鏈上。第三，這種風險更像回歸、容量、變更還是恢復問題。這三個問題會把讀者導向不同案例頁，也會把讀者導回可觀測性、部署平台或事故處理的交接節點。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>案例&lt;/th>
 &lt;th>主要用途&lt;/th>
 &lt;th>常見回扣節點&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Google&lt;/td>
 &lt;td>把可靠性制度化&lt;/td>
 &lt;td>SLO、&lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/post-incident-review/" data-link-title="Post-Incident Review" data-link-desc="說明事故後如何完成復盤、學習與改進閉環">post-incident review&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/toil/" data-link-title="Toil" data-link-desc="說明重複、手動、無永久價值的工作如何成為工程治理對象">toil&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Netflix&lt;/td>
 &lt;td>把故障注入制度化&lt;/td>
 &lt;td>chaos、steady state、FIT&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Amazon&lt;/td>
 &lt;td>把隔離與 &lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/blast-radius/" data-link-title="Blast Radius" data-link-desc="說明事故影響面如何估算與隔離">blast radius&lt;/a> 制度化&lt;/td>
 &lt;td>cell、shard、static stability&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Stripe&lt;/td>
 &lt;td>把交易正確性制度化&lt;/td>
 &lt;td>idempotency、canary、migration&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Shopify&lt;/td>
 &lt;td>把峰值準備與演練制度化&lt;/td>
 &lt;td>capacity planning、resiliency matrix&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="vendor--platform-清單">Vendor / Platform 清單&lt;/h2>
&lt;p>實作工具見 &lt;a href="https://tarrragon.github.io/blog/backend/06-reliability/vendors/" data-link-title="可靠性 Vendor 清單" data-link-desc="規劃 CI、壓測、chaos engineering 與 SLO 工具的服務頁撰寫順序與判準">vendors&lt;/a> — T1 收錄 CI（GitHub Actions / CircleCI）、Load test（k6 / Gatling / JMeter / Locust）、Chaos（Chaos Mesh / LitmusChaos / Gremlin / Toxiproxy）、SLO（Nobl9 / Sloth）共 12 個 vendor 骨架。跟 &lt;a href="https://tarrragon.github.io/blog/backend/06-reliability/cases/" data-link-title="可靠性服務案例庫" data-link-desc="按服務組織的 SRE 實踐案例庫，累積架構脈絡與工程文化">cases/&lt;/a> 是不同維度（cases 是教學案例來源、vendors 是實作工具）。&lt;/p></description><content:encoded><![CDATA[<p>可靠性驗證模組的核心目標是說明測試如何從單一函式擴展到整個後端系統。語言教材會處理 unit test、table-driven / parameterized test、race / async test 與 integration test；本模組負責 <a href="/blog/backend/knowledge-cards/ci-pipeline/" data-link-title="CI Pipeline" data-link-desc="說明持續整合流程如何在合併前驗證品質與相容性">CI pipeline</a>、壓力測試、fuzz campaign、chaos testing、SLO 與 <a href="/blog/backend/knowledge-cards/release-gate/" data-link-title="Release Gate" data-link-desc="說明變更在正式釋出前如何通過或阻擋">Release Gate</a>。</p>
<p>本輪規劃採問題驅動方法、用 SRE 領域 first-class 詞彙（<a href="/blog/backend/04-observability/sli-slo-signal/" data-link-title="4.6 SLI 量測與 SLO 訊號設計" data-link-desc="把可靠性目標的訊號從 metric 端設計好、餵給 6.6 SLO 政策">SLI</a> / <a href="/blog/backend/06-reliability/slo-error-budget/" data-link-title="6.6 SLO 與 Error Budget 政策" data-link-desc="把可靠性目標轉成可驗證量測與凍結條件">SLO</a> / <a href="/blog/backend/knowledge-cards/error-budget/" data-link-title="Error Budget" data-link-desc="說明 SLO 允許的失敗額度如何影響發版與可靠性投入">Error Budget</a> / Failure Mode / Chaos Hypothesis），把驗證議題拆成問題節點，蒐集公開 SRE 實踐作為服務級案例庫，再把控制面交接到可觀測性、部署平台與事故處理模組落地。</p>
<h2 id="驗證角色">驗證角色</h2>
<p>可靠性驗證的角色是把「系統會不會在真實壓力下失敗」變成可預演的工程問題。這一層不負責寫測試語法，也不負責定義服務功能，而是負責定義哪些失效值得被主動打破、哪一種訊號可以證明風險存在、哪一種門檻可以阻止變更往下流。</p>
<p>當讀者把驗證看成流程，就會自然分出三個層次。第一層是訊號，先知道要看什麼。第二層是演練，先知道要怎麼打。第三層是放行，先知道什麼情況需要暫停或退回。這三層分別對應可觀測性、可靠性驗證與交付平台的責任。</p>
<h2 id="問題節點">問題節點</h2>
<p>問題節點先描述失效風險，再描述驗證手段。這樣寫的好處是，讀者能先理解「為什麼要驗證」，再看到「怎麼驗證」，讓工具名回到解題手段的位置。</p>
<table>
  <thead>
      <tr>
          <th>節點</th>
          <th>驗證問題</th>
          <th>常見訊號</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>CI pipeline</td>
          <td>測試是否真的攔住回歸、artifact 是否可重播</td>
          <td>flaky rate、test duration、build queue</td>
      </tr>
      <tr>
          <td>Load test</td>
          <td>真實負載是否被模型覆蓋、瓶頸是否被提早暴露</td>
          <td>latency curve、throughput ceiling、error rate</td>
      </tr>
      <tr>
          <td>Fuzz campaign</td>
          <td>邊界輸入是否能觸發 crash、corpus 是否持續擴充</td>
          <td>crash reproduction、coverage delta</td>
      </tr>
      <tr>
          <td>Chaos testing</td>
          <td>依賴失效後系統是否仍能維持服務、回復路徑是否可執行</td>
          <td>steady state drift、rollback success rate</td>
      </tr>
      <tr>
          <td>SLO / Error Budget</td>
          <td>可靠性是否已經被消耗、變更是否還能繼續推進</td>
          <td><a href="/blog/backend/knowledge-cards/burn-rate/" data-link-title="Burn Rate" data-link-desc="說明 error budget 消耗速度如何支援告警與事故分級">burn rate</a>、<a href="/blog/backend/knowledge-cards/error-budget/" data-link-title="Error Budget" data-link-desc="說明 SLO 允許的失敗額度如何影響發版與可靠性投入">error budget</a> remaining</td>
      </tr>
  </tbody>
</table>
<p>這張表的責任是提供路由。每一列都要回到服務案例庫，從公開實踐找出真實世界的樣本，把問題節點和失效模式綁在一起。</p>
<h2 id="案例庫讀法">案例庫讀法</h2>
<p>案例庫的責任是提供幾種反覆出現的失效與驗證模式。Google、Netflix、Amazon、Stripe 與 Shopify 這五個 T1 案例，分別對應量化門檻、主動故障注入、隔離邊界、交易正確性與峰值準備。</p>
<p>當讀者遇到某個驗證節點卡住時，可以先問三個問題。第一，現在缺的是訊號還是門檻。第二，失敗是在單一服務內還是在依賴鏈上。第三，這種風險更像回歸、容量、變更還是恢復問題。這三個問題會把讀者導向不同案例頁，也會把讀者導回可觀測性、部署平台或事故處理的交接節點。</p>
<table>
  <thead>
      <tr>
          <th>案例</th>
          <th>主要用途</th>
          <th>常見回扣節點</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Google</td>
          <td>把可靠性制度化</td>
          <td>SLO、<a href="/blog/backend/knowledge-cards/post-incident-review/" data-link-title="Post-Incident Review" data-link-desc="說明事故後如何完成復盤、學習與改進閉環">post-incident review</a>、<a href="/blog/backend/knowledge-cards/toil/" data-link-title="Toil" data-link-desc="說明重複、手動、無永久價值的工作如何成為工程治理對象">toil</a></td>
      </tr>
      <tr>
          <td>Netflix</td>
          <td>把故障注入制度化</td>
          <td>chaos、steady state、FIT</td>
      </tr>
      <tr>
          <td>Amazon</td>
          <td>把隔離與 <a href="/blog/backend/knowledge-cards/blast-radius/" data-link-title="Blast Radius" data-link-desc="說明事故影響面如何估算與隔離">blast radius</a> 制度化</td>
          <td>cell、shard、static stability</td>
      </tr>
      <tr>
          <td>Stripe</td>
          <td>把交易正確性制度化</td>
          <td>idempotency、canary、migration</td>
      </tr>
      <tr>
          <td>Shopify</td>
          <td>把峰值準備與演練制度化</td>
          <td>capacity planning、resiliency matrix</td>
      </tr>
  </tbody>
</table>
<h2 id="vendor--platform-清單">Vendor / Platform 清單</h2>
<p>實作工具見 <a href="/blog/backend/06-reliability/vendors/" data-link-title="可靠性 Vendor 清單" data-link-desc="規劃 CI、壓測、chaos engineering 與 SLO 工具的服務頁撰寫順序與判準">vendors</a> — T1 收錄 CI（GitHub Actions / CircleCI）、Load test（k6 / Gatling / JMeter / Locust）、Chaos（Chaos Mesh / LitmusChaos / Gremlin / Toxiproxy）、SLO（Nobl9 / Sloth）共 12 個 vendor 骨架。跟 <a href="/blog/backend/06-reliability/cases/" data-link-title="可靠性服務案例庫" data-link-desc="按服務組織的 SRE 實踐案例庫，累積架構脈絡與工程文化">cases/</a> 是不同維度（cases 是教學案例來源、vendors 是實作工具）。</p>
<p>進入工具比較前，先回到 <a href="/blog/backend/00-service-selection/operations-control-service-selection/" data-link-title="0.12 觀測、可靠性與事故服務選型" data-link-desc="從訊號、驗證與響應三層能力判斷操作控制服務的選型順序">觀測、可靠性與事故服務選型</a> 判斷目前缺的是驗證層能力，還是缺少可觀測性的訊號 baseline 或事故處理的接手流程。可靠性工具選型要以「能否安全驗證失敗」為主軸，CI、load、chaos 或 SLO 工具名稱只是落地選項。</p>
<p>Deep article（工具自身的配置、故障、容量）跟 migration playbook（跨工具遷移流程）的撰寫進度見 <a href="/blog/backend/06-reliability/vendors/" data-link-title="可靠性 Vendor 清單" data-link-desc="規劃 CI、壓測、chaos engineering 與 SLO 工具的服務頁撰寫順序與判準">vendors/</a> 的「內容覆蓋進度」段。</p>
<h2 id="規劃方向">規劃方向</h2>
<p>本輪規劃的核心是把模組從「驗證手段列表」升級成「失敗風險節點 + 服務級案例庫」兩層結構：</p>
<ol>
<li><strong>問題節點先行</strong>：6.1-6.5 主章已建立、補 6.6（SLO/Error Budget）/ 6.7（DR &amp; Rollback Rehearsal）/ 6.8（Release Gate &amp; Change Cadence）/ 6.9（Capacity &amp; Cost）等節點，不綁特定框架。</li>
<li><strong>服務級案例庫</strong>：以公開 SRE 實踐（Google / Netflix / Amazon / Stripe / Shopify 等）作 cases，每個服務一個資料夾、累積架構脈絡與多次驗證案例。</li>
<li><strong>資安驗證是其中一類</strong>：跟 07 的交接點維持，但 07 的紅藍隊框架不外推到本模組 — SRE 自有 Failure Mode / Pre-mortem / FMEA / Chaos Hypothesis 等 first-class 詞彙、不需要藉攻防隱喻表達。</li>
</ol>
<p>不經實作即可推進的理由：可靠性的價值在「失敗模式預判與驗證設計」，這層跟具體框架解耦，SRE 公開素材成熟，符合先建概念層的條件。</p>
<h2 id="模組方法">模組方法</h2>
<p>問題驅動方法的核心是讓案例退到證據角色，讓知識網以失敗風險為主體。</p>
<ol>
<li>先定義驗證環節問題與失敗風險邊界。</li>
<li>再定義判讀訊號（容量門檻、退化曲線、依賴失效模式）與門檻條件。</li>
<li>接著定義交接路由與前置控制面。</li>
<li>最後在問題觸發時引用對應服務的 SRE 案例。</li>
</ol>
<h2 id="模組分工定位">模組分工定位</h2>
<p>本模組提供觀念、判讀與路由。實作細節由對應模組承接，確保概念層與實作層分工清晰。</p>
<ul>
<li><code>backend/04-observability</code>：可觀測性模組，負責訊號定義、SLO 量測與 alert 治理實作。</li>
<li><code>backend/05-deployment-platform</code>：rollout、rollback、流量切換與環境管理實作。</li>
<li><code>backend/07-security-data-protection</code>：權限、稽核與高風險演練約束實作。</li>
<li><code>backend/08-incident-response</code>：事故處理模組，負責事故指揮、分級與復盤的事中事後流程。</li>
</ul>
<h2 id="從章節到實作的-chain">從章節到實作的 chain</h2>
<p>各章節交付三樣：問題節點清單、判讀訊號、控制面 link。判讀完成後沿兩條 chain 進入 implementation：</p>
<ol>
<li><strong>Mechanism chain</strong>：點問題節點表的 <code>[control-name]</code> link 進 <a href="/blog/backend/knowledge-cards/" data-link-title="Knowledge Cards" data-link-desc="用原子化卡片整理後端服務選型前需要理解的 domain knowhow">knowledge-cards</a>、那層展開機制 / 邊界 / context-dependence。例：<code>[circuit-breaker]</code> 的 knowledge-card 是該 control 的 mechanism SSoT。</li>
<li><strong>Delivery chain</strong>：章節「交接路由」欄位指向下游模組，包括可觀測性（訊號 / SLO）、部署平台（rollout / rollback）、資安與資料保護（權限約束）與事故處理（事故閉環）。</li>
</ol>
<p>兩條 chain 走完，控制面交付完整。Implementation 強度取決於兩條 chain 的完成度，章節閱讀本身完成 routing 階段。</p>
<h2 id="跟既有模組的串接">跟既有模組的串接</h2>
<p>本模組是「觀測 → 驗證 → 事故」閉環的中段、承接資安概念判讀、同時餵給事故處理閉環。資安驗證僅是驗證的一個子集、其他多數驗證是容量 / 變更 / 依賴類。</p>
<p><strong>觀測、驗證與事故閉環交接基線</strong>：</p>
<ul>
<li><strong>來自 <a href="/blog/backend/04-observability/" data-link-title="模組四：可觀測性平台" data-link-desc="整理 log、metric、trace、dashboard 與 alert 的後端操作實務">可觀測性平台</a></strong>：SLO / SLI 量測 baseline、production 訊號是 chaos hypothesis 與 SLO 政策的依據。沒有可信訊號就沒有可信驗證。</li>
<li><strong>餵給 <a href="/blog/backend/04-observability/" data-link-title="模組四：可觀測性平台" data-link-desc="整理 log、metric、trace、dashboard 與 alert 的後端操作實務">可觀測性平台</a></strong>：驗證需求驅動訊號設計 — chaos experiment 需要新 metric、load test 需要新 dashboard、SLO 政策需要新 alert rule。</li>
<li><strong>餵給 <a href="/blog/backend/08-incident-response/" data-link-title="模組八：事故處理與復盤" data-link-desc="用 IR 領域詞彙建問題節點、以服務級案例庫累積事故脈絡，先建概念與案例庫再進實作交接">事故處理與復盤</a></strong>：把事前演練結果作為事中決策素材、game day 暴露的 runbook 缺口直接補進值班與演練能力建設。</li>
<li><strong>來自 <a href="/blog/backend/08-incident-response/" data-link-title="模組八：事故處理與復盤" data-link-desc="用 IR 領域詞彙建問題節點、以服務級案例庫累積事故脈絡，先建概念與案例庫再進實作交接">事故處理與復盤</a></strong>：事故 <a href="/blog/backend/knowledge-cards/post-incident-review/" data-link-title="Post-Incident Review" data-link-desc="說明事故後如何完成復盤、學習與改進閉環">post-incident review</a> action items 回寫成新 chaos / DR 演練題目。</li>
<li><strong>詳細閉環說明</strong>：見 <a href="/blog/backend/08-incident-response/observability-reliability-incident-loop/" data-link-title="8.11 Observability / Reliability / Incident Response 閉環" data-link-desc="把 04 / 06 / 08 三個模組的雙向反饋串成可判讀循環，定義閉環健康度判讀訊號">Observability / Reliability / Incident Response 閉環</a>。</li>
</ul>
<p><strong>07 資安交接基線</strong>：</p>
<ul>
<li>來自 <a href="/blog/backend/07-security-data-protection/data-protection-and-masking-governance/" data-link-title="7.4 資料保護與遮罩治理" data-link-desc="以問題驅動方式整理資料分級、遮罩、匯出與備份治理">7.4 資料保護與遮罩治理</a>：承接資料外送與回復排序的驗證場景。</li>
<li>來自 <a href="/blog/backend/07-security-data-protection/audit-trail-and-accountability-boundary/" data-link-title="7.7 稽核追蹤與責任邊界" data-link-desc="以問題驅動方式整理高風險操作追蹤、可回查與責任切分">7.7 稽核追蹤與責任邊界</a>：承接事件證據完整性與回查演練。</li>
<li>來自紅隊 <a href="/blog/backend/07-security-data-protection/red-team/resource-abuse/" data-link-title="7.R4 資源濫用與可用性破壞" data-link-desc="說明攻擊者如何把合法操作放大成容量壓力或服務退化">7.R4 資源濫用與可用性破壞</a>：承接壓力放大路徑與降級回復驗證。</li>
<li>來自 <a href="/blog/backend/07-security-data-protection/security-and-reliability-shared-controls/" data-link-title="7.23 資安與可靠性的共同控制面" data-link-desc="建立資安與可靠性共同控制面的交集，整合 rollback、containment、degradation 與 evidence">7.23 資安與可靠性的共同控制面</a>：承接 rollback、containment、degradation 共用語意。</li>
</ul>
<h2 id="與語言教材的分工">與語言教材的分工</h2>
<p>語言教材處理測試程式如何寫得可讀、可重現、可定位。Backend reliability 模組處理測試如何在 CI、環境、資料庫、broker、網路與部署流程中被執行。</p>
<h2 id="企業案例補充">企業案例補充</h2>
<p>可靠性案例補充的重點是「驗證機制如何被制度化」。閱讀時先抓它在保護哪一種風險，再對照本模組的驗證節點與放行門檻。</p>
<table>
  <thead>
      <tr>
          <th>企業案例</th>
          <th>主要可靠性選型問題</th>
          <th>優先回讀章節</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="https://shopify.engineering/four-steps-creating-effective-game-day-tests">Four Steps to Creating Effective Game Day Tests</a></td>
          <td>Game Day 如何從想法變成可執行驗證流程</td>
          <td><a href="/blog/backend/06-reliability/chaos-testing/" data-link-title="6.4 chaos testing" data-link-desc="把故障注入從工具操作升級成可驗證流程：先定義穩態，再按依賴類型設計注入、控制 blast radius 與收集證據">6.4</a>、<a href="/blog/backend/06-reliability/experiment-safety-boundary/" data-link-title="6.20 Experiment Safety Boundary" data-link-desc="定義 chaos、load test、DR drill 的 [blast radius](/backend/knowledge-cards/blast-radius/)、停止條件與權限約束">6.20</a></td>
      </tr>
      <tr>
          <td><a href="https://shopify.engineering/resiliency-planning-for-high-traffic-events">Resiliency Planning for High-Traffic Events</a></td>
          <td>高流量活動前如何做風險建模與演練</td>
          <td><a href="/blog/backend/06-reliability/capacity-cost/" data-link-title="6.9 容量與成本邊界" data-link-desc="把容量規劃跟成本約束變成驗證輸入">6.9</a>、<a href="/blog/backend/06-reliability/steady-state-definition/" data-link-title="6.22 Steady State Definition" data-link-desc="在 chaos 與 failover 前先定義系統應維持的穩定狀態與可接受退化">6.22</a></td>
      </tr>
      <tr>
          <td><a href="https://aws.amazon.com/builders-library/workload-isolation-using-shuffle-sharding/">Workload isolation using shuffle-sharding</a></td>
          <td>多租戶系統如何把故障影響限制在局部</td>
          <td><a href="/blog/backend/06-reliability/dependency-reliability-budget/" data-link-title="6.14 Dependency Reliability Budget" data-link-desc="把內外依賴的可靠性納入 SLO 計算與設計約束">6.14</a>、<a href="/blog/backend/06-reliability/experiment-safety-boundary/" data-link-title="6.20 Experiment Safety Boundary" data-link-desc="定義 chaos、load test、DR drill 的 [blast radius](/backend/knowledge-cards/blast-radius/)、停止條件與權限約束">6.20</a></td>
      </tr>
      <tr>
          <td><a href="https://sre.google/workbook/error-budget-policy/">Google SRE Workbook: Example Error Budget Policy</a></td>
          <td>Error budget 如何直接影響 release 節奏</td>
          <td><a href="/blog/backend/06-reliability/slo-error-budget/" data-link-title="6.6 SLO 與 Error Budget 政策" data-link-desc="把可靠性目標轉成可驗證量測與凍結條件">6.6</a>、<a href="/blog/backend/06-reliability/release-gate/" data-link-title="6.8 Release Gate 與變更節奏" data-link-desc="把驗證、migration、相容性納入放行判準">6.8</a></td>
      </tr>
  </tbody>
</table>
<p>若要延續案例擴充，先從 <a href="/blog/backend/00-service-selection/enterprise-selection-case-atlas/" data-link-title="0.14 企業選型案例圖譜" data-link-desc="蒐集不同類型與不同規模企業的技術選型案例，作為後端選型判讀的跨情境補充。">0.14 企業選型案例圖譜</a> 找到對應規模與產業，再回到本模組決定要補哪一類驗證節點（6.6、6.19、6.20、6.22、6.24）。案例頁與主章的關係是「案例提供壓力樣本，主章提供放行規則」。</p>
<p>產業情境回寫覆蓋 7 個產業，每個產業回寫到 2 個最相關的章節。不同產業的約束類型不同（監管 / 即時互動 / 合規 / 季節峰值 / 多租戶 / 即時交付 / 邊緣可靠性），通用章節覆蓋不到的差異由產業情境段補齊。</p>
<table>
  <thead>
      <tr>
          <th>產業案例類型</th>
          <th>約束類型</th>
          <th>驗證回寫重點</th>
          <th>章節路由</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>FinTech</td>
          <td>監管 + 交易正確性</td>
          <td>error budget 觸發凍結、交易關鍵路徑的 release gate</td>
          <td><a href="/blog/backend/06-reliability/slo-error-budget/" data-link-title="6.6 SLO 與 Error Budget 政策" data-link-desc="把可靠性目標轉成可驗證量測與凍結條件">6.6</a>、<a href="/blog/backend/06-reliability/release-gate/" data-link-title="6.8 Release Gate 與變更節奏" data-link-desc="把驗證、migration、相容性納入放行判準">6.8</a></td>
      </tr>
      <tr>
          <td>Gaming</td>
          <td>即時互動 + 使用者體驗</td>
          <td>高峰事件前穩態定義、規則推送回退與停止條件</td>
          <td><a href="/blog/backend/06-reliability/steady-state-definition/" data-link-title="6.22 Steady State Definition" data-link-desc="在 chaos 與 failover 前先定義系統應維持的穩定狀態與可接受退化">6.22</a>、<a href="/blog/backend/06-reliability/rule-rollout-safety-gate/" data-link-title="6.24 規則推送安全閘門" data-link-desc="把規則、策略與控制面配置推送從部署步驟升級為可靠性 gate，避免小變更在秒級擴散成全網事故。">6.24</a></td>
      </tr>
      <tr>
          <td>Healthcare</td>
          <td>合規 + 臨床安全</td>
          <td>DR rehearsal 節奏、合規約束下的恢復驗證與 readiness</td>
          <td><a href="/blog/backend/06-reliability/dr-rollback-rehearsal/" data-link-title="6.7 DR 演練與 Rollback Rehearsal" data-link-desc="把回復路徑從紙面計畫變成定期可重播、可量測的驗證流程">6.7</a>、<a href="/blog/backend/06-reliability/reliability-readiness-review/" data-link-title="6.19 Reliability Readiness Review" data-link-desc="把上線前、重大變更前與高風險操作前的可靠性準備度變成可檢查門檻">6.19</a></td>
      </tr>
      <tr>
          <td>電商 / 零售</td>
          <td>季節峰值 + 轉換率</td>
          <td>峰值 workload model、容量成本與降級邊界</td>
          <td><a href="/blog/backend/06-reliability/load-testing/" data-link-title="6.2 load test" data-link-desc="把 production 流量結構轉成可重播壓力情境，定位 saturation 轉折與容量邊界">6.2</a>、<a href="/blog/backend/06-reliability/capacity-cost/" data-link-title="6.9 容量與成本邊界" data-link-desc="把容量規劃跟成本約束變成驗證輸入">6.9</a></td>
      </tr>
      <tr>
          <td>SaaS / B2B</td>
          <td>多租戶 SLA + 隔離</td>
          <td>依賴 budget 按 SLA 分配、租戶級穩態定義</td>
          <td><a href="/blog/backend/06-reliability/dependency-reliability-budget/" data-link-title="6.14 Dependency Reliability Budget" data-link-desc="把內外依賴的可靠性納入 SLO 計算與設計約束">6.14</a>、<a href="/blog/backend/06-reliability/steady-state-definition/" data-link-title="6.22 Steady State Definition" data-link-desc="在 chaos 與 failover 前先定義系統應維持的穩定狀態與可接受退化">6.22</a></td>
      </tr>
      <tr>
          <td>串流 / 媒體</td>
          <td>即時交付 + 直播事件</td>
          <td>CDN chaos 與媒體品質 regression</td>
          <td><a href="/blog/backend/06-reliability/chaos-testing/" data-link-title="6.4 chaos testing" data-link-desc="把故障注入從工具操作升級成可驗證流程：先定義穩態，再按依賴類型設計注入、控制 blast radius 與收集證據">6.4</a>、<a href="/blog/backend/06-reliability/performance-regression-gate/" data-link-title="6.13 Performance Regression Gate" data-link-desc="把效能 baseline 從一次性壓測變成持續對齊的 release gate，涵蓋 baseline 設定、判讀方法、variance 控制與退化定位">6.13</a></td>
      </tr>
      <tr>
          <td>IoT / 製造</td>
          <td>邊緣可靠性 + OTA 安全</td>
          <td>firmware rollback 與裝置碎片化 release gate</td>
          <td><a href="/blog/backend/06-reliability/dr-rollback-rehearsal/" data-link-title="6.7 DR 演練與 Rollback Rehearsal" data-link-desc="把回復路徑從紙面計畫變成定期可重播、可量測的驗證流程">6.7</a>、<a href="/blog/backend/06-reliability/release-gate/" data-link-title="6.8 Release Gate 與變更節奏" data-link-desc="把驗證、migration、相容性納入放行判準">6.8</a></td>
      </tr>
  </tbody>
</table>
<h2 id="跨語言適配評估">跨語言適配評估</h2>
<p>可靠性驗證使用方式會受語言的測試框架、fixture 生態、並發測試能力、型別系統、fuzz 支援與容器化工具影響。同步 runtime 要測 thread pool、<a href="/blog/backend/knowledge-cards/connection-pool/" data-link-title="Connection Pool" data-link-desc="說明連線池如何限制下游資源並影響服務容量">connection pool</a> 與 <a href="/blog/backend/knowledge-cards/timeout/" data-link-title="Timeout" data-link-desc="說明等待外部操作的時間上限如何保護資源與使用者體驗">timeout</a>；async runtime 要測 event loop blocking、task cancellation 與 <a href="/blog/backend/knowledge-cards/backpressure/" data-link-title="Backpressure" data-link-desc="說明下游處理速度不足時系統如何讓上游依下游能力送出工作">backpressure</a>；動態語言要用 <a href="/blog/backend/knowledge-cards/contract/" data-link-title="Boundary Contract" data-link-desc="說明跨邊界約定如何維持相容與可驗證">contract</a> test 與 runtime validation 補足 schema 風險；強型別語言要把型別安全延伸到外部 payload 與 migration 相容性。</p>
<h2 id="主章規劃">主章規劃</h2>
<table>
  <thead>
      <tr>
          <th>章節</th>
          <th>主題</th>
          <th>核心責任</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="/blog/backend/06-reliability/ci-pipeline/" data-link-title="6.1 CI pipeline" data-link-desc="CI pipeline 的分層策略、artifact 管理、flaky 治理與 release gate 輸入">6.1 CI pipeline</a></td>
          <td>CI Pipeline</td>
          <td>分層測試、快慢測試與 artifact 管理</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/load-testing/" data-link-title="6.2 load test" data-link-desc="把 production 流量結構轉成可重播壓力情境，定位 saturation 轉折與容量邊界">6.2 Load test</a></td>
          <td>Load Test</td>
          <td>定義 workload、吞吐與延遲基準</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/fuzz-campaign/" data-link-title="6.3 fuzz campaign" data-link-desc="用自動化輸入探索覆蓋未知邊界：target 設計、corpus 管理、crash reproduction 與 CI 整合">6.3 Fuzz campaign</a></td>
          <td>Fuzz Campaign</td>
          <td>建立輸入邊界、corpus 與 crash reproduction</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/chaos-testing/" data-link-title="6.4 chaos testing" data-link-desc="把故障注入從工具操作升級成可驗證流程：先定義穩態，再按依賴類型設計注入、控制 blast radius 與收集證據">6.4 Chaos testing</a></td>
          <td>Chaos Testing</td>
          <td>模擬 broker、DB、network 與節點故障</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/failure-mode-pre-mortem/" data-link-title="6.5 失敗模式預判（Pre-mortem 與 FMEA）" data-link-desc="用 pre-mortem 反向推導失敗路徑、用 FMEA 分類軸評估驗證缺口，把可靠性盲區變成可排序的改善輸入">6.5 失敗模式預判（Pre-mortem 與 FMEA）</a></td>
          <td>Failure Mode Pre-mortem</td>
          <td>用驗證盲區、演練缺口與門檻失真檢查 release 風險用 SRE first-class 詞彙定義失敗模式預判</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/slo-error-budget/" data-link-title="6.6 SLO 與 Error Budget 政策" data-link-desc="把可靠性目標轉成可驗證量測與凍結條件">6.6 SLO 與 Error Budget 政策</a></td>
          <td>SLO &amp; Error Budget</td>
          <td>把可靠性目標轉成可驗證量測與凍結條件</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/dr-rollback-rehearsal/" data-link-title="6.7 DR 演練與 Rollback Rehearsal" data-link-desc="把回復路徑從紙面計畫變成定期可重播、可量測的驗證流程">6.7 DR 演練與 Rollback Rehearsal</a></td>
          <td>DR &amp; Rollback Rehearsal</td>
          <td>把回復路徑變成定期可重播流程</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/release-gate/" data-link-title="6.8 Release Gate 與變更節奏" data-link-desc="把驗證、migration、相容性納入放行判準">6.8 Release Gate 與變更節奏</a></td>
          <td>Release Gate</td>
          <td>把驗證、migration、相容性納入放行判準</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/capacity-cost/" data-link-title="6.9 容量與成本邊界" data-link-desc="把容量規劃跟成本約束變成驗證輸入">6.9 容量與成本邊界</a></td>
          <td>Capacity &amp; Cost</td>
          <td>把容量規劃跟成本約束變成驗證輸入</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/contract-testing/" data-link-title="6.10 Contract Testing 與 Schema 演進" data-link-desc="把跨服務 / API / event schema 的隱性期待變成可驗證契約，控制演進相容性">6.10 Contract Testing 與 Schema 演進</a></td>
          <td>Contract Testing</td>
          <td>把跨服務 / API / event schema 契約變成可驗證 artifact</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/migration-safety/" data-link-title="6.11 Migration Safety 與 DB Rollout" data-link-desc="把 schema migration 從一次性事件變成可逆、可漸進的 rollout 流程">6.11 Migration Safety 與 DB Rollout</a></td>
          <td>Migration Safety</td>
          <td>把 schema migration 變成可逆、可漸進的 rollout 流程</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/idempotency-replay/" data-link-title="6.12 Idempotency 與 Replay 驗證" data-link-desc="把重試、重播與冪等性從口頭約定變成可驗證屬性">6.12 Idempotency 與 Replay 驗證</a></td>
          <td>Idempotency &amp; Replay</td>
          <td>把重試 / 重播 / 冪等從口頭約定變成可驗證屬性</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/performance-regression-gate/" data-link-title="6.13 Performance Regression Gate" data-link-desc="把效能 baseline 從一次性壓測變成持續對齊的 release gate，涵蓋 baseline 設定、判讀方法、variance 控制與退化定位">6.13 Performance Regression Gate</a></td>
          <td>Perf Regression Gate</td>
          <td>把效能 baseline 從一次性壓測變成持續 release gate</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/dependency-reliability-budget/" data-link-title="6.14 Dependency Reliability Budget" data-link-desc="把內外依賴的可靠性納入 SLO 計算與設計約束">6.14 Dependency Reliability Budget</a></td>
          <td>Dependency Budget</td>
          <td>把內外依賴可靠性納入 SLO 計算與設計約束</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/environment-parity/" data-link-title="6.15 Environment Parity 與漂移控制" data-link-desc="把 staging / preprod / prod 之間的差異視為一級風險，按漂移來源分類偵測與治理">6.15 Environment Parity 與漂移控制</a></td>
          <td>Environment Parity</td>
          <td>把 staging / preprod / prod 差異作為一級風險治理</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/test-data-management/" data-link-title="6.16 Test Data Management" data-link-desc="把 fixture / seed / production-like data 作為跨模組共用 artifact，治理資料層次、遮罩策略與可重現性">6.16 Test Data Management</a></td>
          <td>Test Data Management</td>
          <td>把 fixture / seed / production-like data 作為跨模組共用 artifact</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/feature-flag-governance/" data-link-title="6.17 Feature Flag Governance" data-link-desc="把 feature flag 從上線開關升級為有角色分類、lifecycle 管理與 debt 治理的 runtime artifact">6.17 Feature Flag Governance</a></td>
          <td>Feature Flag Governance</td>
          <td>把 feature flag 從上線工具升級為有 lifecycle / debt 治理的 artifact</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/reliability-metrics-governance/" data-link-title="6.18 Reliability Metrics Governance" data-link-desc="DORA / SPACE 指標的選用、量測陷阱、anti-gaming 與團隊階段適配">6.18 Reliability Metrics Governance</a></td>
          <td>Reliability Metrics</td>
          <td>DORA / SPACE / CFR 等可靠性指標的選用、量測與治理</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/reliability-readiness-review/" data-link-title="6.19 Reliability Readiness Review" data-link-desc="把上線前、重大變更前與高風險操作前的可靠性準備度變成可檢查門檻">6.19 Reliability Readiness Review</a></td>
          <td>Reliability Readiness Review</td>
          <td>把上線前、重大變更前與高風險操作前的可靠性準備度變成可檢查門檻</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/experiment-safety-boundary/" data-link-title="6.20 Experiment Safety Boundary" data-link-desc="定義 chaos、load test、DR drill 的 [blast radius](/backend/knowledge-cards/blast-radius/)、停止條件與權限約束">6.20 Experiment Safety Boundary</a></td>
          <td>Experiment Safety Boundary</td>
          <td>定義 chaos、load test、DR drill 的 blast radius、停止條件與權限約束</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/reliability-debt-backlog/" data-link-title="6.21 Reliability Debt Backlog" data-link-desc="把反覆事故、演練缺口與手動修復累積成可排序、可關閉的 reliability debt">6.21 Reliability Debt Backlog</a></td>
          <td>Reliability Debt Backlog</td>
          <td>把反覆事故、演練缺口與手動修復累積成可排序、可關閉的 reliability debt</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/steady-state-definition/" data-link-title="6.22 Steady State Definition" data-link-desc="在 chaos 與 failover 前先定義系統應維持的穩定狀態與可接受退化">6.22 Steady State Definition</a></td>
          <td>Steady State Definition</td>
          <td>在 chaos 與 failover 前先定義系統應維持的穩定狀態與可接受退化</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/verification-evidence-handoff/" data-link-title="6.23 Verification Evidence Handoff" data-link-desc="把 SLO、load、chaos、DR 與 readiness 結果包成 release / incident 可用證據">6.23 Verification Evidence Handoff</a></td>
          <td>Verification Evidence Handoff</td>
          <td>把 SLO、load、chaos、DR 與 readiness 結果包成 release / incident 可用證據</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/rule-rollout-safety-gate/" data-link-title="6.24 規則推送安全閘門" data-link-desc="把規則、策略與控制面配置推送從部署步驟升級為可靠性 gate，避免小變更在秒級擴散成全網事故。">6.24 規則推送安全閘門</a></td>
          <td>Rule Rollout Safety Gate</td>
          <td>把規則、策略與控制面配置推送變更納入高擴散風險 gate</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/provider-dependency-release-gate/" data-link-title="6.25 Provider Dependency Release Gate 實作示範" data-link-desc="以 payment provider 變更示範 release gate 如何結合 evidence、stop condition 與 rollback window。">6.25 Provider Dependency Release Gate</a></td>
          <td>Provider Dependency Release Gate 實作示範</td>
          <td>以 payment provider 變更示範 gate、stop condition 與 <a href="/blog/backend/knowledge-cards/rollback-window/" data-link-title="Rollback Window" data-link-desc="說明變更進入 production 後還能用哪種方式回退或改路線的時間與條件">rollback window</a> 的實作交接</td>
      </tr>
  </tbody>
</table>
<blockquote>
<p>註：6.1-6.25 已完成概念層與第一篇實作示範正文，案例庫可支援 SLO、readiness、experiment boundary、evidence handoff 與 release gate 實作路由。後續工作重點是案例深挖與主章回寫密度，不是章節補齊。</p></blockquote>
<h2 id="個案前拓展空間">個案前拓展空間</h2>
<p>個案前拓展的責任是先建立驗證判準，再讓服務案例成為證據。可靠性驗證適合補「怎麼安全地驗證失敗」這類跨服務流程，不適合先把 Google / Netflix / Amazon 的故事直接展開。</p>
<table>
  <thead>
      <tr>
          <th>拓展方向</th>
          <th>補充理由</th>
          <th>先放位置</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Reliability Readiness Review</td>
          <td>服務進入 production 前需要有可檢查的可靠性門檻</td>
          <td>6.19</td>
      </tr>
      <tr>
          <td>Experiment Safety Boundary</td>
          <td>故障注入與壓測需要明確 blast radius 與停止條件</td>
          <td>6.20</td>
      </tr>
      <tr>
          <td>Reliability Debt Backlog</td>
          <td>復盤與演練缺口需要形成可排序的改善 backlog</td>
          <td>6.21</td>
      </tr>
      <tr>
          <td>Steady State Definition</td>
          <td>chaos 與 DR drill 需要先知道什麼狀態算穩定</td>
          <td>6.22</td>
      </tr>
  </tbody>
</table>
<p>本輪先完成其中三個前置章節：Reliability Readiness Review、Experiment Safety Boundary 與 Steady State Definition，並補強 6.6 SLO / Error Budget 政策。服務案例完成後，若教訓是「上線前準備不足」，回寫 Reliability Readiness Review；若是「實驗本身造成過大影響」，回寫 Experiment Safety Boundary；若是「反覆事故沒有被工程化」，回寫 Reliability Debt Backlog；若是「chaos 沒有穩態定義」，回寫 Steady State Definition。</p>
<h2 id="後續深化方向">後續深化方向</h2>
<p>06 後續深化以「多事件案例鏈、驗證證據欄位統一、事故路由回寫」為主。可靠性驗證承接 04 的訊號可信度，並把結果穩定交給 08 的 incident 決策流程。</p>
<table>
  <thead>
      <tr>
          <th>深化方向</th>
          <th>主要責任</th>
          <th>回寫路由</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>多事件案例鏈</td>
          <td>同服務補第二、第三事件，提升 longitudinal 判讀</td>
          <td><a href="/blog/backend/06-reliability/cases/" data-link-title="可靠性服務案例庫" data-link-desc="按服務組織的 SRE 實踐案例庫，累積架構脈絡與工程文化">cases/</a></td>
      </tr>
      <tr>
          <td>證據欄位統一</td>
          <td>把 SLO / chaos / rollout 證據變成同一決策格式</td>
          <td><a href="/blog/backend/06-reliability/verification-evidence-handoff/" data-link-title="6.23 Verification Evidence Handoff" data-link-desc="把 SLO、load、chaos、DR 與 readiness 結果包成 release / incident 可用證據">6.23</a>、<a href="/blog/backend/08-incident-response/incident-decision-log/" data-link-title="8.19 Incident Decision Log" data-link-desc="把事中假設、決策、證據、回退條件與責任人留下可復盤紀錄">8.19</a></td>
      </tr>
      <tr>
          <td>風險回寫治理</td>
          <td>把 repeated incident 與手動補救回寫 backlog</td>
          <td><a href="/blog/backend/06-reliability/reliability-debt-backlog/" data-link-title="6.21 Reliability Debt Backlog" data-link-desc="把反覆事故、演練缺口與手動修復累積成可排序、可關閉的 reliability debt">6.21</a>、<a href="/blog/backend/08-incident-response/incident-evidence-write-back/" data-link-title="8.22 Incident Evidence Write-back" data-link-desc="把事故證據、決策與復盤結論回寫到 observability、reliability 與 runbook">8.22</a></td>
      </tr>
  </tbody>
</table>
<h2 id="實作探討入口">實作探討入口</h2>
<p>進入實作層時，06 建議先做一條最小 release gate：同一個變更同時具備 <code>SLO 狀態、readiness 結論、experiment 證據、rollback 條件</code> 四欄，並寫入 <a href="/blog/backend/06-reliability/verification-evidence-handoff/" data-link-title="6.23 Verification Evidence Handoff" data-link-desc="把 SLO、load、chaos、DR 與 readiness 結果包成 release / incident 可用證據">6.23</a> 供 <a href="/blog/backend/08-incident-response/incident-decision-log/" data-link-title="8.19 Incident Decision Log" data-link-desc="把事中假設、決策、證據、回退條件與責任人留下可復盤紀錄">8.19</a> 直接調用。</p>
<p>首篇示範已完成： <a href="/blog/backend/06-reliability/provider-dependency-release-gate/" data-link-title="6.25 Provider Dependency Release Gate 實作示範" data-link-desc="以 payment provider 變更示範 release gate 如何結合 evidence、stop condition 與 rollback window。">6.25 Provider Dependency Release Gate 實作示範</a>。</p>
<p>完成條件是每篇都能回答四件事：可靠性目標、驗證訊號、停止或凍結條件、事故或發布路由。這樣可靠性章節才會成為「觀測 → 驗證 → 事故」閉環的中段，而不是測試工具清單。</p>
<h2 id="服務案例庫規劃">服務案例庫規劃</h2>
<p>服務作為案例單位、累積架構脈絡與多次驗證實踐。每個服務一個資料夾、收錄該服務的 SRE 實踐、failure mode 與 chaos / DR 案例。資料夾位置：<code>content/backend/06-reliability/cases/{vendor-service}/</code>。</p>
<h3 id="t1必寫sre-教學標竿">T1（必寫、SRE 教學標竿）</h3>
<table>
  <thead>
      <tr>
          <th>服務</th>
          <th>教學重點</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="/blog/backend/06-reliability/cases/google/" data-link-title="Google" data-link-desc="Google SRE 實踐原典：SLI / SLO / Error Budget / Postmortem 文化">google</a></td>
          <td>SRE Book 原典 / SLI-SLO / <a href="/blog/backend/knowledge-cards/post-incident-review/" data-link-title="Post-Incident Review" data-link-desc="說明事故後如何完成復盤、學習與改進閉環">post-incident review</a> culture / error budget</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/cases/netflix/" data-link-title="Netflix" data-link-desc="Netflix Chaos Engineering 起源：Simian Army / FIT / 規模化故障注入">netflix</a></td>
          <td>Chaos Monkey / Simian Army / FIT 故障注入工具鏈</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/cases/amazon/" data-link-title="Amazon" data-link-desc="Amazon Cell-based Architecture / Shuffle Sharding / Blast Radius 設計">amazon</a></td>
          <td>Cell-based architecture / shuffle sharding / blast radius</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/cases/stripe/" data-link-title="Stripe" data-link-desc="Stripe Deploy Strategy / Game Day / Idempotency 實踐">stripe</a></td>
          <td>Deploy strategy / Game day / canary 與 idempotency</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/cases/shopify/" data-link-title="Shopify" data-link-desc="Shopify BFCM Scaling / Pod-based Isolation / Capacity Planning">shopify</a></td>
          <td>BFCM scaling / pod-based isolation / capacity planning</td>
      </tr>
  </tbody>
</table>
<h3 id="t2補不同視角">T2（補不同視角）</h3>
<table>
  <thead>
      <tr>
          <th>服務</th>
          <th>教學重點</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="/blog/backend/06-reliability/cases/linkedin/" data-link-title="LinkedIn" data-link-desc="LinkedIn Capacity Planning 與 On-call 結構">linkedin</a></td>
          <td>Capacity planning / <a href="/blog/backend/knowledge-cards/on-call/" data-link-title="On-Call" data-link-desc="說明值班制度如何承接告警、事故分級與升級流程">on-call</a> structure</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/cases/honeycomb/" data-link-title="Honeycomb" data-link-desc="Honeycomb Observability-driven SRE 與 SLO 實作">honeycomb</a></td>
          <td>Observability-driven SRE / SLO 實作</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/08-incident-response/cases/cloudflare/" data-link-title="Cloudflare" data-link-desc="Cloudflare 全球 edge 事故時間線與架構脈絡">cloudflare</a></td>
          <td>Edge reliability engineering / 公開實踐（住於 08）</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/cases/microsoft/" data-link-title="Microsoft / Azure SRE" data-link-desc="Microsoft Azure SRE Practices 與 Resilience Patterns">microsoft</a></td>
          <td>Azure SRE / Resilience patterns</td>
      </tr>
  </tbody>
</table>
<h3 id="t3補完">T3（補完）</h3>
<table>
  <thead>
      <tr>
          <th>服務</th>
          <th>教學重點</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="/blog/backend/06-reliability/cases/spotify/" data-link-title="Spotify" data-link-desc="Spotify Chaos Engineering 與 Squad-based SRE">spotify</a></td>
          <td>Squad-based SRE / Backstage</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/cases/pinterest/" data-link-title="Pinterest" data-link-desc="Pinterest Capacity Planning 與儲存架構可靠性">pinterest</a></td>
          <td>Storage capacity / cache reliability</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/cases/meta/" data-link-title="Meta / Facebook" data-link-desc="Meta Reliability Engineering 與超大規模事故學習">meta</a></td>
          <td>2021-10 BGP / Region failover / cell arch</td>
      </tr>
  </tbody>
</table>
<h2 id="模組完成狀態">模組完成狀態</h2>
<p>主章 6.1-6.25 已完成首輪正文，服務案例庫第一批正文已補齊（T1：Google / Netflix / Amazon / Stripe / Shopify；T2/T3：LinkedIn / Honeycomb / Microsoft / Spotify / Pinterest / Meta）。目前重點從「補章節骨架」轉為「補案例深度與跨章節回寫」。</p>
<p>案例正文入口見 <a href="/blog/backend/06-reliability/cases/" data-link-title="可靠性服務案例庫" data-link-desc="按服務組織的 SRE 實踐案例庫，累積架構脈絡與工程文化">可靠性案例庫</a>。每篇案例至少要能回寫一個章節判準（例如 6.6、6.19、6.20、6.22、6.23、6.24），避免案例只停留在事件敘事。</p>
<p>第二批案例深挖已補 Google 與 Netflix 的第二篇正文： <a href="/blog/backend/06-reliability/cases/google/postmortem-action-item-closure-governance/" data-link-title="Google：Postmortem Action Item Closure 治理" data-link-desc="把 blameless postmortem 從會議文件變成可追蹤的可靠性治理機制：action item 分級、完成條件與回寫節奏。">Google Postmortem Closure 治理</a> 與 <a href="/blog/backend/06-reliability/cases/netflix/chaos-monkey-business-hours-guardrails/" data-link-title="Netflix：Business-Hours Chaos 與 Guardrails" data-link-desc="Chaos Monkey 為何刻意在 business hours 執行：把即時應變能力納入驗證，並用 guardrails 限制實驗風險。">Netflix Business-Hours Chaos Guardrails</a>。兩者分別對應 <code>6.21 / 8.5 / 8.22</code> 與 <code>6.19 / 6.20 / 6.22 / 8.6</code> 的制度化回寫。</p>
<p>深挖批次 B 已補 Google 第三篇制度案例： <a href="/blog/backend/06-reliability/cases/google/toil-budget-and-automation-investment-policy/" data-link-title="Google：Toil Budget 與 Automation 投資政策" data-link-desc="把 toil 從感受問題轉成預算問題：用時間配比與自動化回報機制，避免 on-call 壓力長期侵蝕可靠性工程。">Google Toil Budget 與 Automation 投資政策</a>。這篇把 toil ratio 直接接到 <code>6.8 / 6.21 / 8.22</code>，補齊「值班壓力 → 工程投資 → release gate」的決策鏈。</p>
<p>第三批案例補強已補 <code>Netflix</code> 第三篇： <a href="/blog/backend/06-reliability/cases/netflix/fit-failure-injection-evidence-handoff/" data-link-title="Netflix：FIT 證據交接與 Release Gate 回寫" data-link-desc="用 Failure Injection Testing 產出的證據直接驅動 release gate：把實驗結果轉成可放行、可凍結、可回退的決策欄位。">FIT 證據交接與 Release Gate 回寫</a>。這篇把故障注入結果直接接到 <code>6.23 / 6.24 / 8.19 / 8.22</code>，補齊「實驗結果 → 放行決策 → 事故調用」的鏈路。</p>
<h2 id="case-first-第四批8-章-stage-2-擴充">Case-First 第四批：8 章 stage 2 擴充</h2>
<p>依 <a href="/blog/posts/case-first--agent-team-review%E6%95%99%E5%AD%B8%E5%85%A7%E5%AE%B9%E7%9A%84%E7%94%9F%E7%94%A2%E6%B5%81%E7%A8%8B/" data-link-title="Case-First &#43; Agent Team Review：教學內容的生產流程" data-link-desc="Case-first &#43; agent team review 的教學內容生產流程：讀案例庫抽 findings、專責 reviewer 平行審查、polish pass 收系統性殘留。防止通用 best practice 被誤包裝成案例揭露。">Case-First + Agent Team Review 流程</a> 完成 8 個章節的 case-driven 擴充（commit 3c33ea9 / 41c0101）、覆蓋全部 15 個 content case：</p>
<table>
  <thead>
      <tr>
          <th>章節</th>
          <th>擴充內容</th>
          <th>Case 對應</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="/blog/backend/06-reliability/release-gate/" data-link-title="6.8 Release Gate 與變更節奏" data-link-desc="把驗證、migration、相容性納入放行判準">6.8 release-gate</a></td>
          <td>變更分層 + Release Gate 政策、交易類變更的 gate 設計</td>
          <td>MS1 / G2 / S1</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/dependency-reliability-budget/" data-link-title="6.14 Dependency Reliability Budget" data-link-desc="把內外依賴的可靠性納入 SLO 計算與設計約束">6.14 dependency-reliability-budget</a></td>
          <td>失效局部化、跨區故障與回復順序、跨團隊 reliability 契約</td>
          <td>A1 / M1 / SP1</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/reliability-debt-backlog/" data-link-title="6.21 Reliability Debt Backlog" data-link-desc="把反覆事故、演練缺口與手動修復累積成可排序、可關閉的 reliability debt">6.21 reliability-debt-backlog</a></td>
          <td>Action Item 分級跟 Release Gate 綁定、Toil Budget 預算治理</td>
          <td>G2 / G3</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/capacity-cost/" data-link-title="6.9 容量與成本邊界" data-link-desc="把容量規劃跟成本約束變成驗證輸入">6.9 capacity-cost</a></td>
          <td>高峰型容量治理、容量值班分層協同、快取容量特殊性</td>
          <td>H1 / L1 / P1</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/migration-safety/" data-link-title="6.11 Migration Safety 與 DB Rollout" data-link-desc="把 schema migration 從一次性事件變成可逆、可漸進的 rollout 流程">6.11 migration-safety</a></td>
          <td>交易類 migration 的特殊性</td>
          <td>S1</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/idempotency-replay/" data-link-title="6.12 Idempotency 與 Replay 驗證" data-link-desc="把重試、重播與冪等性從口頭約定變成可驗證屬性">6.12 idempotency-replay</a></td>
          <td>支付類 Idempotency 的設計約束</td>
          <td>S1</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/slo-error-budget/" data-link-title="6.6 SLO 與 Error Budget 政策" data-link-desc="把可靠性目標轉成可驗證量測與凍結條件">6.6 slo-error-budget</a></td>
          <td>Error Budget 三對齊跟 Release Gating、Burn Rate 雙窗監控</td>
          <td>G1 / HC1</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/06-reliability/experiment-safety-boundary/" data-link-title="6.20 Experiment Safety Boundary" data-link-desc="定義 chaos、load test、DR drill 的 [blast radius](/backend/knowledge-cards/blast-radius/)、停止條件與權限約束">6.20 experiment-safety-boundary</a></td>
          <td>案例對照：Chaos / FIT 的安全邊界設計</td>
          <td>N1 / N2 / N3</td>
      </tr>
  </tbody>
</table>
<p>擴充紀律對應 <a href="/blog/posts/case-first--agent-team-review%E6%95%99%E5%AD%B8%E5%85%A7%E5%AE%B9%E7%9A%84%E7%94%9F%E7%94%A2%E6%B5%81%E7%A8%8B/" data-link-title="Case-First &#43; Agent Team Review：教學內容的生產流程" data-link-desc="Case-first &#43; agent team review 的教學內容生產流程：讀案例庫抽 findings、專責 reviewer 平行審查、polish pass 收系統性殘留。防止通用 best practice 被誤包裝成案例揭露。">Case-First Module Workflow</a> 的五階段流程、用 agent team review 三維度（寫作規範 / 案例引用 / 跨章一致性）驗證、case fidelity 達 88%。</p>
<h2 id="下一輪推演大綱">下一輪推演大綱</h2>
<table>
  <thead>
      <tr>
          <th>階段</th>
          <th>產出</th>
          <th>責任</th>
          <th>回寫位置</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>1</td>
          <td>案例深挖批次 A</td>
          <td>針對 T1 案例補第二篇以上正文，強化同一服務的多次驗證脈絡</td>
          <td><code>cases/google/</code>、<code>cases/netflix/</code></td>
      </tr>
      <tr>
          <td>2</td>
          <td>案例深挖批次 B</td>
          <td>針對 T2/T3 案例補跨規模對照，避免只描述單一事件</td>
          <td><code>cases/{service}/</code></td>
      </tr>
      <tr>
          <td>3</td>
          <td>章節回寫補強</td>
          <td>把案例中的 policy、gate、readiness 與 evidence 直接回寫主章段落</td>
          <td><code>6.6</code>、<code>6.19</code>、<code>6.20</code>、<code>6.22</code>、<code>6.23</code></td>
      </tr>
      <tr>
          <td>4</td>
          <td>跨模組路由校正</td>
          <td>補齊 04/05/07/08 的交接連結，讓讀者可從案例直接跳到對應控制面</td>
          <td>各章節「交接路由」段</td>
      </tr>
  </tbody>
</table>
<p>推演資產化的完成條件是讓讀者能從一個失敗風險出發，找到驗證節點、服務 case 與回寫章節。完成後可靠性模組才進入穩定維護狀態。</p>
<h3 id="本輪全面推進2026-06-23">本輪全面推進（2026-06-23）</h3>
<p>主章 6.1-6.25 全部從骨架擴充到完整內容（最小 75 行、中位 113 行、最大 176 行），覆蓋概念定位、判讀訊號、案例回寫與交接路由。案例庫補齊 T1/T2/T3 第二批正文共 9 篇（Amazon A2 / Stripe S2 / Shopify H2 / LinkedIn L2 / Meta M2 / Honeycomb HC2 / Microsoft MS2 / Spotify SP2 / Pinterest P2），11 個 vendor 各有 2+ 篇案例。Vendor deep article 新增 4 篇（k6 / Chaos Mesh / Sloth / GitHub Actions）。產業情境回寫 3 組（FinTech → 6.6+6.8 / Gaming → 6.22+6.24 / Healthcare → 6.7+6.19）。經過三輪多輪審查（寫作規範 / cadence 同質化 / steelman reality test）修法。</p>
<p>目前模組處於穩定維護狀態。剩餘 backlog：8 個 vendor 的 deep article（CircleCI / Gatling / JMeter / Locust / LitmusChaos / Gremlin / Toxiproxy / Nobl9）、08 模組的 06 反向引用補齊、判讀訊號表格補行動建議欄。</p>
<h2 id="tripwire">Tripwire</h2>
<ul>
<li>寫 T1 服務第 3 個時、若 case 之間無共通分類軸 → 改用單服務獨立檔，不開資料夾。</li>
<li>寫到第 9 主章發現章節覆蓋 60%+ → 軸線過於相似、合併或重切。</li>
<li>進服務實作模組時 routing chain 走不通 → 回頭補對應主章。</li>
</ul>
<h2 id="既有可引用卡片">既有可引用卡片</h2>
<ul>
<li><a href="/blog/backend/knowledge-cards/load-test/" data-link-title="Load Test" data-link-desc="說明在預期流量下驗證容量、延遲與降級策略的測試">load test</a></li>
<li><a href="/blog/backend/knowledge-cards/chaos-test/" data-link-title="Chaos Test" data-link-desc="說明透過受控故障注入驗證系統在異常條件下的恢復能力">chaos test</a></li>
<li><a href="/blog/backend/knowledge-cards/fuzz-test/" data-link-title="Fuzz Test" data-link-desc="說明用隨機與變異輸入驗證解析器與邊界處理健壯性">fuzz test</a></li>
<li><a href="/blog/backend/knowledge-cards/idempotency/" data-link-title="Idempotency" data-link-desc="說明同一操作執行多次時如何保持結果一致">idempotency</a></li>
<li><a href="/blog/backend/knowledge-cards/schema-migration/" data-link-title="Schema Migration" data-link-desc="說明資料庫結構如何隨應用程式版本安全演進">schema migration</a></li>
</ul>
]]></content:encoded></item></channel></rss>