<?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>Traffic-Replay on Tarragon</title><link>https://tarrragon.github.io/blog/tags/traffic-replay/</link><description>Recent content in Traffic-Replay on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 15 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/traffic-replay/index.xml" rel="self" type="application/rss+xml"/><item><title>GoReplay</title><link>https://tarrragon.github.io/blog/backend/09-performance-capacity/vendors/goreplay/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/backend/09-performance-capacity/vendors/goreplay/</guid><description>&lt;p>GoReplay 的核心責任是捕捉 production HTTP traffic，並把真實請求形狀重播到 staging、shadow environment 或新版本。它適合驗證 synthetic load 難以建模的 endpoint mix、header、payload size、burst pattern 與 long-tail 行為，重點在把 production reality 轉成可控 replay artifact。&lt;/p>
&lt;h2 id="定位">定位&lt;/h2>
&lt;p>GoReplay 適合在 synthetic workload 可信度偏低時使用。當 &lt;a href="https://tarrragon.github.io/blog/backend/09-performance-capacity/workload-modeling/" data-link-title="9.2 Workload Modeling" data-link-desc="把 production traffic shape 翻成可重播的壓測模型">9.2 Workload Modeling&lt;/a> 很難準確描述使用者路徑、payload 分布或 endpoint mix，GoReplay 可以從 production traffic 擷取真實樣本，再用 rate limit、filter、rewrite 與 output target 控制重播範圍。&lt;/p>
&lt;p>這個定位讓 GoReplay 接到 &lt;a href="https://tarrragon.github.io/blog/backend/09-performance-capacity/production-validation/" data-link-title="9.10 Production-Side 驗證" data-link-desc="shadow traffic、dark launch、canary、production-like load test">9.10 Production-Side 驗證&lt;/a> 的 shadow traffic。它的價值在於保留 production 請求形狀；它的風險在於 PII、credential、side effect、下游容量與 capture host overhead 都要被治理。&lt;/p>
&lt;p>跟 &lt;a href="https://tarrragon.github.io/blog/backend/09-performance-capacity/vendors/k6/" data-link-title="k6" data-link-desc="用 scriptable scenario 建立 API、protocol 與 CI 友善壓測的效能工程工具">k6&lt;/a> / &lt;a href="https://tarrragon.github.io/blog/backend/09-performance-capacity/vendors/jmeter/" data-link-title="Apache JMeter" data-link-desc="用 GUI、plugin 與多 protocol sampler 承接企業壓測資產的效能工程工具">JMeter&lt;/a> 的 synthetic load 設計 mindset 完全不同。Scripted load 假設 &lt;em>測試者能描述使用者行為&lt;/em> — 寫 script、設 rate、跑 scenario；GoReplay 假設 &lt;em>production 才是 source of truth&lt;/em> — endpoint mix、header 分布、payload size、burst pattern 都從真實 traffic 抽樣、不靠人為建模。對 long-tail 行為（少見 endpoint、巨大 payload、特殊 header 組合）這個差異決定了 capacity 規劃的真實度。&lt;/p>
&lt;h2 id="最短判讀路徑">最短判讀路徑&lt;/h2>
&lt;p>判斷 GoReplay deployment 是否健康、最少看四件事：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Capture mode&lt;/strong>：用 &lt;code>raw&lt;/code> (libpcap-based)、&lt;code>pcap-file&lt;/code>（離線 replay 已存檔的 pcap）、&lt;code>file&lt;/code>（GoReplay 原生 gor format）哪一種？raw 對 production host 有 CPU / network overhead、pcap-file 適合事後 replay、file 適合 long-running capture buffer&lt;/li>
&lt;li>&lt;strong>Replay target&lt;/strong>：打到 staging full-stack、shadow service、還是 isolated sandbox？POST / PUT / DELETE 是否導到 dry-run path 或 idempotent mock？webhook / payment / notification 是否被攔截？&lt;/li>
&lt;li>&lt;strong>Rate adjustment&lt;/strong>：用原始 production rate replay，還是 2x / 10x / 0.1x？capacity 規劃通常需要 &lt;em>speed up&lt;/em> 來測未來流量、debug 通常需要 &lt;em>slow down&lt;/em> 跟單一請求追查&lt;/li>
&lt;li>&lt;strong>Middleware filter&lt;/strong>：PII / token / cookie / credential redaction 在哪一段做（capture 前、capture 後、replay 前）？是否走 GoReplay middleware binary（stdin / stdout pipeline）統一處理&lt;/li>
&lt;/ul>
&lt;h2 id="適用場景">適用場景&lt;/h2>
&lt;p>架構遷移驗證適合 GoReplay。DB、cache、search、API gateway 或 framework 重寫時，可以把真實 HTTP traffic replay 到新路徑，觀察 latency、error、resource saturation 與 response diff。&lt;/p></description><content:encoded><![CDATA[<p>GoReplay 的核心責任是捕捉 production HTTP traffic，並把真實請求形狀重播到 staging、shadow environment 或新版本。它適合驗證 synthetic load 難以建模的 endpoint mix、header、payload size、burst pattern 與 long-tail 行為，重點在把 production reality 轉成可控 replay artifact。</p>
<h2 id="定位">定位</h2>
<p>GoReplay 適合在 synthetic workload 可信度偏低時使用。當 <a href="/blog/backend/09-performance-capacity/workload-modeling/" data-link-title="9.2 Workload Modeling" data-link-desc="把 production traffic shape 翻成可重播的壓測模型">9.2 Workload Modeling</a> 很難準確描述使用者路徑、payload 分布或 endpoint mix，GoReplay 可以從 production traffic 擷取真實樣本，再用 rate limit、filter、rewrite 與 output target 控制重播範圍。</p>
<p>這個定位讓 GoReplay 接到 <a href="/blog/backend/09-performance-capacity/production-validation/" data-link-title="9.10 Production-Side 驗證" data-link-desc="shadow traffic、dark launch、canary、production-like load test">9.10 Production-Side 驗證</a> 的 shadow traffic。它的價值在於保留 production 請求形狀；它的風險在於 PII、credential、side effect、下游容量與 capture host overhead 都要被治理。</p>
<p>跟 <a href="/blog/backend/09-performance-capacity/vendors/k6/" data-link-title="k6" data-link-desc="用 scriptable scenario 建立 API、protocol 與 CI 友善壓測的效能工程工具">k6</a> / <a href="/blog/backend/09-performance-capacity/vendors/jmeter/" data-link-title="Apache JMeter" data-link-desc="用 GUI、plugin 與多 protocol sampler 承接企業壓測資產的效能工程工具">JMeter</a> 的 synthetic load 設計 mindset 完全不同。Scripted load 假設 <em>測試者能描述使用者行為</em> — 寫 script、設 rate、跑 scenario；GoReplay 假設 <em>production 才是 source of truth</em> — endpoint mix、header 分布、payload size、burst pattern 都從真實 traffic 抽樣、不靠人為建模。對 long-tail 行為（少見 endpoint、巨大 payload、特殊 header 組合）這個差異決定了 capacity 規劃的真實度。</p>
<h2 id="最短判讀路徑">最短判讀路徑</h2>
<p>判斷 GoReplay deployment 是否健康、最少看四件事：</p>
<ul>
<li><strong>Capture mode</strong>：用 <code>raw</code> (libpcap-based)、<code>pcap-file</code>（離線 replay 已存檔的 pcap）、<code>file</code>（GoReplay 原生 gor format）哪一種？raw 對 production host 有 CPU / network overhead、pcap-file 適合事後 replay、file 適合 long-running capture buffer</li>
<li><strong>Replay target</strong>：打到 staging full-stack、shadow service、還是 isolated sandbox？POST / PUT / DELETE 是否導到 dry-run path 或 idempotent mock？webhook / payment / notification 是否被攔截？</li>
<li><strong>Rate adjustment</strong>：用原始 production rate replay，還是 2x / 10x / 0.1x？capacity 規劃通常需要 <em>speed up</em> 來測未來流量、debug 通常需要 <em>slow down</em> 跟單一請求追查</li>
<li><strong>Middleware filter</strong>：PII / token / cookie / credential redaction 在哪一段做（capture 前、capture 後、replay 前）？是否走 GoReplay middleware binary（stdin / stdout pipeline）統一處理</li>
</ul>
<h2 id="適用場景">適用場景</h2>
<p>架構遷移驗證適合 GoReplay。DB、cache、search、API gateway 或 framework 重寫時，可以把真實 HTTP traffic replay 到新路徑，觀察 latency、error、resource saturation 與 response diff。</p>
<p>Long-tail workload 校正適合 GoReplay。Synthetic scenario 通常覆蓋主路徑，GoReplay 可以揭露少見 endpoint、特殊 header、巨大 payload、冷門 tenant 與尖峰 cohort。</p>
<p>事故後修補驗證適合 GoReplay。若事故由特定請求形狀觸發，capture sample 可以在修補環境重播，確認 latency、error 或 resource usage 是否回到可接受範圍。</p>
<h2 id="選型判準">選型判準</h2>
<table>
  <thead>
      <tr>
          <th>判準</th>
          <th>GoReplay 的價值</th>
          <th>需要補的能力</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>真實 traffic</td>
          <td>endpoint mix、payload、header 分布接近 production</td>
          <td>PII / credential 遮罩與權限治理</td>
      </tr>
      <tr>
          <td>HTTP replay</td>
          <td>對 HTTP API 路徑直接有效</td>
          <td>非 HTTP protocol 與加密流量處理</td>
      </tr>
      <tr>
          <td>Filter / rewrite</td>
          <td>可控制 host、path、header、rate</td>
          <td>side effect 隔離與 sandbox target</td>
      </tr>
      <tr>
          <td>Capture artifact</td>
          <td>可保存樣本做回歸驗證</td>
          <td>retention、存取控制與樣本代表性</td>
      </tr>
  </tbody>
</table>
<p>真實 traffic 價值來自分布保真。它能捕捉 synthetic script 容易漏掉的 query parameter、header、payload size 與 endpoint mix，但 capture sample 也會帶入 production 資料治理責任。</p>
<p>Filter / rewrite 價值來自安全邊界。Replay 前要改寫 target、移除 credential、遮罩 PII、限制 rate，並把寫入類請求導到 sandbox 或 dry-run path。</p>
<h2 id="跟其他方式的取捨">跟其他方式的取捨</h2>
<p>GoReplay 和 k6 / Gatling / Locust 的主要差異是流量來源。GoReplay 取 production sample，保真度高；scripted load test 取人工模型，可控性高。</p>
<p>GoReplay 和 service mesh mirroring 的主要差異是部署位置。GoReplay 在 host / network capture 層工作，適合沒有 mesh 的服務；service mesh mirroring 在 sidecar / proxy 層工作，適合已經落地 mesh 的平台。</p>
<p>GoReplay 和 AWS VPC Traffic Mirroring 的主要差異是應用語意。GoReplay 對 HTTP replay 更直接；VPC Traffic Mirroring 在網路層複製封包，侵入性低但應用層 rewrite、遮罩與 replay 控制需要額外處理。</p>
<h3 id="核心取捨表">核心取捨表</h3>
<table>
  <thead>
      <tr>
          <th>取捨維度</th>
          <th>GoReplay</th>
          <th>k6 / JMeter (synthetic)</th>
          <th>AWS VPC Traffic Mirroring</th>
          <th>Service Mesh Mirroring</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>流量來源</td>
          <td>Production sniff（real shape）</td>
          <td>Scripted scenario（builder&rsquo;s model）</td>
          <td>VPC 網路層封包複製</td>
          <td>Sidecar / proxy 層複製</td>
      </tr>
      <tr>
          <td>工作層級</td>
          <td>HTTP / L7（capture host）</td>
          <td>HTTP / L7（client-side script）</td>
          <td>L3-L4（packet level）</td>
          <td>L7（sidecar in-mesh）</td>
      </tr>
      <tr>
          <td>Rate adjust</td>
          <td>原生支援（0.1x - 10x）</td>
          <td>scenario 內 ramp / arrival rate</td>
          <td>全量、無 rate control</td>
          <td>mesh policy 控制</td>
      </tr>
      <tr>
          <td>Replay 控制</td>
          <td>filter / rewrite / middleware binary</td>
          <td>程式內 logic 完整可控</td>
          <td>需自寫 application-level rewriter</td>
          <td>mesh-level routing rule</td>
      </tr>
      <tr>
          <td>Long-tail 覆蓋</td>
          <td>強（real distribution）</td>
          <td>弱（取決於 scenario design）</td>
          <td>強（real distribution）但需後處理</td>
          <td>強（in-mesh real traffic）</td>
      </tr>
      <tr>
          <td>PII / 安全成本</td>
          <td>高（middleware 自己寫 redaction）</td>
          <td>低（fixture 由人控制）</td>
          <td>高（packet-level 難語意化遮罩）</td>
          <td>中（mesh policy 可協助）</td>
      </tr>
      <tr>
          <td>部署條件</td>
          <td>host agent + libpcap，需有權限 sniff interface</td>
          <td>無（client / load generator 機台即可）</td>
          <td>AWS-only、ENI mirroring 配額</td>
          <td>已落地 mesh（Istio / Linkerd）</td>
      </tr>
  </tbody>
</table>
<p>選 GoReplay 的核心訴求：<em>HTTP 應用層 replay + production shape 保真 + 沒落地 mesh</em>；若已用 mesh、優先看 mesh 內建 mirroring；若要跨 protocol（gRPC / 自家 binary）GoReplay 開源版受限、需考慮 Pro 版或 mesh 方案。</p>
<h2 id="操作成本">操作成本</h2>
<p>GoReplay 的主要成本是資料安全。Production request 可能包含 token、cookie、PII、payment payload、internal IDs 與 tenant 資料，capture、保存、重播與刪除都要有明確 owner。</p>
<p>Replay 成本來自下游副作用。POST、PUT、DELETE、webhook、email、payment、notification 與 queue publish 都要導到 sandbox、mock 或 idempotent dry-run，避免 replay 造成重複交易或通知。</p>
<p>Capture 成本來自主機資源。高流量服務上的 capture agent 會消耗 CPU、network 與 disk，正式啟用前要先量測 overhead，並設定 sampling、rate limit 與 stop condition。</p>
<h2 id="evidence-package">Evidence Package</h2>
<p>GoReplay 結果應回寫到 evidence package。最小欄位包括 capture source、capture time range、filter / rewrite rule、sample size、replay rate、target environment、data masking status、p95 / p99、error rate、resource saturation、known gap 與 owner。</p>
<table>
  <thead>
      <tr>
          <th>欄位</th>
          <th>GoReplay 證據來源</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Source</td>
          <td>capture command、sample hash、replay command</td>
      </tr>
      <tr>
          <td>Time range</td>
          <td>capture start / end、replay start / end</td>
      </tr>
      <tr>
          <td>Query link</td>
          <td>APM / metrics / logs / diff 查詢連結</td>
      </tr>
      <tr>
          <td>Data quality</td>
          <td>sample representativeness、masking status</td>
      </tr>
      <tr>
          <td>Confidence</td>
          <td>replay rate、target parity、capture coverage</td>
      </tr>
      <tr>
          <td>Known gap</td>
          <td>未捕捉 protocol、資料遮罩限制、sandbox 差異</td>
      </tr>
  </tbody>
</table>
<p>Evidence package 的核心用途是讓 replay 結論可審查。Reviewer 要能知道樣本來自哪段 production、經過哪些 filter、打到哪個 target，以及哪些 side effect 被 mock 或隔離。</p>
<h2 id="進階主題">進階主題</h2>
<p><strong>Capture to file（pcap-like artifact）</strong>：用 <code>--output-file</code> 把 capture 寫成 GoReplay 原生 gor file（或讀 pcap）、之後用 <code>--input-file</code> 重複 replay。這個模式讓 <em>capture window</em> 跟 <em>replay run</em> 解耦 — capture 一次，可在不同 staging branch / 不同 rate / 不同 target 重播多次。對 regression 驗證跟「事故當時的 traffic shape」回放特別關鍵、但 file artifact 也成為 PII 儲存物、retention 跟存取控制要跟 production log 同級。</p>
<p><strong>Replay with rate adjustment（10x speed）</strong>：<code>--input-file-replay-speed 10</code>（gor format）或加 <code>--input-file-loop</code> 反覆播放。10x speed 對 capacity headroom 驗證直接有用 — 用真實 traffic shape 模擬「未來流量翻 10 倍」、避開 scripted scenario 自帶的人為偏差。反向用法 0.1x 跟 isolated request replay 適合排錯特定 endpoint 的 long-tail latency。注意 10x 會把下游 DB / cache / external API 同樣放大，sandbox target 容量要先評估。</p>
<p><strong>Middleware filter（PII redaction）</strong>：GoReplay middleware 是獨立 binary、用 stdin / stdout 跟 GoReplay process 串接、可寫任何語言。典型責任：JSON body 解析、Authorization / Cookie / Set-Cookie header strip、Email / phone / card number regex 遮罩、cross-request session ID rewriting（讓 staging 不撞 production session）。middleware 邏輯本身需要 code review、寫進版控、staging 測過再放到 production capture host。</p>
<p><strong>Pro version（GoReplay Pro - binary protocols）</strong>：開源版聚焦 HTTP/1.x；GoReplay Pro 支援 binary protocol（自家 protocol、protobuf-over-TCP、部分 gRPC pattern）跟 enterprise 維護 SLA。判斷點：若服務是純 HTTP REST 開源版夠用、若有 gRPC 或自家 binary 且不在 mesh 內、要評估 Pro 或改走 service mesh mirroring。</p>
<h2 id="排錯與失敗快速判讀">排錯與失敗快速判讀</h2>
<ul>
<li><strong>Capture loss / sample 不完整</strong>：libpcap 在高流量下會 drop packet、<code>gor stat</code> 的 capture stats 顯示 drop &gt; 1% 就不可信 — 加 capture host CPU、改用 PF_RING / AF_PACKET、或縮 capture filter 範圍（只 capture target port + sampling）</li>
<li><strong>TCP reassembly 失敗 / replay 結果亂碼</strong>：跨 packet 的 HTTP body 沒被正確組裝、常見於 MTU / TCP segment offload 設定異常 — 確認 capture interface 沒開 TSO / GRO、或用 application-level capture（HEC-style sidecar）取代 packet capture</li>
<li><strong>PII / secret 漏 redact 進 staging</strong>：middleware 規則沒覆蓋新加的 header / 新的 body schema — 建立 redaction allowlist（只放行已知 schema）而非 denylist、每次 schema 變更同步更新 middleware、staging 入口加 secret scanner 做 last-mile 攔截</li>
<li><strong>Replay 觸發下游真實副作用</strong>：POST / PUT 沒導 sandbox、webhook 真的打出去、payment 真的扣款 — replay target 預設 <em>deny all write</em>、白名單放行特定 idempotent endpoint、其餘走 mock 或 dry-run flag</li>
<li><strong>Replay rate 拖垮 capture host</strong>：同機 capture + replay、CPU / NIC 互相搶 — capture host 只負責 sniff + write to file、replay 機器獨立、用 gor file 解耦</li>
<li><strong>長時間 capture 寫爆 disk</strong>：未設 rotation 或 size limit — <code>--output-file</code> 加 size / time rotation、定期 archive 到 S3 + 過期刪除</li>
<li><strong>Staging 容量比 production 小、放大流量打爆</strong>：10x replay 沒先估下游 — capacity 規劃前先用 1x 暖機、觀察下游 saturation、再 ramp 到目標倍率</li>
</ul>
<h2 id="案例回寫">案例回寫</h2>
<p>GoReplay 適合回寫 migration 與 production validation 案例。它可接 <a href="/blog/backend/09-performance-capacity/cases/tixcraft-ticketing-flash-sale-spike/" data-link-title="9.C15 拓元 Tixcraft：售票搶購的瞬間爆量架構" data-link-desc="拓元用 DynamoDB 當寫入緩衝 &#43; 傳統伺服器當慢速消費者、承受 100K&#43; 同時選位 &#43; 30 秒從 6 台擴到 800 台">9.C15 Tixcraft 售票壓測</a> 的 production-shaped load、<a href="/blog/backend/09-performance-capacity/cases/seatgeek-virtual-waiting-room/" data-link-title="9.C16 SeatGeek：DynamoDB &#43; Lambda 打造的虛擬等候室" data-link-desc="SeatGeek 用 DynamoDB 4 張表 &#43; Lambda Bouncer 實作 flash-sale 限流排隊機制、取代第三方 waiting room 服務">9.C16 SeatGeek waiting room</a> 的 cutover 前 replay、<a href="/blog/backend/09-performance-capacity/cases/netflix-aurora-consolidation/" data-link-title="9.C23 Netflix：把關聯式 DB 統一到 Aurora、效能 &#43;75%、成本 -28%" data-link-desc="Netflix 把多套關聯式 DB 統一到 Aurora、效能提升 75%、成本下降 28%、串流數十億小時">9.C23 Netflix Aurora consolidation</a> 這類資料庫整併前的 query pattern 驗證、<a href="/blog/backend/09-performance-capacity/cases/zomato-tidb-to-dynamodb-migration/" data-link-title="9.C20 Zomato：從 TiDB 遷移到 DynamoDB、吞吐 4 倍、延遲降 90%、成本減 50%" data-link-desc="Zomato 帳單系統從 TiDB 遷移到 DynamoDB、吞吐 2K→8K RPM、延遲降 90%、成本減 50%">9.C20 Zomato TiDB → DynamoDB</a> 跨 DB 遷移的請求 pattern 重播，以及 <a href="/blog/backend/09-performance-capacity/cases/microsoft-365-cosmos-db-analytics/" data-link-title="9.C30 Microsoft 365：從 MongoDB 遷移到 Cosmos DB 的分析平台" data-link-desc="Microsoft 365 把使用分析平台從 MongoDB 遷移到 Cosmos DB、planet-scale 全球分散式分析">9.C30 Microsoft 365 MongoDB → Cosmos DB</a> 的全球分析平台遷移 query 驗證。</p>
<p>這些案例的重點是 production request shape。GoReplay 頁引用案例時，要把 case 轉成 capture window、filter、rewrite、target isolation、rate limit 與 diff / saturation metric — 例如 Zomato 遷 DB 時、replay 必須先 mask PII + 改寫 SQL 方言、不能直接把 TiDB query 打進 DynamoDB SDK。</p>
<p>Capacity 規劃用 real workload model 是這些案例的共通對照啟示。Tixcraft 的售票 spike、SeatGeek 的 waiting room cutover、Netflix 的 Aurora 整併、Microsoft 365 的全球 query 分布 — 共通點是 <em>scripted scenario 無法事先列舉所有 endpoint 跟 payload 組合</em>。GoReplay 的回應是把「使用者行為建模」這個工作丟回給 production traffic 本身、規劃者只負責決定 capture window、replay rate 跟 target boundary，不再試圖窮舉 scenario。這個 mindset 才是 GoReplay 跟 <a href="/blog/backend/09-performance-capacity/vendors/k6/" data-link-title="k6" data-link-desc="用 scriptable scenario 建立 API、protocol 與 CI 友善壓測的效能工程工具">k6</a> / <a href="/blog/backend/09-performance-capacity/vendors/jmeter/" data-link-title="Apache JMeter" data-link-desc="用 GUI、plugin 與多 protocol sampler 承接企業壓測資產的效能工程工具">JMeter</a> 在 capacity 規劃流程中的真正分工點。</p>
<h2 id="下一步路由">下一步路由</h2>
<ul>
<li>上游：<a href="/blog/backend/09-performance-capacity/workload-modeling/" data-link-title="9.2 Workload Modeling" data-link-desc="把 production traffic shape 翻成可重播的壓測模型">9.2 Workload Modeling</a></li>
<li>上游：<a href="/blog/backend/09-performance-capacity/production-validation/" data-link-title="9.10 Production-Side 驗證" data-link-desc="shadow traffic、dark launch、canary、production-like load test">9.10 Production-Side 驗證</a></li>
<li>平行：<a href="/blog/backend/09-performance-capacity/vendors/service-mesh-mirroring/" data-link-title="Service Mesh Mirroring" data-link-desc="用 sidecar / proxy 層 mirror production traffic 到新版本或 shadow service 的 production validation 方式">Service Mesh Mirroring</a></li>
<li>平行：<a href="/blog/backend/09-performance-capacity/vendors/aws-vpc-traffic-mirroring/" data-link-title="AWS VPC Traffic Mirroring" data-link-desc="用 VPC 網路層封包鏡像觀察 production traffic 的低侵入 production validation 方式">AWS VPC Traffic Mirroring</a></li>
<li>知識卡：<a href="/blog/backend/knowledge-cards/shadow-traffic/" data-link-title="Shadow Traffic" data-link-desc="把 production traffic 複製到新版本驗證、但不返回結果給用戶的測試模式">Shadow Traffic</a></li>
<li>官方：<a href="https://docs.goreplay.org/">GoReplay documentation</a></li>
</ul>
]]></content:encoded></item></channel></rss>