Agent-almanac adapt-architecture
install
source · Clone the upstream repo
git clone https://github.com/pjt222/agent-almanac
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/wenyan-lite/skills/adapt-architecture" ~/.claude/skills/pjt222-agent-almanac-adapt-architecture-64293b && rm -rf "$T"
manifest:
i18n/wenyan-lite/skills/adapt-architecture/SKILL.mdsource content
適架構
執行結構之蛻變——將系統架構由現形轉至目標形,於轉化中維持運作不輟。藉絞殺榕遷移、蛹化階段與介面保全,確保系統於蛻變間從未停運。
適用時機
- 形評估(見
)將系統判為 READYassess-form - 系統須演進架構以應新需,不容停機
- 由單體遷往微服務(或反之)
- 替換核心子系統而依賴系統續行
- 演進資料模型而保前向相容
- 任何架構變更須漸進而非一蹴
輸入
- 必要:當前形評估(自
或同等分析)assess-form - 必要:目標架構(系統應化為何)
- 必要:運作連續性要求(轉化中何者不可中斷)
- 選擇性:可用之轉化預算(時、人、算力)
- 選擇性:回退要求(可退至幾步之前?)
- 選擇性:並行運行時長(新舊同行多久)
步驟
步驟一:擬定轉化藍圖
謀劃由現形至目標形之蛻變路徑。
- 將轉化映為一序列之中間形:
- 現形 → 中間形一 → … → 目標形
- 各中間形須具運作可行性(能服務流量、通過測試)
- 中間形之維護不應較現形更艱
- 識別轉化縫隙:
- 何處可「切」現形以納入新架構?
- 自然縫:既有介面、模組界線、資料分割
- 人工縫:為切割而專設之介面(防腐層)
- 擇蛻變模式:
- 絞殺榕:新系統環繞舊系統而生,漸次取代
- 蛹化:舊系統包以新殼,內裡更替而外殼保持外部介面
- 出芽:新系統與舊並行而生,流量漸轉(群體出芽見
)scale-colony - 蛻變式遷移:依依賴順序分階段更替元件(葉先,根後)
- 設計介面保全層:
- 外部消費者不應感受中斷
- API 版本控制、向後相容契約、轉接器模式
- 此保全層為臨時鷹架,須謀其去除
Metamorphosis Patterns: ┌───────────────┬───────────────────────────────────────────────────┐ │ Strangler Fig │ New code intercepts routes one by one; │ │ │ old code handles everything else until replaced │ │ │ ┌──────────┐ │ │ │ │ Old ████ │ → │ Old ██ New ██ │ → │ New ████ │ │ │ │ └──────────┘ │ ├───────────────┼───────────────────────────────────────────────────┤ │ Chrysalis │ Wrap old system in new interface; replace │ │ │ internals while external shell stays stable │ │ │ ┌──────────┐ ┌──[new]───┐ ┌──[new]───┐ │ │ │ │ old core │ → │ old core │ → │ new core │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ ├───────────────┼───────────────────────────────────────────────────┤ │ Budding │ New system runs in parallel; traffic shifts │ │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │ │ Old │ │ New │ → │ Old │ │ New │ │ │ │ │ 100% │ │ 0% │ │ 0% │ │ 100% │ │ │ │ └──────┘ └──────┘ └──────┘ └──────┘ │ └───────────────┴───────────────────────────────────────────────────┘
預期: 一份轉化藍圖,呈現中間形、縫隙、所擇蛻變模式與介面保全策略。每步具體可測。
失敗時: 若無潔淨之縫,系統可能須先行溶解(見
dissolve-form)以造縫再轉。若中間形不具運作可行性,則轉化步太大——拆為更小增量。
步驟二:搭建鷹架
構築支援蛻變之臨時基礎設施。
- 建立防腐層:
- 新舊系統間之薄翻譯層
- 依遷移狀態將請求路由至適當系統(舊或新)
- 翻譯新舊之間之資料格式
- 此層為「繭」,護持轉化
- 設置並行運行基礎:
- 新舊系統須能同時部署
- 以特性旗標控制何系統處理何流量
- 比對機制驗證新舊產出等效
- 確立回退檢查點:
- 各中間形須驗證可退至前形
- 回退須較前進步驟更速
- 資料遷移須可逆(或於過渡期雙寫)
- 構築驗證套件:
- 自動化測試於各中間形驗證運作連續
- 效能基準偵測退化
- 資料完整性檢查捕捉遷移錯誤
預期: 鷹架基礎設施(防腐層、並行運行、回退、驗證)於任何轉化開始前已就位。鷹架本身已測試驗證。
失敗時: 若鷹架成本過高,化簡之:最小可行鷹架為一特性旗標加一回退程序。防腐層與並行運行增益安全,然小型轉化未必皆需。
步驟三:執行漸進切換
由舊形至新形漸次遷移功能。
- 為遷移排序元件:
- 從耦合最少、風險最低者起步(建立信心)
- 漸進至更關鍵、更耦合之元件
- 將最耦合/最關鍵者留至最後(屆時團隊已具經驗)
- 對每元件: a. 於防腐層後實作新版 b. 並行運行:新舊處理同一輸入 c. 比對輸出——應等效(或差異應為預期且有文件記載) d. 信心既足,將流量切至新版(特性旗標翻轉) e. 監控異常(切換後提高監控敏感度) f. 經穩定期後,下架此元件之舊版
- 全程維持持續交付:
- 每次切換皆為常規部署,非特殊事件
- 系統恆處已知、已測、運作之狀態
- 切換致問題時,回退至前態(仍運作)
預期: 功能逐元件遷移,每步皆有驗證。系統恆運作。每次切換為下次積累信心。
失敗時: 並行運行揭出歧異時,新實作有缺陷——切換前修復。切換致效能退化時,新元件可能須最佳化,或防腐層額外開銷過大。團隊於遷移途中失信時,暫停並穩定——半遷之系統處於已知態,遠勝倉促之全遷。
步驟四:管理蛹化階段
度過最脆弱之時期——系統介於兩形之間。
- 認蛹化之實:
- 遷移期間,系統一半舊一半新
- 此混合態本質上較任一純態更繁
- 繁複於遷移中點達峰,後遞減
- 蛹化紀律:
- 蛹化期不開新功能(僅轉化)
- 最少外部變更(凍非必要部署)
- 增監控與待命覆蓋
- 每日核對遷移進度與系統健康
- 蛹化中段評估:
- 至中點時評估:目標形仍為正鵠否?
- 是否有變動(市場、需求、團隊)影響目標?
- 轉化應續、停或改向?
- 護持蛹化:
- 始終保回退路徑暢通
- 詳載當前混合態(將來除錯者需之)
- 抗拒於遷移完成前「清理」臨時鷹架之誘惑
預期: 蛹化階段以審慎、限期之方式管理,輔以加強之紀律與監控。團隊明白臨時繁複乃安全轉化之代價。
失敗時: 若蛹化拖延過久,混合態淪為新常態——比新舊任一更壞。設限期。屆期則加速剩餘遷移,或接納混合態為「新形」並穩定之。
步驟五:完成蛻變並穩定
收束轉化,移除鷹架。
- 終局切換:
- 遷移末件元件至新形
- 對完整新系統執行完整驗證套件
- 於生產等效負載下作效能測試
- 移除鷹架:
- 下架防腐層(已無需)
- 移除遷移相關之特性旗標
- 清理並行運行基礎設施
- 歸檔(勿刪)舊系統碼以供參考
- 蛻變後穩定:
- 於新形運行 2-4 週並加強監控
- 處理現實條件下浮現之問題
- 更新文件以反映新架構
- 回顧:
- 轉化中何者順遂?
- 何者較預期更艱?
- 下次當如何不同?
- 更新團隊之轉化手冊
預期: 轉化已成。系統於新形運作。鷹架已撤。文件已更新。團隊已捕捉學習以資未來轉化。
失敗時: 切換後新形不穩時,保回退路徑並續穩定。若穩定逾預期,新架構可能存有設計問題——考量是否以針對性修補或對最棘手元件作部分回退為宜。
驗證
- 轉化藍圖展示可行之中間形
- 鷹架(防腐層、回退、驗證套件)於遷移開始前已就位
- 元件依風險由低至高遷移
- 並行運行於各步驟驗證等效
- 蛹化階段限期且行特性凍結紀律
- 轉化完成後一切鷹架皆已移除
- 蛻變後穩定期內無關鍵問題
- 回顧捕捉學習
常見陷阱
- 一蹴遷移:意圖一次轉化全部。此舉棄漸進切換之安全,使影響面最大。務必漸進遷移
- 永久鷹架:未除之防腐層與特性旗標化為技術債。將鷹架移除謀於轉化之中,勿為事後補
- 蛹化之否認:將混合態視為常態,致於不穩之基礎上開發新功能。承認蛹化階段並貫徹其紀律
- 目標固執:執著目標架構至忽視更佳替代之徵兆。蛹化中段評估正為此而設
- 轉化疲勞:長遷耗竭團隊。每步轉化保持小至日計而非週計。慶里程以維動能
相關技能
— 先行評估,判定系統是否堪轉assess-form
— 對過剛而難直接轉化之系統,溶解可造此處所需之縫dissolve-form
— 轉化致損時之復原技能repair-damage
— 表層適應,可能毋需深層架構變更即足shift-camouflage
— 蜂群協調指引分散系統之轉化排程coordinate-swarm
— 成長壓力為架構適應之常見觸因scale-colony
— GitOps 為漸進切換提供部署基礎implement-gitops-workflow
— 互補之審查技能,用於評估目標架構review-software-architecture