"Evolution"
- 10.1 服務拆分與邊界判讀
整理 monolith vs microservice 取捨、服務邊界判讀訊號、拆分時機與回退路徑
- 10.2 服務拆分執行 Runbook(Strangler Fig / 雙寫期 / 切流 / 回退)
10.1 決定該拆之後、實際怎麼動手拆 — Strangler Fig pattern、雙寫期管理、切流策略、回退條件設計
- 10.3 託管形態遷出:資產線盤點與並行期執行
0.21 升級自建 tripwire 觸發後的執行劇本 — 把遷出拆成資料、身分、流量、整合各自的可攜性與斷點、設計舊平台與新系統的並行期與回切窗口、用部分遷出作為中繼形態
- 10.4 服務終止的範圍:外部引用的種類與持有者
服務本身要結束時,盤點它發出去、存在別人手上的外部引用:網址、寫在別人程式或韌體裡的端點、被嵌入的程式碼網址、名稱與綁在網域上的身分;持有者依聯絡得到的程度分成直接客戶、間接使用者與第三方持有者;引用在服務結束後的結局:失效或易手
- 10.5 退場能力的設計前置:端點間接層、本地運作模式與引用的命名空間
服務上線時就決定、越接近關閉越難補上的設計:客戶端讀取服務位置的間接層、沒有雲端時裝置還能做什麼、外部引用落在提供者還是客戶的命名空間、使用紀錄與可交出的資料格式,以及依賴第三方契約與授權而無法移交的功能
- 規模演進
可插拔 Storage Backend 架構 — SQLite 預設、PostgreSQL 觸發切換、時間序列 DB 長期演進
- 10.6 命名空間與網域的處置:續約、名稱保留與回收、懸空 DNS
服務結束時網域與名稱的去向,以及它們決定外部引用是失效還是易手:網域的續約與出售、交給中立方的技術控制、套件與雲端資源名稱釋出後被重新申請與佔位、雲端資源刪除後的懸空 DNS 與子網域接管,以及綁在可過期網域上的帳號身分
- 10.7 分階段退場:停止新建、唯讀、靜態封存、關閉與公告期
服務結束時把一次全部關閉拆成幾個階段:停止新建、唯讀、靜態封存與關閉各保留什麼、對哪一類持有者有效、維運成本降到哪裡;依使用紀錄決定保留範圍;推動客戶遷移的手段;以及公告期長度、通知管道與補償的安排
- 10.8 移交:資料匯出、開源與交給社群或封存機構
服務結束時把讓外部引用繼續運作所需的資料、程式碼與網域交出去:交給直接客戶的資料匯出、開源程式碼能不能獨立運作、社群接手需要提供者事先留下什麼、封存機構的兩種取得方式(業者合作交出與外部爬取),以及交不出去的部分