| name | deployment-procedures |
| description | 生產環境部署原則與決策。安全部署工作流程、回滾策略與驗證。教你思考而非腳本。 |
| allowed-tools | Read, Glob, Grep, Bash |
部署程序
安全生產發布的部署原則與決策。
學習思考方式,而非記憶腳本。
⚠️ 如何使用此技能
此技能教導部署原則,而非可複製的 bash 腳本。
- 每次部署都是獨特的
- 理解每個步驟背後的原因
- 根據你的平台調整程序
1. 平台選擇
決策樹
你要部署什麼?
│
├── 靜態網站 / JAMstack
│ └── Vercel、Netlify、Cloudflare Pages
│
├── 簡單 Web 應用
│ ├── 託管 → Railway、Render、Fly.io
│ └── 控制 → VPS + PM2/Docker
│
├── 微服務
│ └── 容器編排
│
└── 無伺服器
└── 邊緣函式、Lambda
每個平台有不同的程序
| 平台 | 部署方式 |
|---|
| Vercel/Netlify | Git push、自動部署 |
| Railway/Render | Git push 或 CLI |
| VPS + PM2 | SSH + 手動步驟 |
| Docker | 映像推送 + 編排 |
| Kubernetes | kubectl apply |
2. 部署前原則
4 大驗證類別
| 類別 | 檢查內容 |
|---|
| 程式碼品質 | 測試通過、Lint 乾淨、已審查 |
| 建構 | 生產建構可運作、無警告 |
| 環境 | 環境變數已設定、密鑰有效 |
| 安全 | 備份完成、回滾計畫就緒 |
部署前檢查清單
3. 部署工作流程原則
5 階段流程
1. 準備
└── 驗證程式碼、建構、環境變數
2. 備份
└── 在變更前儲存當前狀態
3. 部署
└── 在監控打開的情況下執行
4. 驗證
└── 健康檢查、日誌、關鍵流程
5. 確認或回滾
└── 一切正常?確認。有問題?回滾。
階段原則
| 階段 | 原則 |
|---|
| 準備 | 永遠不部署未測試的程式碼 |
| 備份 | 沒有備份就無法回滾 |
| 部署 | 看著它進行,不要走開 |
| 驗證 | 信任但要驗證 |
| 確認 | 準備好回滾觸發機制 |
4. 部署後驗證
驗證內容
| 檢查 | 原因 |
|---|
| 健康端點 | 服務正在運行 |
| 錯誤日誌 | 沒有新錯誤 |
| 關鍵使用者流程 | 重要功能可運作 |
| 效能 | 回應時間可接受 |
驗證時間窗口
- 前 5 分鐘:主動監控
- 15 分鐘:確認穩定
- 1 小時:最終驗證
- 隔天:審查指標
5. 回滾原則
何時回滾
| 症狀 | 動作 |
|---|
| 服務停機 | 立即回滾 |
| 關鍵錯誤 | 回滾 |
| 效能 >50% 降低 | 考慮回滾 |
| 小問題 | 如果能快速修復則向前修復 |
按平台的回滾策略
| 平台 | 回滾方式 |
|---|
| Vercel/Netlify | 重新部署上個提交 |
| Railway/Render | 在控制面板回滾 |
| VPS + PM2 | 還原備份、重啟 |
| Docker | 使用上個映像標籤 |
| K8s | kubectl rollout undo |
回滾原則
- 速度優先於完美:先回滾,之後再除錯
- 不要累積錯誤:一次回滾,而非多次變更
- 溝通:告訴團隊發生了什麼
- 事後分析:穩定後了解原因
6. 零停機部署
策略
| 策略 | 運作方式 |
|---|
| 滾動式 | 逐一替換實例 |
| 藍綠 | 在環境間切換流量 |
| 金絲雀 | 漸進式流量轉移 |
選擇原則
| 情境 | 策略 |
|---|
| 標準發布 | 滾動式 |
| 高風險變更 | 藍綠(易回滾) |
| 需要驗證 | 金絲雀(用真實流量測試) |
7. 緊急程序
服務停機優先順序
- 評估:症狀是什麼?
- 快速修復:如果不清楚就重啟
- 回滾:如果重啟沒幫助
- 調查:穩定後再查
調查順序
| 檢查 | 常見問題 |
|---|
| 日誌 | 錯誤、例外 |
| 資源 | 磁碟滿、記憶體 |
| 網路 | DNS、防火牆 |
| 依賴 | 資料庫、API |
8. 反模式
| ❌ 不要 | ✅ 要 |
|---|
| 週五部署 | 週初部署 |
| 匆忙部署 | 遵循流程 |
| 跳過測試環境 | 永遠先測試 |
| 不備份就部署 | 部署前備份 |
| 部署後就走開 | 監控 15+ 分鐘 |
| 一次多個變更 | 一次一個變更 |
9. 決策檢查清單
部署前:
10. 最佳實踐
- 小而頻繁的部署優於大發布
- 功能旗標用於高風險變更
- 自動化重複步驟
- 記錄每次部署
- 審查問題後哪裡出了錯
- 在需要前測試回滾
記住: 每次部署都是風險。透過準備而非速度來降低風險。