創造與建構
6/22 GitHub 又把我斷線了:但這一次,我的網站沒有停
摘要
作者遭遇 GitHub 帳號第二次無預警停權,但這次網站零中斷、電子報如期上線。差異在於 4/29 首次事故後,他花兩週重新設計了五層解耦架構:將部署鏈從依賴 GitHub Actions 改為直接用 Cloudflare API token 部署,並設置 Codeberg 與 GitLab 作為獨立備援倉庫。6/22 事故驗證了該系統的有效性。然而這次也暴露一個隱藏的盲區——兩條看似獨立的備援路徑實際上共用同一個 GitHub 身份認證,成為假冗餘。文章深入探討複雜系統中的隱形耦合風險,強調韌性架構必須經過真實事故檢驗才能發現盲點,每次驗證都是演化的機會。
重點
- 部署流程解耦是關鍵:直接推送到 Cloudflare,不經 GitHub Actions,將掌控權拿回自己手上。
- 假冗餘比無備援更危險:多條看似獨立的備援路徑可能共用同一失效源(同源單點),給虛假的安全感。
- 複雜系統的隱形風險藏在節點間的耦合關係裡,不在工具本身,需要持續檢驗才能發現。
- 韌性不是設計完成就算數,必須被真實衝擊檢驗,每次事故都暴露新的盲區並推動架構進化。
- 真正的主控權在於看見問題、改動結構,而非只是擁有備備方案或工具選項。
章節
- GitHub 第二次停權與架構驗證
6/22 GitHub 再次停權,但網站零中斷、電子報順利上線,驗證了 4/29 後重建的五層解耦架構的實際效用。
- 部署鏈的完全解耦
將部署流程從依賴 GitHub Actions 改為直接用 wrangler + Cloudflare API token,程式碼同時推送到 Codeberg 和 GitLab 實現獨立備份。
- 第二次停權實測結果
被擋的是 git push 和專案儀表板同步;照常運行的包括部署、網站、電子報、Notion 鏡像,展示解耦架構的保護力。
- 隱藏的假冗餘陷阱
兩條看似獨立的備援路徑共用同一個 GitHub 身份認證,屬於同源單點失效,暴露架構設計中的認知盲區。
- 複雜系統中的隱形風險
複雜系統的風險藏在工具間的耦合關係裡,隱形的依賴往往最危險,需要不斷檢驗才能發現。
- 韌性的動態演化
韌性架構沒有完成之日,每次真實事故都是檢驗,每次檢驗都更新盲區清單,推動系統不斷堆疊進化。
金句
GitHub 這次並沒有比較友善。一樣冷酷,一樣突然,一樣是 403,一樣沒有事先通知。不一樣的,是中間我們規劃的系統。
假冗餘是讓你以為自己穿了盔甲,直到被打中那一刻,才發現那是紙板。
風險不藏在工具裡,藏在工具之間的關係裡。複雜本身,就是一種藏起來的風險。
一套韌性架構,要被真實世界檢驗,才知道真正的價值。更重要的是,每檢驗一次,就可以更新一次盲區清單。
建好系統不等於自由。真正撐住你的,是系統被現實測試時,你看得見問題、改得動結構,把主控權拿回自己手上。