"Case-Study"
- 11.C1 Fielding 論文第 5 章:REST 是約束推導的架構風格
REST 由六個約束從 null style 推導而來、uniform interface 以效率換一般性;所有 REST 論爭的定義基準
- T.C1 WebSocket text/binary frame 被 FakeWebSocketChannel 遮蔽
Flutter app 用 Uint8List 發送 WS 資料走 binary frame,ttyd 期望 text frame 靜默忽略 — FakeWebSocketChannel 的 sink.add 接受 dynamic 不區分 frame type,192 個 test 全過但實機無回應
- U.C1 Terminal 畫面五個狀態零個退出路徑
Flutter app 的 Terminal 畫面有 idle/connecting/connected/error/disconnected 五個 enum 狀態,每個狀態都沒有 back 或 disconnect 按鈕 — 使用者一旦進入就出不去
- Case Study:customer support agent 從 task decomposition 到 eval
把模組四原理串成端到端案例:observe → decompose → design workflow → instrument trace → design eval → iterate。每段標出引用哪章。
- 9.C1 AWS Prime Day 2025:可預期極端峰值的 dogfood
Amazon 自家服務在 Prime Day 2025 的峰值數字 — 一年一次可預期峰值的容量設計參考
- 2.C1 Meta:Cache Consistency 升級
快取 invalidation 一致性如何從常見錯誤演進到高可信治理。
- 3.C1 Meta:FOQS 從區域到全域佇列遷移
佇列架構如何在不中斷下升級成 disaster-ready 模式。
- 5.C1 Tradeshift:self-managed Kubernetes 遷移到 EKS
零停機平台遷移的分段策略案例。
- 7.C1 Cloudflare:2026 Route Leak 事件
BGP 路由政策自動化失誤如何回寫控制面治理。
- Atlassian 2022 April Multi-tenant Deletion Outage
2022-04 Atlassian 因維運腳本誤刪多租戶站點造成長時間事故的解析:恢復分批、跨團隊指揮與對外通訊節奏。
- AWS S3 2017 US-EAST-1 Service Disruption
2017-02-28 AWS S3 us-east-1 事故解析:內部操作命令、index / placement 子系統重啟、區域依賴擴散與狀態頁依賴回寫。
- Cloudflare 2019 Regex CPU Outage
2019-07-02 Cloudflare WAF 規則更新導致全球 CPU 飆升的事故解析:觸發條件、擴散機制、止血決策與可回寫控制面。
- Fastly 2021 June Global Edge Config-triggered Outage
2021-06-08 Fastly 全球 edge 事故解析:有效客戶配置觸發潛藏 bug、分鐘級擴散與快速隔離恢復。
- FinTech:合規壓力下的後端選型
在審計、留存與交易正確性要求下,如何平衡成本、風險與交付速度。
- FinTech:審計證據鏈的可觀測性設計
把交易與存取事件轉成可回查證據,降低合規審核與事故判讀落差。
- GCP 2019 US Network Congestion Multi-service Incident
2019-06-02 Google Cloud 因美國區域網路壅塞造成多服務退化的事故解析:跨產品依賴、流量控制與區域隔離判讀。
- GitHub 2018 Oct21 MySQL Topology Incident
2018-10-21 GitHub 因 network partition 觸發跨區資料庫拓撲異常的事故解析:資料一致性優先、fail-forward 決策與長時間恢復。
- Roblox 2021 Oct Prolonged Core Infra Outage
2021-10 Roblox 長時間平台中斷的事故解析:核心基礎設施壓力失衡、根因定位延遲與長尾恢復。
- 案例:Cython 加速 Markdown 解析
用 Cython 加速 Markdown 連結解析器,比較純 Python 與 Cython 的效能差異
- 案例:PyO3 文字解析
用 PyO3 和 Rust 實現高效能的 Markdown 連結解析器
- 案例:打包共用庫
將 .claude/lib 打包成可重用的 Python 套件
- 案例:快取生命週期管理
用 Context Manager 控制快取的生命週期,解決全域狀態問題
- 案例:並行檔案檢查
使用 ThreadPoolExecutor 加速 Markdown 連結檢查
- 案例:非同步 subprocess
用 asyncio.create_subprocess_exec 實現非阻塞的外部命令執行
- 案例:宣告式驗證
用 Descriptor Protocol 將驗證邏輯從方法變成屬性定義
- 案例:效能分析實戰
用 cProfile 和 line_profiler 分析 Markdown 連結檢查器的效能瓶頸
- 11.C2 Fielding:REST API 必須是 hypertext-driven
REST 定義擁有者公開否定業界主流用法的引爆點文獻、六條規則劃出 hypertext-driven 的判別線
- T.C2 Auth handshake 邏輯缺失被 FakeWebSocketChannel 遮蔽
ttyd 連線後需要發送 auth token JSON frame 完成認證,整個邏輯未實作 — FakeWebSocketChannel 的 ready 立即完成不需認證,test 永遠看到連線成功
- U.C2 biometricOnly=true 無密碼 fallback
Flutter app 的生物辨識設定 biometricOnly: true 阻擋所有非生物辨識認證方式 — Face ID 不可用時使用者直接被擋住,沒有替代路徑
- 9.C2 GR8 Tech:AI 預測式自動擴容下的體育博彩高峰
AI 預測 + EKS 自動擴容怎麼在 25ms p95 下承載 54000 TPS 體育博彩峰值流量
- 2.C2 Meta:mcrouter 與跨區快取路由
快取從單點最佳化演進到分散式路由層的案例。
- 3.C2 VMware Tanzu CloudHealth:Kafka 轉 Amazon MSK
自管 Kafka 遷移到託管平台時的治理重點。
- 5.C2 Condé Nast:EKS 平台整併與標準化
多地區異質 Kubernetes 平台整併為統一控制面的案例。
- 7.C2 Cloudflare:2023 Control-plane Token 事件
控制面 token 事件如何回寫 secrets 與機器憑證治理。
- AWS 2021 US-EAST-1 Control Plane Degradation
2021-12-07 AWS us-east-1 控制面退化案例:內部網路壅塞、API 錯誤率升高、跨服務依賴連鎖與通訊節奏調整。
- Cloudflare 2023 Control Plane Token Incident
2023-01-24 Cloudflare service token 錯誤變更導致多產品連鎖影響的事故解析:信任邊界、擴散機制、止血策略與流程回寫。
- Gaming:高峰流量下的訊號新鮮度與 Cardinality
在高峰事件中控制訊號延遲與維度爆炸,維持告警與定位可信度。
- Gaming:高峰流量與隔離邊界選型
大型活動流量下,如何在低延遲與穩定性之間做可持續取捨。
- 案例:Rust 正則表達式
用 Rust regex crate 加速 Hook 驗證器的模式匹配
- 案例:自動註冊機制
用 Metaclass 實現檢查器的自動註冊,消除手動維護註冊表的負擔
- 案例:並行 Hook 驗證
使用 ThreadPoolExecutor 並行驗證 Hook,並實現進度報告
- 案例:並行 I/O 操作
用 asyncio.gather 和 TaskGroup 實現高效的並行 I/O 操作
- 案例:使用 ctypes 呼叫系統 API
透過 ctypes 直接呼叫 C 函式庫的系統函式,實現 Python 標準庫未提供的功能
- 案例:使用 Poetry 完整工作流
從專案建立到發布的 Poetry 完整工作流程
- 案例:記憶體優化
用 __slots__ 和 weakref 優化快取系統的記憶體使用
- 案例:插件架構設計
用 Protocol 和註冊機制實現可擴展的插件系統
- 11.C3 Richardson 成熟度模型:分級階梯與它的自我聲明
RMM 四級是理解 REST 元素的思考工具、一手來源自己警告它不是 REST 分級定義;業界停在 Level 2 的參照系
- T.C3 ANSI parser 測試資料不覆蓋真實 shell output
ANSI parser 只處理基本 SGR 色彩碼、unit test 用手寫乾淨字串驗證 — 真實 zsh prompt 送出 OSC 標題設定、CSI private mode 游標隱藏、括號貼上模式等數十種控制序列,全部殘留為亂碼
- U.C3 終端機文字輸入機制未設計、事後 hotfix 補 TextField
Flutter 終端機 app 的鍵盤輸入完全未設計 — 沒有 TextField、沒有 keyboard type 選擇、沒有 IME 控制。W2 修復時才補上 TextField + 6 個參數(enableSuggestions/autocorrect/enableIMEPersonalizedLearning/keyboardType/textInputAction/onSubmitted),全是散落 hotfix
- 9.C3 Coinbase International Exchange:超低延遲交易的逆向容量設計
為什麼 Coinbase 國際交易所選 Cluster Placement Group + z1d 而不是自動擴容 — 延遲敏感型負載的容量取捨
- AWS:Control Plane 事故的責任邊界與通訊節奏樣式(2023)
以 AWS 2023 年公開事件樣式為主,整理 control plane 退化時如何建立責任邊界、決策紀錄與對外更新節奏。
- 2.C3 Shopify:快取序列化格式遷移
快取 payload 從 Marshal 轉 MessagePack 的遷移策略。
- 3.C3 LinkedIn:TopicGC 與 Kafka 治理轉換
Kafka topic 從手動治理轉自動治理對叢集的影響。
- 5.C3 Orbitera:遷移到 Managed Kubernetes
平台重置時如何讓產品不中斷地完成編排層轉換。
- 7.C3 Azure AD:2021 Identity Control-plane 事件
身分控制面事件如何影響多服務信任鏈與回復優先序。
- Cloudflare 2026 BYOIP BGP Withdrawal
2026-02-20 Cloudflare BYOIP prefixes 被非預期撤告的事故解析:Addressing API bug、BGP withdrawal、狀態恢復與控制面回寫。
- Healthcare:存取可追溯性與保留邊界
在資料主權限制下,建立可追溯存取證據與分層保留策略。
- Healthcare:資料主權與回復順序選型
醫療場景下,如何把資料主權、存取邊界與災難回復放進同一套決策。
- 案例:pybind11 綁定 C++ 類別
用 pybind11 將 C++ 類別綁定到 Python,展示建構子、方法、屬性、運算子重載與記憶體管理
- 案例:正則表達式預編譯
用 re.compile 減少重複編譯開銷
- 案例:同步/非同步橋接
用 run_in_executor 和 asyncio.run 在同步與非同步程式碼之間建立橋樑
- 案例:使用 Hatch 完整工作流
從專案建立到發布的 Hatch 實戰指南
- 案例:異常設計架構
設計清晰的異常階層,並用 ExceptionGroup 處理多重錯誤
- 案例:類似 Django Field 的設計
結合 Descriptor 和 dataclass 設計類似 Django Model Field 的宣告式 API
- 11.C4 Carson Gross:REST 如何變成 REST 的反義詞
hypermedia 復興派的語意漂移史重建:JSON 取代 XML、業界停在 Level 2、SPA 脫鉤到 GraphQL 放棄名義
- T.C4 Client-side log 缺失導致 debug 只能靠實機盲測
Flutter app 六個核心元件中只有兩個有 log(且全是 W2 hotfix 補的),連線失敗時開發者無法從任何 log 判斷失敗發生在哪一步 — 被迫用最昂貴的 debug 方式:插拔裝置反覆測試
- U.C4 首頁缺配對入口按鈕、導航流未完整列出
Flutter app 首頁只有 Connect Terminal 按鈕、沒有 Enroll Device 入口 — 使用者首次使用時找不到配對功能。根因是導航流設計只考慮了日常操作(UC-02 連線)、遺漏了首次操作(UC-01 配對)的入口
- 9.C4 DraftKings:Aurora 撐 100 萬 ops/min 的體育博彩金融帳本
DraftKings 用 Aurora MySQL 跑體育博彩金融帳本、Super Bowl 流量 +50% 不影響延遲
- 2.C4 Meta:CacheLib / Kangaroo 分層快取
快取從 DRAM-only 轉向分層快取架構的實務案例。
- 3.C4 LinkedIn:Kafka 分層叢集治理
Kafka 從單叢集走向 tiered clusters 的轉換案例。
- 4.C4 AWS:X-Ray 到 OpenTelemetry 轉換
觀測儀表從 vendor-specific SDK 轉向 OpenTelemetry 的治理重點。
- 5.C4 Mobileye:Workloads 遷移到 EKS
大規模工作負載遷移到 managed Kubernetes 的分段治理案例。
- 7.C4 Microsoft:Storm-0558 簽章金鑰事件
簽章金鑰事件如何回寫 identity 信任邊界與觀測證據鏈。
- Cloudflare 2023 Workers KV Deployment Tool Misconfiguration
2023-10-30 Cloudflare 控制面事故:deployment tool 設定錯誤造成 Workers KV 連鎖影響,重點在變更範圍限制與決策回寫。
- 營運後技術轉換:語言、工具與架構何時該換
服務營運一段時間後,如何判讀何時該轉語言、工具或架構,並用案例說明轉換動機。
- 案例:LRU 快取
用 functools.lru_cache 快取重複計算
- 案例:泛型驗證器
用 Generic 和 TypeVar 建立型別安全的通用驗證器
- 1.4 實戰:與同步程式碼整合
在現有專案中引入 asyncio,處理同步與異步的混合場景
- T.C5 凍結參照失效被 stub 遮蔽 — 測試全綠、功能全壞
前端把後端資料的 id 凍結在本地記錄裡,後端的合併操作會重建資料、舊 id 全部失效 — 單元測試的 stub 由測試自己餵資料,永遠不會經歷「id 死亡」,bug 存在期間所有測試綠燈
- U.C5 匯出按鈕按下零回饋 — 狀態機完備但 UI 沒接線
Flutter app 匯出設定頁的確認匯出按鈕 onPressed 是空 callback,按下畫面毫無變化 — 使用者無法分辨匯出成功、進行中、還是功能根本沒做。ViewModel 的 idle/inProgress/completed/failed 狀態機早已完備,缺的只是頁面接線與三層回饋
- 11.C5 htmx HATEOAS essay:透支帳戶的兩種表徵對照
同一個 domain 狀態的 HTML 與 JSON 表徵耦合差異、HATEOAS 有無的操作型判別法
- 9.C5 Amazon Ads:DynamoDB 9000 萬 reads/sec 的廣告事件量測
Amazon Ads 在 DynamoDB 上跑 9000 萬 reads/sec + 500 萬 writes/sec、99.999% 可用性的廣告事件量測
- 2.C5 Shopify:Write-through Cache 在高讀流量的實作
read-heavy 服務如何轉向 write-through 快取模型。
- 3.C5 Slack:Job Queue 演進到 Kafka + Redis
背景工作通道在成長期如何從單一路徑演進成組合式架構。
- 4.C5 Google Cloud:Cloud Trace 導入 OTLP 入口
觀測平台從專有入口擴展到 OTLP 標準通道的案例。
- 5.C5 Miro:Managed EKS 遷移
從自維運平台轉向 managed EKS 的組織與技術協同案例。
- 7.C5 Okta:2023 Support System 事件
支援系統憑證風險如何擴散到客戶租戶的案例。
- 案例:資料結構選擇
選擇正確的資料結構:list vs set 的查詢效能差異
- T.C6 流程測試首跑抓到修復自己引入的順序 bug
單元測試直接把狀態塞進被測物、繞過了真實的資料過濾鏈;流程測試讓資料走完整鏈路,第一次執行就抓到「刷新在列表同步之前」的編排順序錯誤 — 而這個錯誤正是前一個 bug 的修復引入的
- U.C6 加書後返回不刷新統計 — 只設計了進入時載入
Flutter app 資料管理頁的書籍統計只在 initState 載入一次,從頁面進入新增流程加書後 pop 返回,統計停留在舊值(仍顯示無書目),要回首頁再進入才更新。根因是 happy-path-only 反模式的資料版本:設計了「進入時載入」,沒設計「資料變更時的轉移」
- 11.C6 HAL spec:JSON hypermedia 標準化的過期 draft
在 JSON 上補 hypermedia 最接近成功的一次:有 spec 有生態、標準化止步於過期 IETF draft
- 9.C6 Tinder:ElastiCache for Valkey 撐 4700 萬月活的配對引擎
Tinder 用 Amazon ElastiCache for Valkey 提供配對引擎所需的次毫秒延遲快取層
- 2.C6 Netflix:EVCache 全域快取層
快取從本地層演進為跨區分散式能力的案例。
- 3.C6 Uber:Kafka 事件平台演進
事件平台從團隊自管走向多租戶共享基礎設施。
- 4.C6 AWS:ADOT on EKS 管線遷移
從分散式 agent 組合轉成 OpenTelemetry collector 管線治理。
- 5.C6 Airbnb:Kubernetes 叢集擴縮演進
從手動擴縮走向自動化容量治理的部署平台案例。
- 7.C6 Okta:Cross-tenant Impersonation 防禦回寫
跨租戶 impersonation 風險如何轉成身份治理與偵測策略。
- T.C7 症狀相同、成因兩種 — 用測試切開前後端責任
刪除單據後資源佔用狀態未還原:可能是後端沒釋放,也可能是後端釋放了但前端沒刷新畫面 — 兩種成因症狀完全相同。假後端模擬兩種行為各寫一條測試、再用真實後端測試一跑定案
- U.C7 商品條碼的誤導性查無結果 — 可本地判定的錯誤讓使用者白等 API
Flutter app 的 ISBN 掃描器接受所有 EAN-13 條碼,掃到一般商品條碼(非 978/979 開頭)時送 API 查詢,2 秒後回「查無結果」— 訊息誠實但誤導,使用者以為書找不到,實際上是掃錯了條碼。正確回饋是本地立即判定「這不是書籍條碼」
- 11.C7 Siren spec:表達力更完整、採用曲線停滯
帶 first-class actions 的 hypermedia 格式、表達力勝 HAL 而採用更少;client 生態決定格式命運的證據
- 9.C7 Lyft:100+ 微服務在 8 倍峰值下的 Auto Scaling
Lyft 用 AWS Auto Scaling 跨 100+ 個微服務承載 8 倍峰值流量、跨 200+ 城市
- 2.C7 Cloudflare:Cache Reserve 分層儲存快取
邊緣快取延伸到持久層以降低回源壓力的案例。
- 3.C7 LinkedIn:Kafka 自動修復治理
Kafka 維運從人工處置轉向自動修復的案例。
- 4.C7 Datadog:OTel 相容遷移實務
APM 採集從專有代理轉向 OTel 相容模式的治理案例。
- 5.C7 Airbnb:Istio 升級治理
service mesh 升級在大規模環境下如何保持高可用。
- 7.C7 Okta:BYO Telephony 的身份安全責任轉換
MFA 簡訊/語音路徑從平台托管轉向客戶自管的治理案例。
- T.C8 fire-and-forget 編排讓測試單跑綠、合跑紅
結帳成功後的收尾動作(列印、狀態清理、資料同步)沒有被 await — 測試斷言與收尾動作賽跑,單獨執行時碰巧贏、整批執行時排程不同就輸;競態本身也揭露了產品的時序特性
- U.C8 標籤行只有箭頭可點 — 觸控目標小於視覺單元
列表行的展開/收合看起來整行可點、實機測試點文字卻無反應時使用。gesture 只掛在尾端箭頭 icon 上、整行的視覺暗示範圍遠大於實際可點區域,使用者體感等同功能壞掉。
- 11.C8 Ben Morris:不做 hypermedia 的 pragmatic REST(反例對照)
反例對照:逐條拆 HATEOAS 的收益假設在 machine-to-machine 場景不成立的 pragmatic 派立場文
- 9.C8 Niantic Pokémon GO:在 GCP 上承載 50 倍突發流量
Pokémon GO 上線時實際流量達原始預估 50 倍、Google CRE 怎麼即時補容量
- 2.C8 Meta:TAO 社交圖快取演進
社交圖查詢在規模化下如何把快取做成資料層能力。
- 3.C8 Cloudflare:Queues 全球交付模型
事件佇列服務在全球網路下的交付語義與治理案例。
- 4.C8 Airbnb:Kubernetes 規模化下的觀測訊號治理
叢集擴縮與工作負載變動如何回寫觀測模型。
- T.C9 外接螢幕漏通知 — 訊息序列斷言與訂閱盲區
客戶端把狀態同步到外接第二螢幕:訂閱驅動的路徑自動生效,顯式呼叫的路徑每開一條新流程就可能漏 — 漏通知 bug 的結構根因。驗證方式是錄音假件攔下送出的訊息序列,斷言「該送什麼、何時送、誰先誰後」
- U.C9 提取成功卻誤報失敗 — 結果通知鏈路被搶通道
操作實際成功、資料已寫入,UI 卻顯示失敗時使用。多 context 的訊息通道語意(誰負責回應)是結果通知鏈路的一部分,async listener 搶通道會把 undefined 當成回應送回
- 11.C9 twobithistory:被挪用的 REST 論文(史觀對照)
第三方歷史考據:論文談的是 HTTP/1.1 設計而非 API 建構、業界棄 SOAP 時把 pragmatic 用法掛上 REST 名字;二手來源
- 9.C9 Spotify:從自管 Kafka 遷移到 GCP Pub/Sub 的事件交付系統
Spotify 把自管 Kafka 事件系統遷移到 Google Cloud Pub/Sub、避免自管 broker 的容量規劃成本
- 2.C9 反例:快取切換引發 Stampede 回歸
快取策略切換若缺乏保護,會導致回源壓力與錯誤率連鎖上升。
- 3.C9 反例:Queue 語義切換誤配
at-least-once / exactly-once 語義誤配導致資料重複與遺漏。
- 4.C9 反例:OTel 遷移後訊號漂移
雙軌採集未對齊導致告警與 SLO 判讀失真。
- 5.C9 反例:平台切流未先 Draining
切流時忽略連線清退造成請求錯誤與重試風暴。
- 7.C9 反例:憑證輪替未分 Scope
憑證輪替若未分域分批,容易造成跨系統連鎖中斷。
- T.C10 同一組驗收通過八個不同的程式 — 關卡放行的等價類有多大
同一份需求重寫多次、產出的程式互不相同卻全部通過同一組驗收時,用來看清一組關卡實際固定住了哪些行為,又放過了哪些維度
- U.C10 Service Worker 冷啟動期間的假離線 — initializing 狀態未建模
查詢對象有獨立生命週期(service worker、遠端服務)的畫面,把「還不知道」與「離線」合併就會把慢啟動呈現成假離線 — initializing 是真實狀態、要進狀態矩陣、timeout 是它的退出路徑
- 11.C10 Stripe:日期滾動版本與 version change module
把相容性從路由層搬進轉換層、breaking change 成本由服務端一次吸收;date-based versioning 的原型案例
- 9.C10 Cloud Spanner:每秒 10 億請求的全球一致性資料庫
Google Cloud Spanner 內部峰值 10 億 req/sec、跨地區強一致 — 全球分散式 OLTP 容量參考
- 2.C10 對照:規模差異下的快取策略
同一快取策略在小中大型服務下會產生不同風險。
- 3.C10 對照:規模差異下的佇列模型
同一 queue 模型在不同規模下的治理與失敗邊界差異。
- 4.C10 對照:規模差異下的觀測遷移
觀測遷移在不同規模團隊下的流程與風險差異。
- 5.C10 對照:規模差異下的平台遷移
平台遷移策略在小中大型組織下的差異。
- 7.C10 對照:規模差異下的身份治理
identity 控制面治理在不同規模服務下的失敗邊界差異。
- U.C11 抓到 96/928 本就顯示完成 — 完成判定的證據強度不足
批次 / 遍歷類操作宣告完成、實際只處理了一部分:「連續 N 輪沒有變化」是暫時停滯的訊號、不是窮盡的證據 — 完成判定需要獨立的窮盡證據(總數對照、終止標記)
- 11.C11 Stripe 現行方案:具名 major release 與相容變更清單
同一家公司版本策略隨規模演進的第二個時間切片、附「什麼算 backwards-compatible」的明文清單
- 4.C11 Uber:M3 大規模 Metrics 平台
從散落的 Prometheus 實例到統一 metrics 平台,處理 cardinality 爆炸、長期 retention 與跨叢集查詢的規模化挑戰。
- 7.C11 選型:單人遠端 Shell — Tailscale vs Cloudflare Tunnel
以「手機遠端操作本機 shell」為情境,比較 Tailscale mesh VPN 與 Cloudflare Tunnel + Access 兩種存取模型的選型判讀。
- 3.C11 Pinterest:Kafka tiered storage broker-decoupled
Pinterest 採 broker-decoupled tiered storage、把 ~200 TB/day 熱資料卸到 S3、broker 不再是熱路徑。
- 9.C11 Minecraft Earth:Azure Cosmos DB 上的全球分散式 AR 遊戲
Minecraft Earth 用 Cosmos DB 跨地區分散、測試到 100 萬 RU/s 仍維持承諾延遲
- Google:Error Budget 政策如何決定發布節奏
把 SLO 消耗量轉成 release gate,讓可靠性與交付速度共用同一套決策語言。
- Slack:2022 連線恢復與狀態通訊節奏
在通訊平台自身失效時,如何同步恢復節奏與對外狀態揭露。
- U.C12 匯入空檔會清空書庫 — 破壞性操作的確認與安全預設
設計會覆蓋 / 清空既有資料的操作時使用。破壞性操作 gate 有兩層:確認使用者意圖、加上確認機制本身故障時的安全預設 — 故障要倒向不可逆性低的那邊
- 11.C12 GitHub:REST API calendar versioning 與 24 個月支援承諾
date-based versioning 成為大平台收斂方向的證據點、最低支援窗口把 deprecation 成本變成明文契約
- 4.C12 Cloudflare:內部觀測平台的三層能力
全球 300+ edge 節點的觀測架構,把 monitoring、analytics 與 forensics 拆成三個獨立能力層。
- 3.C12 Pinterest:Shallow Mirror 優化 MirrorMaker
Pinterest 跨 3 region MirrorMaker、原版解壓+重壓造成 CPU/memory 2-10x spike、改 RecordBatch 層淺迭代。
- 9.C12 Riot Games:246 個 EKS cluster 的多遊戲多地區治理
Riot Games 從 Mesos 遷移到 EKS、用 246 個 cluster 跨遊戲跨地區治理、年省 1000 萬美金
- Google:Postmortem Action Item Closure 治理
把 blameless postmortem 從會議文件變成可追蹤的可靠性治理機制:action item 分級、完成條件與回寫節奏。
- U.C13 匯入錯誤卡片出現「重新載入擴充功能」— 錯誤行動與層級不對位
錯誤畫面上的行動比錯誤本身更重(重載 app、重啟、重裝)是不對位訊號 — 行動的破壞半徑要與錯誤發生的層級相稱,通用錯誤容器會把最重的行動配給所有錯誤
- 11.C13 GitHub:密碼認證廢止的 brownout 執行
deprecation 執行機制案例:公告觸及不到的長尾 client、用排程 brownout 的短暫真實故障叫醒
- 4.C13 Discord:從儲存問題回推觀測缺口
每次儲存遷移都暴露觀測盲區,把儲存成長問題重新框架為訊號設計問題。
- 3.C13 Shopify:Debezium CDC over sharded MySQL
Shopify 100+ MySQL shard、150 Debezium connector、Black Friday 100K records/sec P99 < 10s。
- 9.C13 Disney+ Hotstar:IPL 板球決賽 1860 萬人同時直播
Hotstar 在 IPL 板球決賽創下 1860 萬同時觀看的全球直播紀錄、CDN 與全球邊緣容量極限
- Google:Toil Budget 與 Automation 投資政策
把 toil 從感受問題轉成預算問題:用時間配比與自動化回報機制,避免 on-call 壓力長期侵蝕可靠性工程。
- U.C14 hash SPA 的 pathname 永遠是根路徑 — 路由辨識遺漏 fragment
依 URL 判斷「目前在哪一頁」的功能對 hash-based SPA 失效時使用。web 路由有 path-based 與 hash-based 兩套慣例,跨 app 讀取對方 URL 時對方的路由形態是輸入規格的一部分
- 11.C14 Fielding:對 API 版本化的建議是「別做」
no-versioning 流派的理論錨點:hypermedia 演化取代版本號、與運營現實路線分歧的根源
- 4.C14 觀測平台成本治理:從帳單驚嚇到可預測成本
觀測帳單持續超線性成長時,用 cost attribution、cardinality budget、log tiering 跟 adaptive sampling 建立可預測成本模型。
- 3.C14 Yelp:Schematizer 自建 Schema Registry
Yelp data pipeline 強制所有 message 走 Avro、自建 Schematizer 做 schema evolution 與 topic 自動分配。
- 9.C14 Standard Chartered:受監管銀行的 Aurora 4000 TPS 容量提升
Standard Chartered 銀行遷移到 Aurora 後吞吐量提升 10 倍至 4000 TPS、跨 7 個受監管市場
- U.C15 切換按鈕顯示目標模式被讀成當前狀態 — 標籤語意歧義
模式切換按鈕的文字被使用者讀成「現在的狀態」而非「按了會去哪」— 單顆文字按鈕無法自證標籤是現態還是目標,歧義是結構性的,解法是把狀態顯示與切換動作的責任拆開
- 4.C15 SRE Book:叫醒人的觀測路徑必須 simple and robust
觀測系統跟被觀測系統一樣複雜就會一起變 fragile;把 alerting 關鍵路徑做到最簡是切開失效域的規範根據
- 11.C15 RFC 8594 Sunset header:退場宣告的機器可讀層
用 HTTP header 宣告資源退場時點的標準化嘗試、Informational 地位與實務採用有限
- 3.C15 Airbnb:Spark Streaming Kafka reader rebalance
Airbnb logging pipeline 解 partition-task 1:1 造成的 data skew、catch-up 4 小時 lag 要再花 4 小時的反效率。
- 9.C15 拓元 Tixcraft:售票搶購的瞬間爆量架構
拓元用 DynamoDB 當寫入緩衝 + 傳統伺服器當慢速消費者、承受 100K+ 同時選位 + 30 秒從 6 台擴到 800 台
- U.C16 篩選列截斷被讀成遮蔽 — 水平溢出沒有捲動提示
水平清單超出畫面寬度、使用者回報「被別的元件蓋住」或找不到後面的選項時使用。截斷若無 affordance(漸層、部分露出、箭頭),使用者讀到的是「壞了」不是「可以捲」
- 4.C16 Cardinality 事故爆炸:被觀測系統的異常把觀測後端打爆
事故時 error / user / request-id 維度從低基數 spike 成高基數、每個 unique 值生一條新 series、TSDB 在你最需要查詢時 crash
- 11.C16 Slack:四族 API 分階段收斂到 Conversations API
分階段 deprecation 執行:先掐斷新增量、再處理存量、最後硬停、過渡期用 in-band warning
- 3.C16 Robinhood:Faust Python stream processing
Robinhood 每天 billions of events、Python 團隊不想用 JVM 生態、把 Kafka Streams 移植到 Python。
- 9.C16 SeatGeek:DynamoDB + Lambda 打造的虛擬等候室
SeatGeek 用 DynamoDB 4 張表 + Lambda Bouncer 實作 flash-sale 限流排隊機制、取代第三方 waiting room 服務
- U.C17 選中態換底色不換文字色 — 對比沒有成對設計
選中的 chip / tab / 按鈕文字看不清楚:選中態是「底色 × 文字色」的成對設計,只指定其中一半、另一半走元件庫預設,組合對比從未被驗證
- 4.C17 GitLab 2017:告警靜默失效、儀表板被事故流量壓垮
備份失敗的通知信被 DMARC 拒收、沒人知道觀測已死;事故時公開監控頁被同一波流量壓垮 — 兩層共命運
- 11.C17 Facebook Graph API v1.0 退場:靜默語意切換(反例)
反例:到期後把 v1.0 請求靜默當 v2.0 處理而非回明確錯誤、長尾 app 默默壞掉
- 3.C17 Walmart:Messaging Proxy Service 解 rebalance storm
Walmart 每天 trillions of message、25K+ consumer 在 K8s、partition-consumer 1:1 模型撞到擴張極限。
- 9.C17 BookMyShow:印度年售 2 億張票的資料架構現代化
BookMyShow 從 15 年自建 analytics 遷移到 AWS modern data architecture、4 個月完成、分析成本下降 80%
- U.C18 狀態圖示被當成按鈕點 — 非互動指示與動作按鈕同形
使用者回報「某個按鈕點了沒反應」、查程式發現那不是按鈕時使用。非互動的狀態圖示與動作按鈕同列混排且形態近似(描邊 vs 實心),使用者無法區分可點性
- 4.C18 Datadog 2023:觀測廠商自己掛、客戶 monitors 停止告警
monitoring-as-a-dependency 的純粹形態:把「我有沒有事」外包給單一觀測供應商、供應商跨區同時更新一起垮
- 11.C18 GitHub:採用 GraphQL 的可量化動機
REST 佔資料庫層 60% 請求、over/under-fetching 並存的重構動機;什麼規模的痛才值得換風格的錨點
- 3.C18 Wix:Greyhound TLLSR 解 consumer 卡住
Wix 2000+ microservice 66B msg/day、自建 Greyhound 抽象、TLLSR 框架解 single-partition lag / poison pill / handler 卡住。
- 9.C18 Zoom:COVID 期間從 1000 萬到 3 億 DAU 的 30 倍突發
Zoom 在 2020 年 COVID 爆發時、日活從 1000 萬衝到 3 億、用 DynamoDB 撐住會議後端
- U.C19 「已選擇」計數被版面擠壓成省略號 — 回饋死在 layout
狀態文字顯示成「...」、資料層查起來卻一切正常 — 回饋鏈的最後一哩是版面,flex 寬度競爭把關鍵計數整串壓成省略號,state 正確、使用者拿到零資訊
- 4.C19 Watchdog / dead man's switch:訊號消失即告警
永遠觸發的告警交給獨立失效域的外部偵測器、它消失才代表告警管線本身死了;搭配 blackbox 外部探測互補
- 11.C19 GitHub:GraphQL point system 成本計點限流
GraphQL 打破 per-request 限流假設、平台被迫發明查詢成本模型、加 node 上限雙層防線
- 3.C19 Wix:Multi-cluster Kafka zero-downtime 遷移
Wix metadata 從 5K topic 漲到 20K topic / 200K partition、controller startup 跟 broker stability 受壓垮、分多 cluster 解決。
- 9.C19 Capcom:Resident Evil / Monster Hunter 在 DynamoDB + EKS 上的遊戲後端
Capcom 把 Resident Evil、Street Fighter、Monster Hunter 遊戲後端跑在 DynamoDB + EKS、單一秒位數延遲、營運成本降 30%
- U.C20 管理模式操作全是佔位 — dev toast 讓未接線看起來有反應
UI 有按鈕、domain 層功能也寫完、按下去只有開發提示或 log:佔位 handler 比沒有按鈕更糟 — 按鈕的存在承諾功能存在,dev toast 讓開發自測「有反應」、掩蓋未接線
- 4.C20 獨立 status page:對外狀態源的失效域隔離
主站掛時自建 status page 跟著掛;事故溝通通道的可用性不能依賴被溝通的那個系統、要放在獨立 domain 與 infra
- 11.C20 GitHub:REST 與 GraphQL 雙軌並行的十年穩態
2016 採用者的長期終點是共存而非取代、功能覆蓋不對等被官方明文承認
- 3.C20 Spotify:Event Delivery 從 Kafka 遷出(反例)
Spotify Kafka 0.7 MirrorMaker best-effort 會掉資料但回報成功、broker restart 後 producer 無法恢復、決定遷到 GCP Pub/Sub。
- 9.C20 Zomato:從 TiDB 遷移到 DynamoDB、吞吐 4 倍、延遲降 90%、成本減 50%
Zomato 帳單系統從 TiDB 遷移到 DynamoDB、吞吐 2K→8K RPM、延遲降 90%、成本減 50%
- 4.C21 Tail sampling:採樣壓力下保留 error 與尾延遲樣本
head sampling 在資訊不全時就決定去留、高錯誤率下丟掉你要的 error trace;tail sampling 看完整條才依 policy 保留高診斷價值樣本
- 11.C21 Shopify:宣告 GraphQL 為唯一 API、REST 轉 legacy
跟共存路線相反的策略極端:用新功能只上 GraphQL 製造遷移壓力、配套降成本加倍配額
- 3.C21 Goldman Sachs:MSK 遷移 with MirrorMaker 2
Goldman Sachs Global Investment Research 從 on-prem Kafka 遷到 MSK、用 MM2 同步 topic/ACL/offset、atomic cutover 7 小時完成。
- 9.C21 ASOS:Cosmos DB 在 Black Friday 撐 1.67 億請求
ASOS 在 2016 Black Friday 用 Azure Cosmos DB 撐 24 小時 1.67 億請求、3500 req/sec、48ms 平均延遲
- Datadog:2023 多區觀測中斷事件
監控平台自身退化時,如何避免客戶誤判系統健康狀態。
- Honeycomb:以 Burn Rate 驅動的可靠性操作
把 SLO burn rate 直接連到值班決策與改善優先序,降低高噪音告警造成的判讀失真。
- Netflix:Steady State、Chaos 與 FIT 的驗證路徑
把故障注入從工具操作升級成可驗證流程:先定義穩態,再設計注入與回復條件。
- 4.C22 SRE Workbook:預寫模板、mitigation-first、活文件
盲飛下把不依賴當下狀態的決策提前固化:預寫溝通模板、先止血再理解、人維護的活文件替代失效儀表板
- 11.C22 Matt Bessey:六年 GraphQL 老手的撤退清單(反例)
反例:授權下推到 field、成本不可預測、解析層攻擊面的執行期代價清單、附撤退判準
- 3.C22 Trivago:KEDA scale-to-zero by Kafka lag
Trivago 50+ Kafka sink、CPU/mem autoscaling 無效(I/O bottleneck)、KEDA 以 consumer lag 為訊號達到 scale-to-zero。
- 9.C22 Wayfair:用 GCP 提供 Way Day / Black Friday 的 burst capacity
Wayfair 22M+ 商品 + 16,000+ 供應商、用 GCP 補充 on-prem data center 在峰值事件的 burst capacity
- Netflix:Business-Hours Chaos 與 Guardrails
Chaos Monkey 為何刻意在 business hours 執行:把即時應變能力納入驗證,並用 guardrails 限制實驗風險。
- 4.C23 Google Home:客訴是監控失效時唯一生效的訊號源
內部監控漏掉未升級的真實 outage、是客訴量把事故推上去;consumer 回報作為 telemetry 替代品的正反面實證
- 11.C23 Echobind:從 GraphQL 撤到 tRPC 的量化帳(反例)
反例:五層重複宣告與三層 codegen 拖垮 DX 的量化紀錄、同時自列 tRPC 的適用前提
- 3.C23 Bloomberg:多租戶 vhost + 自助平台化
Bloomberg 從幾個團隊推到上百個團隊、靠自助 vhost 註冊跟專用叢集分離應用與 broker。
- 9.C23 Netflix:把關聯式 DB 統一到 Aurora、效能 +75%、成本 -28%
Netflix 把多套關聯式 DB 統一到 Aurora、效能提升 75%、成本下降 28%、串流數十億小時
- Netflix:FIT 證據交接與 Release Gate 回寫
用 Failure Injection Testing 產出的證據直接驅動 release gate:把實驗結果轉成可放行、可凍結、可回退的決策欄位。
- 4.C24 PagerDuty Customer Liaison:客訴的雙向 out-of-band 管道
專責角色把客戶回報聚合成 IC 可用的 scope 訊號、把確認過的狀態往外送;never lie never guess 在盲飛時尤其關鍵
- 11.C24 DataLoader 譜系:N+1 的官方解法變成基礎設施
resolver-per-field 讓 N+1 從偶發變預設、官方生態把 batching 做成基礎設施而非優化技巧
- 3.C24 SoundCloud:AMQP fan-out 音訊處理 pipeline
SoundCloud 每秒 20-30K persistent message、不同處理類型分開隊列、各自獨立 scale。
- 9.C24 Genesys:用 DynamoDB 在 15 region 跑出 99.999% 可用性
Genesys 客服平台用 DynamoDB 為預設資料層、跨 15 主 region + 5 衛星 region、達成 12 個月 99.999% 可用性
- 11.C25 HackerOne:introspection 列舉出未授權的 CreateAdminUser
introspection 作為攻擊面偵察工具的實證:schema 自我揭露讓隱藏 mutation 免 fuzzing 直接可見
- 3.C25 Indeed:Delay queue + DLQ 三層 escalation
Indeed 每天 35M+ 職缺、設計 Requeue → Delay queue → DLQ 三層 escalation 避開 head-of-line blocking。
- 9.C25 Tubi:從 ScyllaDB 遷到 ElastiCache、ML feature store 達 sub-10ms p99
Tubi 把 ML 推薦的 feature store 從 ScyllaDB 遷到 ElastiCache for Redis、99 百分位延遲降到 10ms 以下
- 11.C26 GraphQL 官方:versionless API 與 nullable-by-default
no-versioning 的成本轉嫁鏈:只加不改、deprecation、nullable 預設三個紀律換掉版本號
- 3.C26 GoCardless:Hutch + 單一 topic exchange service mesh
GoCardless 單一 RabbitMQ cluster 作所有 service 通訊中樞、routing key 用 service.subject.action 格式、JSON 多語言可讀。
- 9.C26 PayPay:行動支付每日 3 億訊息的 DynamoDB 後端
日本最大行動支付 PayPay 每日 3 億訊息、用 DynamoDB 處理通知與訊息功能、支撐次秒級反應
- 11.C27 WunderGraph:GraphQL 不該直接暴露在公網
介於全開與撤退之間的第三條路:GraphQL 當 server-side 查詢語言、對外只開 persisted operations;vendor 立場需標明
- 3.C27 Zalando:RabbitMQ on AWS 自動化 master selection
Zalando 用 sidekick 服務查 AWS API 動態識別 cluster、指定最老 instance 當 master、跨版本升級用 federation 過渡。
- 9.C27 Disney+:DynamoDB 撐每日數十億動作的觀看歷史
Disney+ 用 DynamoDB 撐每日數十億動作的觀看歷史、watchlist、播放進度等串流 metadata
- 11.C28 protobuf 官方規範:field number 紀律
編號不可改、刪除必 reserve、重用導致資料損毀;契約相容性是編碼格式的性質、不是 review 慣例
- 3.C28 WeWork:Consistent hash exchange 保證帳戶順序
WeWork 固定數量 queue + account ID hash 路由、每 queue 一個 worker + exclusive consumer 保 partition-level ordering。
- 9.C28 FanDuel:體育直播 + 投注的雙重峰值
FanDuel 3.5M MAU、Super Bowl 期間擴容 5-10 倍、用 AWS Local Zones + Wavelength + Outposts 處理 20+ 州的雙重峰值
- 11.C29 Buf breaking detection:四級規則對應消費者依賴
把 proto 相容紀律從人的自律升級成 CI gate、檢查粒度是產品決策不是工具預設
- 3.C29 WeWork:Bunny + Puma 多執行緒 channel pool
WeWork 從 Unicorn 切到 Puma 後遇 ConnectionClosedError、根因是 AMQP channel 跨執行緒共用、改用 connection_pool 管理。
- 9.C29 NTT DOCOMO Lemino:3 個月達 500 萬 MAU 的串流後端
Lemino 用 DynamoDB + AWS Media Services 撐 30 channels live + 5M MAU、工程工時下降 90%
- 11.C30 Buf Connect 發布文:對 grpc-go 的系統性批評
gRPC 部署邊界(trailers、瀏覽器、proxy)最完整的一手批評;發布方是競品、立場需標明
- 3.C30 Runtastic:Mirrored queue 網路負載瓶頸
Runtastic 2020 lockdown 流量暴增、performance test 揭露 mirroring 邏輯把網路元件壓垮、調整 mirroring 配置消除瓶頸。
- 9.C30 Microsoft 365:從 MongoDB 遷移到 Cosmos DB 的分析平台
Microsoft 365 把使用分析平台從 MongoDB 遷移到 Cosmos DB、planet-scale 全球分散式分析
- 11.C31 Dropbox Courier:百萬 RPS 規模的 gRPC 遷移
gRPC 當框架層集中可靠性的載體、遷移成本與 TLS 握手踩雷的規模判讀訊號
- 3.C31 Mozilla Pulse:命名前綴 + ACL 取代 vhost 多租戶
Mozilla Pulse 不用 vhost、改用權限 + 命名前綴 (exchange/{user}/*) 做隔離、CloudAMQP 託管、PulseGuardian 管使用者。
- 9.C31 Mercado Libre:LatAm 電商在 GCP 上用 Vertex AI 搜尋 1.5 億商品
Mercado Libre 1 億客戶 + 1.5 億商品、用 GCP Vertex AI Search + BigQuery 提供近即時搜尋與分析
- Amazon:Shuffle Sharding 與 Cell 邊界的失效局部化
用 cell 與 shuffle sharding 將多租戶故障限制在局部,讓恢復策略可分批執行。
- Discord:Gateway 容量事件與恢復節奏
長連線平台在容量邊界被擊穿時,如何控制擴散並分批恢復。
- LinkedIn:Capacity Headroom 與 On-call 分層
把容量預測與值班分層綁在一起,降低高峰時段的升級混亂與恢復延遲。
- 11.C32 gRPC: The Bad Parts:cURL 測試不過的 API(反例)
反例:獨立實踐者的 gRPC 批評清單、debug 可及性判準、含生態已修補的平衡敘述
- Amazon:Static Stability 與 Constant Work Pattern
控制面失效時資料面如何維持服務:用快取、預計算與固定工作量避免恢復放大。
- Honeycomb:Production Excellence 與 Test in Production
用 high-cardinality observability 把 production 變成安全的驗證環境:feature flag、progressive rollout 與即時回饋的配合。
- LinkedIn:Automated Load Testing 與 Capacity Forecasting
持續壓測驅動容量預測:用自動化回饋取代一次性壓測的容量規劃。
- 3.C32 LoyaltyLion:監控數千 RabbitMQ queue
LoyaltyLion 跑數千 queue、用 rabbitmqctl + statsd 推 Datadog、揭露大規模 queue 拓樸下原生 plugin API 不夠用。
- 9.C32 Clearent:Azure SQL Hyperscale 撐每年 5 億筆支付交易
Clearent 在 Azure SQL Hyperscale 上處理每年 5 億筆支付交易、autoscale + 微服務架構
- 11.C33 tRPC 設計哲學:無 schema 無 codegen 的型別共享
把 API 契約從 IDL 檔搬進型別系統的極端點、官方自述的前提與代價(TS-only、同倉共置)
- 3.C33 Wargaming:World of Tanks 戰後 dossier 解耦
Wargaming WoT server 全 Linux、戰後 dossier 寫 RabbitMQ、portal 顯示統計而不增 game server load。
- 9.C33 Maersk + Bosch:傳統產業在 Azure AKS 上的微服務治理
全球海運 Maersk 跟 Bosch 智慧建築把 AKS 當微服務治理基礎、釋放工程資源做業務功能
- 11.C34 JSON-RPC 重生:LSP 與 MCP 都選它當訊息層
死在 web API、活在編輯器與 agent 協議:最小夠用訊息層的選型條件組合
- 3.C34 Netlify:NATS 當全球 metrics/logs 統一資料平面
Netlify 70K+ 網站、10 億 PV/月、跨多雲、NATS 當 all-purpose data plane fan-out bus、超 RabbitMQ 評估。
- 9.C34 GCP:130,000-node GKE cluster 的工程極限
Google 用單一 GKE control plane 跑 13 萬個 node、AI workload + 1000 Pods/sec 創建吞吐
- 11.C35 RFC 9457:problem+json 標準化錯誤格式
type 用 URI 外部化錯誤命名空間、client 必須忽略未知欄位的演化條款、IANA registry 補 7807 碎片化
- 3.C35 Form3:NATS JetStream 多雲低延遲支付
Form3 服務 Tier-1 銀行、500ms SLA、SNS/SQS 吃 300ms 預算、改 NATS+JetStream 跨雲 6x 延遲改善。
- 9.C35 Snap:GCP + KeyDB 在 multi-cloud 架構下的低延遲快取
Snap 用 GCP 上的 KeyDB cluster 減少跨 cloud cache 延遲、用 TPU 訓練廣告推薦模型
- 11.C36 Stripe 錯誤物件:type / code / param 三層分離
路由層、分支層、UI 層做成正交欄位;冪等衝突列 first-class 錯誤型別;標準前自成一格的對照組
- 9.C36 Coinbase:MongoDB 撐 Ruby 單體 + 1.5M reads/sec identity 服務
Coinbase 以 MongoDB 為主資料層、自建 mongobetween connection proxy、users 服務在加密貨幣 surge 時撐 1.5M reads/sec
- 3.C36 Intelecy:工業 IoT 即時感測 + 多租戶
Intelecy 工廠 gateway 接數萬感測器、< 2 秒往返延遲做即時 ML、從 BoltDB 本地快取演進到 JetStream 持久化。
- 11.C37 Slack:offset 到 opaque cursor 的分頁遷移
深頁掃描與 page window 漂移兩個失效模式、opaque cursor 把分頁狀態表示權留在 server 端
- 9.C37 Forbes:自管 MongoDB → Atlas on GCP、build 時間 25 → 9 分鐘
Forbes 把自管 MongoDB 遷到 Atlas on Google Cloud、6 個月完成、build 25 → 9 分鐘、120M 不重複訪客單月承接
- 3.C37 MachineMetrics:邊緣到雲端工廠資料管線
MachineMetrics 跨數百工廠、數千機台、1000Hz 採樣、Kinesis 無法跑在 edge、改 NATS Leaf Node + JetStream + KV + Object Store。
- 11.C38 Stripe 冪等設計哲學:retry 是 client-server 協作
三種失敗點的 replay 行為分析、client 端 backoff + jitter 責任;冪等只做 server 半邊會放大故障
- 9.C38 Toyota Connected:MongoDB Atlas 撐 900 萬車輛 telematics、月 180 億 transaction
Toyota Connected 用 MongoDB Atlas 撐 Safety Connect 900 萬車、月 180 億 transaction、緊急訊號 3 秒內到 agent
- 3.C38 Clarifai:NATS Streaming ML 平台非同步任務
Clarifai custom model 訓練、rolling deploy 掉訊息、改 NATS Streaming queue group、3 週遷移 1 服務、5 月 5 服務、每日 100k+ 訊息 100% uptime。
- 11.C39 Stripe 冪等鍵契約條款:24h 保存、500 也重放
可承諾的冪等契約細節:重放的是該次請求的結局而非成功結果、同 key 不同參數即錯
- 9.C39 DoorDash:Aurora Postgres 寫入瓶頸 → CockroachDB 多主寫入
DoorDash 從 Aurora Postgres 遷到 CockroachDB、解 1.6 M QPS 單主寫入瓶頸、外送平台爆量壓力下重做 OLTP 拓樸
- 3.C39 Choria:NATS 管 50 萬 server fleet
Choria 替代 Puppet MCollective、NATS 單 binary 無 Zookeeper、4GB node 可達 50 萬 server、wildcard + queue group 做 scatter-gather RPC。
- 11.C40 IETF Idempotency-Key draft:標準化停在 expired
de facto 先於 de jure 的具體例:業界事實標準先行、IETF 標準化跟進後停滯;引用必標 expired 狀態
- 9.C40 Netflix:380+ CockroachDB cluster 的 multi-active 拓樸艦隊
Netflix 把 Cassandra 不夠用的 transactional workload 移到 CockroachDB、380+ cluster / 60+ 跨 region、含 Open Connect、studio cloud drive、gaming control plane
- 3.C40 Resgate:WebSocket-to-NATS realtime API gateway
Resgate 把 NATS subject 暴露成 REST + WebSocket、subject 階層當 schema、event 延遲 < 1ms、純 Core NATS。
- 11.C41 PayPal-Request-Id:同語意、不同契約的冪等實作
跟 Stripe 的三點對照:header 命名、replay 語意(最新狀態 vs 首次結局)、契約精確度
- 9.C41 Hard Rock Digital:CockroachDB on AWS Outposts、Wire Act 合規 + 跨州單一邏輯 DB
Hard Rock Digital 用 CockroachDB 跨 AWS Outposts + US-East-1、Wire Act 強制資料留州、單一邏輯 DB 解多州 sportsbook、100 node 32 vCPU 撐 Super Bowl
- 3.C41 i-flow:NATS 做 OT/IT 跨層整合 bus
i-flow 每日 4 億筆 data operation、200+ OT/IT connector、客戶含 Bosch / Sto / Lenze、NATS 當邊緣到 central 整合 bus。
- Azure AD:2021 身分控制面中斷事件
身分服務失效時,如何評估跨產品影響與收斂優先序。
- Meta:Region Failover 與可靠性邊界
把跨區故障視為邊界治理問題,透過分區隔離與回復順序控制失效擴散。
- Stripe:Idempotency 與零停機遷移的交易安全設計
把 API 重試與資料遷移放在同一套安全模型,維持支付交易的一致結果。
- 11.C42 IETF RateLimit headers:政策與狀態拆兩個 header
限流 header 的承諾邊界:informational only、不是 SLA;active draft、引用標版本
- Meta:BGP 事故與控制面恢復順序
當回復工具依賴已故障的系統:2021-10 事故揭露控制面恢復順序與 out-of-band 存取的設計約束。
- Pinterest:Storage Migration 與 Data Infrastructure Reliability
大規模儲存遷移的可靠性設計:用 dual-write、shadow read 與 staged cutover 讓 PB 級資料基礎設施變更可漸進、可驗證、可回退。
- Spotify:Backstage Service Catalog 與 Reliability Metadata
用 service catalog 治理分散團隊的可靠性資訊:ownership、SLO 狀態、依賴圖與 runbook 的單一入口。
- Stripe:Canary Deploy 與 Progressive Rollout 治理
金流場景如何用交易指標驅動放行節奏:延遲確認、duplicate 偵測與自動回退。
- 3.C42 Bitso:Reliable Redis Streams 抽象 + 自建 DLQ
Bitso 加密交易所、千 msg/sec/stream + 亞毫秒延遲、自建 Reliable Streams 封裝 PEL + retry + DLQ、idempotent processing。
- 11.C43 GitHub 雙層限流:primary / secondary 與 x-ratelimit 契約
單一維度配額擋不住真實濫用、前標準時代 x- header 與 IETF 命名並存的遷移期現實
- 3.C43 Arcjet:Redis Streams 取代 Kafka 省 6 位數 $
Arcjet security 平台、Kafka managed 6 位數 $/yr、用 Redis Streams 約 $1k/yr、自寫 Janitor 監控 retention。
- 11.C44 Google AIP-151:長時操作實體化成 Operation resource
202 + 輪詢模式的系統化版本:回應型別先宣告、client 統一寫一套 polling、operation 生命週期明訂
- 3.C44 Harness:CD 微服務 async state transfer
Harness CD 平台用 Redis Streams 解 brittle HTTP、揭露監控缺口 / MAXLEN truncation / head-of-line blocking 三類問題。
- 11.C45 Twilio 2013 計費事故:無冪等防線的重複扣款(反例)
反例:內部 retry 迴圈缺冪等閘門等效於無限重放、fail-safe 是金流 side effect 的斷路器
- 3.C45 Klaxit:Rust + Redis Streams 處理 Heroku Logplex
Klaxit carpool 用 Redis Streams 處理 Heroku Logplex 匯流、自動偵測修復平台 perf 問題、6 個月 production Rust。
- 11.C46 Google AIP:規範即提案系統的治理模式
編號提案制、狀態機、簽核門檻把 IETF RFC 流程內化到單一組織;中心化治理、社群貢獻是輸入
- 3.C46 Learning.com:Redis 事件源退場(反例)
Learning.com 把 microservice event store 放 Redis、1 年累積 GB/週、AOF+EBS 變 latency 痛點、退到 PostgreSQL。
- 11.C47 Zalando API-first:Guidelines、Guild、Zally、Portal 四件套
規範存活靠配套組織機制:文件、人的治理、自動化、可發現性缺一環就退化成書架文件
- 3.C47 PHP 微服務:Redis Streams + S3 hybrid storage
PHP 雙微服務通訊、Kafka 在 PHP 生態工具薄弱、用 Redis Streams + payload compression + S3 hybrid 處理大訊息。
- 11.C48 Microsoft REST Guidelines:單一 repo 內的分軌治理
規範沿組織邊界分化的實況:Core / Azure / Graph 三軌並存、跟「像同一團隊設計」理想的張力
- 3.C48 Airbnb Dynein:SQS 分散式延遲任務排程
Airbnb 用 SQS at-least-once + DLQ 取代 Resque 單 Redis 限制、每 scheduler 1000 QPS、SQS wrap DynamoDB 處理 > 15 分鐘 delay。
- 11.C49 Spectral 與 Zally:guidelines 變成可執行檢查
治理成本從人工 review 前移到 CI;通用 linter 加組織 ruleset 比單一組織專用 linter 更能存活
- 3.C49 Airbnb Inspekt:Visibility timeout 當 retry budget
Airbnb Inspekt 隱私掃描器、scanner pull message、visibility timeout 自然觸發重現、用重現次數當 retry budget。
- 11.C50 JSON:API:以停止 bikeshedding 為賣點的格式標準
價值主張放在組織成本而非技術能力:採現成標準 vs 自建規範加治理是規範治理的核心選擇
- 3.C50 Capital One:Visibility timeout 設計與 Lambda event source
Capital One tech blog 講 SQS + Lambda:visibility timeout 應略高於最大處理時間、Lambda 初 5 個 long polling、可擴 60/min。
- 11.C51 OData:ISO 認證救不了生態萎縮(反例)
反例:正式標準化程度最高、主流化程度不成比例;marquee adopter 離場比標準機構背書更能預測標準命運
- 3.C51 Atlassian JiRT:Kinesis + SQS subscription
Atlassian StreamHub Kinesis 底層、每 consumer 自己一個 SQS queue、JiRT 把輪詢 1 min 改成秒級 event-driven。
- Heroku:Routing 控制事件與多租戶影響
PaaS 路由層異常時,如何限制租戶擴散並維持可用通訊。
- Microsoft:變更治理與可靠性門檻
透過分層變更管理與發布閘門,降低大型 SaaS 平台的系統性回歸風險。
- Shopify:BFCM 容量治理與 Game Day 驗證節奏
把季節性流量峰值轉成年度可靠性流程,透過容量模型、演練與隔離策略提前吸收風險。
- 11.C52 OpenAPI Initiative:從 Swagger 捐贈到開放治理
單一 vendor spec 轉軌中立基金會的成功樣本:治理轉移是把既有動能中立化、不是用背書創造動能
- Microsoft:Safe Deployment Practices 與 Resilience Patterns
大型 SaaS 用 ring-based deployment 控制變更擴散,用標準化 resilience patterns 讓依賴失效時的降級行為可預測。
- Shopify:Pod Architecture 與 Resiliency Matrix
多租戶隔離與系統化失敗模式盤點:pod 邊界控制擴散、resiliency matrix 驅動演練。
- 3.C52 Nielsen:Spark on EKS 雙 SQS 工作流
Nielsen 每日 25TB / 30B event、work queue + completion queue 雙 SQS、queue depth autoscale EKS pod。
- 11.C53 AsyncAPI:刻意相容 OpenAPI 的補位策略
站在既有標準肩上補 event-driven 缺口:以相容性換採用曲線、描述格式的邊界即治理邊界
- 3.C53 FINRA:S3 → SQS notification 大檔上傳
FINRA 金融監管、broker 上傳大檔、S3 → SQS notification → LFS、KMS + bucket policy + queue policy 三層稽核。
- 11.C54 White House API Standards:規範制定後棄置(反例)
反例:文件品質不差、但沒有 Guild / linter / review 等執行機制與持續 ownership、34 commits 後封存
- 3.C54 Twitch EventSub:SNS+SQS fan-out 給第三方
Twitch Event Bus ~1660 events/sec 進 SNS、EventSub 用 SQS 接收 + Dispatcher fan-out 給訂閱者。
- 11.C55 WHATWG SSE spec:內建自動重連與 Last-Event-ID 補送
SSE 把重連與斷點續傳的協商鉤子寫進協議:自動重連、Last-Event-ID 補送、retry 欄位;補送實際保證仍看 server replay
- 3.C55 SmugMug:SQS 驅動可重放搜尋管線
SmugMug 用 SQS 兩種模式:DynamoDB scan-segment 平行 backfill + production query 鏡像 replay 到 replica。
- 11.C56 RFC 6455:WebSocket 是雙向 transport、不內建投遞保證
WebSocket 給雙向管線、不給保證:協議層對投遞保證、ack、重連、斷點續傳全部沉默、留給應用層
- 3.C56 PostNL EBE:完整 DLQ + retention + redrive 設計
PostNL 物流每天 1000 萬訊息、每 producer/consumer 隔離 stack、24h 內 100 次 retry、final DLQ 可 consumer redrive。
- 11.C57 Slack Socket Mode:WebSocket 上自建 ack、retry 與多連線熱備
協議不給保證、vendor 在應用層自建整套可靠性:envelope ack、未 ack 就 retry、多連線熱備、斷線預警
- 3.C57 Lob:自家 fork @lob/sqs-consumer 修 FIFO bug
Lob 原用 bbc/sqs-consumer 鎖 SDK v2、fork 出 @lob/sqs-consumer 支援 SDK v3 + TypeScript + 修 FIFO bug。
- 11.C58 RFC 6202:long-polling 的機制代價與 fallback 定位
long-polling hold 住請求到有事件才回:header 開銷、三段網路延遲、每 client 佔一條連線是機制決定的、不是實作品質
- 3.C58 Twilio:SQS 緩衝高流量 webhook
Twilio 教用 SQS 緩衝 SMS / status callback webhook、分 queue(SMS vs callback)、long polling 減 cost、FIFO 300 TPS 上限要分片。
- 11.C59 Socket.IO:先 long-polling 再 upgrade WebSocket 的 transport negotiation
WebSocket 不保證能建立(proxy/防火牆會擋)、所以先用 long-polling 建連再 upgrade:fallback 的價值是相容性下限、不是效能
- 3.C59 Rapid7:SQS 100 億 message/day 規模
Rapid7 公開引述:SQS 撐 10s of billions of messages per day、是架構關鍵元件、scale 量級的具體參考。
- 11.C60 Stripe webhooks:at-least-once 加簽章、明文要求 consumer 冪等與不依賴順序
webhook 對外承諾的教科書樣本:三天重試、重複投遞、no-ordering、簽章驗證的責任在同一頁明文轉移給 consumer
- 3.C60 Spotify:Event Delivery 從 Kafka 遷到 Pub/Sub
Spotify 全球 event delivery 從 Kafka 遷到 Pub/Sub、~2500 VM、Q1 2019 8M events/s、350TB/day raw、自建 dedup。
- 11.C61 GitHub webhooks:不自動重試的反向承諾
at-least-once 不是所有 vendor 都給:GitHub 明文只試一次、失敗靠 consumer 自建排程補投;逼你讀 vendor 明文而非假設
- 3.C61 Spotify:Autoscaling Pub/Sub consumer 反效果
Spotify 下游失敗時 consumer 不 ack 仍耗 CPU、autoscaling 越拉越高、解法是 exponential backoff 抑制 CPU。
- Pinterest:快取可靠性與容量驚奇治理
針對快取層失效與流量突增,建立容量緩衝、退化路徑與重建節奏。
- Reddit:2023 Kubernetes 升級事故
平台升級變更如何觸發服務退化,以及如何設計可回退的升級策略。
- 11.C62 Slack Events API:3 秒 ack 上限加固定三次重試
「慢等於失敗」寫死成 3 秒硬上限、逼 consumer 走立即 2xx 加背景處理;retry header 讓 consumer 辨識重投
- 3.C62 Spotify:Pub/Sub → GCS reliable export
Spotify 用 Oldest Unacknowledged Message metric 判斷 hourly bucket 何時可安全關閉、ack 綁定下游 commit。
- 11.C63 Shopify webhooks:ordering 不保證、指定 header 去重、投遞不保證
跨 vendor 佐證 ordering-not-guaranteed 加冪等 header 是通則;甚至連投遞本身都不保證、需 reconciliation 兜底
- 3.C63 Mercari Actionable History:ack deadline 是 batch-level
Merpay 支付流水帳用 Pub/Sub、ack deadline 是整批 batch 而非單訊息、acked 訊息會跟同批 expired 一起 redeliver。
- 11.C64 RFC 4918 207 Multi-Status:status line 降格為「請讀 body」
一個 status code 裝不下批次結果:WebDAV 把每資源狀態下放到 body、解析責任隨之轉給 consumer
- 3.C64 Mercari Item Feed:DLT 防 poison message 阻塞
Mercari 商品 feed 同步、ack 整批 / nack 重送、重試多次仍失敗送 DLT、topic 同時當 load-leveling buffer。
- 11.C65 Google AIP 部分成功立場:同步必原子、非同步才准部分成功且要顯式 opt-in
AIP-193 明文「不該支援 partial errors」、批次三部曲給出原子性階梯與 LRO 出口:部分成功要 client 顯式同意
- 3.C65 Mercari LINE:Pull subscription 對齊外部 RPS
Mercari LINE webhook 轉 Pub/Sub、worker pull subscription 精確控制 RPS、應 LINE API 限制。
- 11.C66 RFC 9110 202 Accepted:接受不等於承諾、HTTP 沒有回傳非同步結果的機制
202 是規範明文的 intentionally noncommittal:一旦回了 202、協定層不再有管道通知最終失敗、通知責任移轉到應用層
- 3.C66 Mercari B2C:自建 PubSub gRPC Pusher
Mercari 全球商品同步、原生 HTTP push 在「長 job + 高吞吐 + 動態 RPS」場景受限、自建 gRPC 版 push。
- 11.C67 RFC 9110 502/504:gateway 只回報自己的觀察、不回報上游的執行狀態
502/504 定義只說 gateway 沒收到有效或及時回應、沒有欄位區分「請求沒送到」與「執行了但回應丟了」— retry 安全性相反的兩種情況拿到同一個 code
- 3.C67 Niantic Pokémon GO:Pub/Sub 當 telemetry ingest
Pokémon GO frontend publish 玩家事件、~1M TPS、Pub/Sub elastic buffer、下游 BigQuery streaming。
- 11.C68 Exponential Backoff And Jitter:無 jitter 的退避是明確輸家
N 個 client 同時競爭時總工作量隨 N² 成長;三種 jitter 公式實測、Full Jitter 總工作量最少 — consumer 之間的隱性同步要主動打散
- 3.C68 Wix:Pub/Sub decouple + Dataflow + BQ archive
Wix App Engine 收 clickstream 進 Pub/Sub、Dataflow 進 Datastore < 100ms、BigQuery 並行存 raw recovery。
- 11.C69 Google SRE Book:retry 放大與跨層疊乘、per-request 上限與 retry budget
retry 放大讓有效工作遞減;三層各 retry 3 次在底層變 64 次;建議 per-request 上限 + server-wide retry budget、provider 要用不同 code 分開可重試與不可重試
- 3.C69 Twitter Ad Engagement:把 stream 切成多 topic 做 partition
Twitter 把 80K msg/s stream 切成 6 個 topic 做 partition、Avro schema、Beam/Dataflow → Bigtable/BQ。
- 11.C70 AWS DynamoDB 2015 事故:內部元件的 retry 自保把錯誤率推到 55%(反例)
反例:metadata 服務過載後 storage server 逾時自我下線再重試、風暴成形後系統不自癒、要人工暫停請求才能喘息;事後修正同時動兩端
- 11.C71 Slack 2021-01-04 事故:復原期 retry 加 circuit breaking 是藥方
retry 的反向平衡:網路恢復後正是 retry 與 circuit breaking 讓系統爬回服務狀態 — retry 是否有害取決於 provider 處於過載中還是恢復中
- Microsoft 365:套件級身分驗證事故
企業套件在身份依賴失效時,如何同步處理跨產品影響與對外揭露。
- Spotify:平台工程與可靠性契約
用平台契約統一服務團隊的可靠性最低標準,降低跨團隊變更造成的隱性風險。
- 11.C72 AWS retry 指南:retry storm 的官方定義與分層限制
Well-Architected 逐字定義 retry storm、建議低層服務 retry 上限 0-1 次、把 retry 委派給上層;Builders' Library 的 token bucket 路線
- 11.C73 gRPC 兩層錯誤模型:status code 是保證層、richer detail 是選配層
標準模型全語言保證、richer error model 走 trailing metadata — proxy 與 logger 看不到、中間節點對錯誤細節是盲的
- 11.C74 gRPC status code 產生者歧義:收到的 code 不一定來自 server 應用層
17 個 code 裡只有 7 個保證來自 user code;UNAVAILABLE / INTERNAL 可能是 library 或 channel 自產 — consumer 對錯誤來源的信任判讀有一手依據
- 11.C75 AIP-193 錯誤內容規範:三層受眾與「不假設使用者懂內部實作」
機器可讀的 (reason, domain) 契約、developer-facing message、LocalizedMessage 三層分工;message 穩定性規則反向揭露 Hyrum's Law
- 11.C76 W3C Trace Context:traceparent 的傳播義務與 security boundary 重開機制
跨 vendor trace 關聯的標準鉤子:每一跳 MUST 傳播、security boundary 可 restart trace、無效 id MUST ignore — 信任邊界寫進規範
- 11.C77 OWASP error handling:錯誤訊息是攻擊者的偵察面
非預期錯誤回 generic response、細節只留 server side log — provider 少暴露的安全端論證、跟 AIP-193 的機器可讀路線形成張力
- 7.R7.M 案例引用地圖(服務主題 -> 案例 -> workflow)
把服務主題連到完整案例體系,再連回 incident workflow 檢查點
- 7.R7.1.1 Uber 2022:MFA 疲勞與內部工具擴散
從社交工程到內部工具存取,拆解身分流程與權限邊界的失效點
- 7.R7.1.2 Okta + Cloudflare 2023:支援流程與身分供應鏈
支援工單與第三方身份供應商路徑如何變成入侵鏈的一部分
- 7.R7.1.3 Twilio 2022:社交工程與員工帳號路徑
社交工程如何穿透員工身分流程,並影響下游客戶與供應鏈
- 7.R7.1.4 MGM 2023:身分流程被打穿後的營運中斷
社交工程造成身分邊界失守後,如何演變成可用性與營運衝擊
- 7.R7.1.5 Microsoft Storm-0558 2023:簽章金鑰鏈與郵件存取
從簽章金鑰保護失效到雲端郵件存取,拆解身分信任鏈的關鍵控制點
- 7.R7.1.6 Cloudflare 2023:供應商事件後的身分收斂
同一條供應商事件鏈,如何在客戶端變成 session 與 token 的收斂壓力
- 7.R7.1.7 Slack 2022:企業 token 與程式碼資產路徑
員工帳號被社交工程利用後,企業 token 與私有程式碼資產的防線如何運作
- 7.R7.1.8 Dropbox 2022:釣魚入侵與程式碼倉儲風險
從員工釣魚事件到私有程式碼資產保護,建立身分與研發資產的聯防流程
- 7.R7.2.1 SolarWinds 2020:更新鏈被濫用
合法更新流程遭植入後,攻擊者如何長期潛伏與橫向擴散
- 7.R7.2.2 GitHub OAuth 2022:第三方 token 供應鏈風險
第三方整合 token 被竊後,如何形成跨組織存取風險
- 7.R7.2.3 CircleCI 2023:CI secrets 輪替壓力
工程端點入侵後,CI 平台 secrets 如何成為高風險擴散點
- 7.R7.2.4 XZ Backdoor 2024:開源供應鏈長期滲透
開源維護鏈遭滲透後,為何會直接影響廣泛 Linux 發行流程
- 7.R7.2.5 TeamCity 2023:CI 入口漏洞與交付鏈風險
CI 平台入口被利用後,如何沿著建置與發佈流程擴散供應鏈風險
- 7.R7.2.6 ScreenConnect 2024:RMM 平台入口與下游擴散
遠端管理平台入口被利用後,服務商與客戶環境會同步承壓
- 7.R7.2.7 Log4Shell 2021:共用元件風險與修補鏈
共用元件漏洞如何同步影響多服務,並迫使團隊建立依賴治理 workflow
- 7.R7.2.8 3CX 2023:桌面軟體更新鏈攻擊
合法更新流程被植入後,桌面端供應鏈事件如何傳到企業端點
- 7.R7.2.9 Kaseya VSA 2021:MSP 供應鏈擴散路徑
管理平台事件透過 MSP 模型向多客戶擴散時,workflow 應如何分層應對
- 7.R7.3.1 MOVEit 2023:外網檔案服務批量外送
MFT 對外入口在零時差事件中如何被批量利用
- 7.R7.3.2 Ivanti 2024:CVE-2023-46805/2024-21887 VPN 邊界漏洞鏈
多漏洞串接下,邊界設備事件如何轉為持續控制風險
- 7.R7.3.3 Citrix Bleed 2023:會話被劫持與重放風險
邊界設備會話資料外洩後,如何演變成帳號與服務風險
- 7.R7.3.4 PAN-OS 2024:邊界設備遠端命令執行
邊界設備 RCE 事件如何迫使團隊在修補與營運可用性間快速取捨
- 7.R7.3.5 PaperCut 2023:認證繞過與入口執行風險
管理平台入口若被認證繞過,內部列印與服務節點會暴露在遠端控制風險
- 7.R7.3.6 Confluence 2022:網站入口 RCE 與知識系統風險
協作平台外網入口被打穿時,內部知識與憑證線索會同步外露
- 7.R7.3.7 Cisco IOS XE 2023:Web UI 管理面風險
網通設備管理介面暴露時,攻擊可直接穿透邊界控制平面
- 7.R7.3.8 Fortinet SSL-VPN 2024:邊界 VPN 高風險窗口
VPN 邊界漏洞發生時,入口隔離與修補節奏需要同時啟動
- 7.R7.3.9 SysAid 2023:ITSM 入口與維運流程風險
ITSM 服務入口被利用後,維運流程會成為擴散加速器
- 7.R7.4.1 LastPass 2022:備份路徑與鏈式入侵
開發環境資訊外流如何沿著備份路徑擴大成資料風險
- 7.R7.4.2 Snowflake 2024:憑證濫用與資料竊取
外洩憑證與 MFA 缺口如何在資料平台形成高風險外送事件
- 7.R7.4.3 Change Healthcare 2024:資料事件轉為營運中斷
醫療支付中樞事件如何同時衝擊資料安全與業務連續性
- 7.R7.4.4 Mailchimp 2023:支援工具路徑與客戶資料風險
社交工程進入客服工具後,如何形成特定客戶資料存取風險
- 7.R7.4.5 VMware ESXiArgs 2023:虛擬化平台勒索回復壓力
虛擬化平台漏洞被利用後,回復策略與營運連續性會面臨同步壓力
- 7.R7.4.6 Progress WS_FTP 2023:檔案服務入口與資料外送
對外檔案服務漏洞在企業環境常直接轉為資料外送風險
- 7.R7.4.7 GoAnywhere MFT 2023:傳輸中樞被利用的外送鏈
MFT 中樞服務漏洞會把檔案交換流程直接轉成資料外送風險
- 7.R7.2.10 TeamCity 2024:CVE-2024-27198/27199 入口鏈
TeamCity 連續漏洞揭示 CI 平台入口繞過與路徑穿越的供應鏈風險
- 7.R7.3.10 Juniper 2023:網通設備鏈式漏洞窗口
鏈式漏洞出現在核心網通設備時,修補與流量穩定性需要同步決策
- 7.R7.3.11 ServiceNow 2024:企業平台入口風險
企業核心平台漏洞出現時,服務流程與資料流程都需要同步收斂
- 7.R7.3.12 Check Point 2024:VPN 資訊外洩與會話風險
邊界設備資訊外洩漏洞可快速轉為憑證與會話濫用風險
- 7.R7.3.13 ProxyLogon 2021:CVE-2021-26855/27065 入口鏈式失效
郵件系統入口漏洞被串接利用時,事件會迅速擴大到內部服務邊界
- 7.R7.3.14 ProxyShell 2021:CVE-2021-34473/34523/31207 後續鏈式攻擊
同類入口平台在後續漏洞波次中,如何建立持續修補與驗證機制
- 7.R7.3.15 FortiOS 2022:VPN 零時差事件節奏
邊界設備零時差事件需要隔離、輪替、復測的完整鏈條
- 7.R7.3.16 Citrix ADC 後續事件:Session 重放延伸
同一波邊界事件在後續通報階段,重點轉為會話與憑證收斂
- 7.R7.3.17 Confluence 2023:CVE-2023-22515/22518 權限控制鏈
Confluence 權限控制弱點在連續漏洞波次中如何擴大入口風險
- 7.R7.3.18 Citrix 2023:CVE-2023-3519 邊界代碼注入
NetScaler 邊界入口代碼注入事件揭示管理平面快速失守風險
- 7.R7.3.19 F5 BIG-IP 2023:CVE-2023-46747 認證繞過
BIG-IP 組態管理入口認證繞過如何放大邊界設備治理壓力
- 7.R7.3.20 Fortinet 2022:CVE-2022-40684 認證繞過
Fortinet 多產品認證繞過事件反映邊界與管理面共享風險
- 7.R7.3.21 Fortinet 2023:CVE-2023-27997 SSL-VPN 溢位
SSL-VPN 漏洞在邊界設備上會放大大規模掃描與利用速度
- 7.R7.3.22 FortiClient EMS 2023:CVE-2023-48788 SQL 注入
端點管理平台 SQL 注入事件揭示管理平面資料與權限風險
- 7.R7.3.23 ManageEngine 2021:CVE-2021-40539 認證繞過
身分服務入口認證繞過會把帳號管理流程直接暴露在攻擊鏈上
- 7.R7.3.24 USAHERDS 2021:CVE-2021-44207 硬編碼憑證
硬編碼憑證事件展示供應商系統配置治理與存取控制的共同風險
- Cards-Skills 系統的活案例:從一個 search bug 到 14 張新卡的閉環
report 卡片 + skill 作為自我修正的活知識庫:從一個 search bug 走完閉環的 case study。教訓:test 過不等於對齊意圖、dogfooding 失敗靠外部提問現形、修 bug 是 case study 起點。
- 決策對話協議的浮現:從 #74 到 #81 的多層迭代
決策模式從對話浮現為卡片的 spiral 過程與決策對話協議。提醒 yes/no 二選是最隱形的 collapse 反模式、spiral 深度由 user 外部觸發決定。