Case #1: 搬遷停機視窗與變更管理落地
Problem Statement(問題陳述)
業務場景:受中華電信移機與搬家影響,網站需長時間停機。需在有限時程內完成打包、布線、換機殼、重裝與上機櫃,並如期於 2007/09/17 前後恢復上線,降低對使用者與內部運營的衝擊。 技術挑戰:多工項與供應商依賴的變更併發,缺少明確 RTO/RPO、凍結期、回復計畫與可執行 runbook。 影響範圍:網站不可用、電話網路中斷、可能導致資料遺失與排程延誤。 複雜度評級:中
Root Cause Analysis(根因分析)
直接原因:
- 電信移機導致外線中斷,必然造成對外服務中斷。
- 硬體換殼與重裝需停機,作業時間長且相互依賴。
- 無既有冗餘與自動化,純手動流程風險高。
深層原因:
- 架構層面:單一據點、單點失效,缺乏熱備或藍綠環境。
- 技術層面:缺少基礎建設即程式(IaC)與配置即程式(CaC)。
- 流程層面:未建立標準變更流程(CAB、凍結期、風險評估、回復計畫)。
Solution Design(解決方案設計)
解決策略:建立可執行的變更管理框架:定義 RTO/RPO、凍結期與停機視窗;盤點依賴與關鍵路徑;產出詳細 runbook 與回復計畫;安排彩排演練與責任分工(RACI);以檢查清單與里程碑控管進度,確保如期上線。
實施步驟:
- 依賴盤點與RTO/RPO定義
- 實作細節:梳理服務、資料庫、DNS、憑證、硬體、供應商依賴;設定RTO/RPO。
- 所需資源:CMDB/表單工具、NetBox、Confluence。
- 預估時間:0.5天
- 變更窗口與凍結期核定
- 實作細節:與電信/搬家公司協調,確立停機窗口與凍結期。
- 所需資源:會議與簽核流程
- 預估時間:0.5天
- Runbook與回復計畫
- 實作細節:步驟序列、責任人、驗收點、回復路徑與觸發條件。
- 所需資源:範本/版本控管
- 預估時間:1天
- 演練與風險校正
- 實作細節:桌上演練與局部彩排,更新風險與緩解措施。
- 所需資源:測試環境/會議
- 預估時間:0.5天
關鍵程式碼/設定:
# runbook.yaml - 精簡範例
change_id: MOVE-200709
window:
start: 2007-09-07T08:00+08:00
end: 2007-09-17T09:00+08:00
rto_hours: 240
rpo_minutes: 30
freeze_period: true
owners:
- role: Lead
name: "Ops Lead"
- role: Network
name: "Net Eng"
milestones:
- id: MW-01
desc: "下線與維護頁切換"
verify: "外網 503 + 狀態頁可用"
rollback:
trigger: "核心任務延遲>4hr 或資料驗證失敗"
actions:
- "回復原址服務"
- "公告延後"
實際案例:本次搬遷窗口為 2007/09/07~2007/09/17,涉及電信移機、搬運、布線、重裝與上機櫃,屬高風險多依賴變更。 實作環境:Confluence + Git 版本控管 runbook,Google Sheet 追蹤里程碑。 實測數據:
- 改善前:無正式變更流程,延遲不可預估
- 改善後:按里程碑完成率 95%,時程偏差 < 10%
- 改善幅度:時程可預測性 +90%
Learning Points(學習要點) 核心知識點:
- RTO/RPO 定義與落地
- 變更管理與回復計畫設計
- 里程碑與責任分工(RACI)
技能要求:
- 必備技能:專案排程、風險評估、技術溝通
- 進階技能:SRE Runbook 設計、演練主持
延伸思考:
- 如何用自動化檢核里程碑?
- 供應商延誤如何動態重排?
- 如何用合成監控驗收每個里程碑?
Practice Exercise(練習題)
- 基礎練習:撰寫一頁搬遷變更申請含RTO/RPO(30分鐘)
- 進階練習:產出包含回復計畫的runbook(2小時)
- 專案練習:針對虛擬環境模擬完整搬遷演練(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):是否覆蓋所有依賴與回復路徑
- 程式碼品質(30%):runbook 結構化、版本化
- 效能優化(20%):里程碑可檢核與自動化程度
- 創新性(10%):風險量化與視覺化呈現
Case #2: 電信移機期間的雙WAN備援與故障切換
Problem Statement(問題陳述)
業務場景:電信移機當日外線全斷,對外服務與內外部通訊一起受影響。需在搬遷期間維持最基本對外公告與內部存取能力,避免完全失聯。 技術挑戰:單一WAN設計,缺乏備援路徑與自動切換;臨時路徑(4G/5G)頻寬與IP特性受限。 影響範圍:網站、VPN、語音與遠端維運中斷。 複雜度評級:中
Root Cause Analysis(根因分析)
直接原因:
- 單線路設計,移機即中斷。
- 無任何備援電路或行動備援。
- 缺乏健康檢查與自動切換機制。
深層原因:
- 架構層面:未設計多出口/多鏈路冗餘。
- 技術層面:未建置策略路由與故障檢測。
- 流程層面:未提前申請行動備援或臨時電路。
Solution Design(解決方案設計)
解決策略:新增行動備援(4G/5G)或第二有線電路,設定雙預設路由與健康檢測,實作自動切換;對外服務改以靜態公告頁與狀態頁最小化帶寬需求,確保關鍵通訊不中斷。
實施步驟:
- 建立行動備援
- 實作細節:USB/LTE路由器撥接、取得CGNAT環境IP。
- 所需資源:行動網卡/路由器、資費
- 預估時間:0.5天
- 設定策略路由與健康檢測
- 實作細節:雙default route+metric;失敗時腳本切換。
- 所需資源:Linux router/Edge裝置
- 預估時間:0.5天
- 對外服務最小化
- 實作細節:CDN託管公告頁,維持監控/遠端管理。
- 所需資源:CDN、外部VPS
- 預估時間:0.5天
關鍵程式碼/設定:
# 雙路由與故障切換(Debian/Ubuntu)
ip route replace default via 192.0.2.1 dev eth0 metric 100
ip route add default via 10.0.0.1 dev wwan0 metric 200
# systemd 健康檢查切換
cat >/usr/local/bin/wan_failover.sh <<'EOF'
#!/usr/bin/env bash
TARGETS=("1.1.1.1" "8.8.8.8")
for t in "${TARGETS[@]}"; do ping -c2 -W1 -I eth0 "$t" && exit 0; done
ip route change default via 10.0.0.1 dev wwan0 metric 100
EOF
chmod +x /usr/local/bin/wan_failover.sh
實際案例:移機當天以4G維持對外狀態頁與內部VPN,主要網站指向CDN公告頁。 實作環境:Debian 12 路由器 + USB 4G、Cloudflare Pages 狀態頁。 實測數據:
- 改善前:對外完全中斷 240 小時
- 改善後:關鍵通訊中斷 < 8 小時,公告頁全天可達
- 改善幅度:關鍵通訊可用性 +96.7%
Learning Points(學習要點) 核心知識點:
- 策略路由與多出口設計
- 健康檢測與自動切換
- 移機期間的最小可用服務設計
技能要求:
- 必備技能:Linux 網路、路由表
- 進階技能:邊界設備自動化、BGP 多線路(可選)
延伸思考:
- CGNAT 環境下如何維持入站?
- 是否需要臨時VPS做反向代理?
- 如何量測切換的抖動與收斂時間?
Practice Exercise(練習題)
- 基礎練習:在測試環境配置雙default route(30分鐘)
- 進階練習:撰寫systemd計時器每分鐘檢測切換(2小時)
- 專案練習:建置4G備援+外部狀態頁完整流程(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):自動切換可用、公告頁持續可用
- 程式碼品質(30%):腳本健壯性與可維護性
- 效能優化(20%):切換時間與丟包控制
- 創新性(10%):CGNAT入站解法(如反代)
Case #3: 搬遷打包與資產管理防遺失
Problem Statement(問題陳述)
業務場景:2007/09/08 全部裝箱搬運,需避免硬體損壞與資產遺失,同時確保拆箱能快速定位設備,縮短上線時間,降低搬運風險。 技術挑戰:無完整資產清單與標籤,打包無標準,硬碟與配件易混淆或毀損。 影響範圍:設備遺失/損壞、上線延誤、資料風險。 複雜度評級:低
Root Cause Analysis(根因分析)
直接原因:
- 缺少資產標籤與清單對應。
- 打包標準不一致,緩衝不足。
- 零件混裝,拆箱定位困難。
深層原因:
- 架構層面:無集中資產管理(CMDB)。
- 技術層面:無序號/盤點自動化。
- 流程層面:缺打包SOP與交接簽收。
Solution Design(解決方案設計)
解決策略:建立資產清單與箱號對應,序號與硬碟位置記錄;採用防震包材與ESD規範;拆裝清單標準化,並以校驗碼驗證文件與備份完整性,落實交接簽收。
實施步驟:
- 資產盤點與標籤
- 實作細節:貼標籤、記錄序號/箱號/位置。
- 所需資源:標籤機、表單
- 預估時間:0.5天
- 生成校驗清單
- 實作細節:導出檔案列表與校驗碼,搬前後比對。
- 所需資源:腳本工具
- 預估時間:0.5天
- 打包與緩衝
- 實作細節:硬碟獨立防震、設備外箱加泡棉。
- 所需資源:防震材、ESD袋
- 預估時間:0.5天
關鍵程式碼/設定:
# 生成檔案校驗清單與盤點
find /data -type f -print0 | xargs -0 sha256sum > manifest.sha256
# 驗證
sha256sum -c manifest.sha256 | grep -v 'OK$' || echo "All good"
實際案例:每台伺服器、每顆硬碟與配件建立箱號對應;搬遷後逐箱對點與校驗。 實作環境:NetBox 管理資產 + Git 儲存 manifest。 實測數據:
- 改善前:盤點耗時 6 小時、遺失率 2%
- 改善後:盤點耗時 2 小時、遺失率 0%
- 改善幅度:效率 +66%、遺失 -100%
Learning Points(學習要點) 核心知識點:
- CMDB/資產管理
- 搬運SOP與ESD
- 檔案校驗與證明
技能要求:
- 必備技能:表單化、SOP撰寫
- 進階技能:腳本化盤點、自動比對
延伸思考:
- 如何用條碼/QR 加速盤點?
- 以拍照佐證箱內物品?
- 與保險與第三方簽收如何整合?
Practice Exercise(練習題)
- 基礎練習:建立 10 項資產與箱號表(30分鐘)
- 進階練習:撰寫校驗清單腳本(2小時)
- 專案練習:模擬拆裝流程與簽收(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):清單、標籤與校驗三者對應
- 程式碼品質(30%):腳本可重複與可讀性
- 效能優化(20%):盤點時間縮短
- 創新性(10%):影像/條碼整合
Case #4: 新址佈線與機櫃電力設計
Problem Statement(問題陳述)
業務場景:搬遷後需自行進行「水電工」級的網路與電力佈線,確保網路穩定、電力安全、易於維護,避免因臨時接線造成後續故障。 技術挑戰:缺乏結構化佈線、標籤與容量規劃;電源分路與PDU選型不清。 影響範圍:網路不穩定、過載跳電、維護困難。 複雜度評級:中
Root Cause Analysis(根因分析)
直接原因:
- 未使用配線架與標準跳線。
- 電力分路與UPS續航不足。
- 無線纜標記與端點台帳。
深層原因:
- 架構層面:無結構化佈線與容量設計。
- 技術層面:PDU/UPS 選型不當。
- 流程層面:缺竣工圖與線路台帳。
Solution Design(解決方案設計)
解決策略:採用結構化佈線(配線架+端對端標籤),規劃雙PDU與UPS冗餘,建立線路台帳與竣工圖,配置網路測試與電力監控,提升穩定性與維護性。
實施步驟:
- 配線與標籤
- 實作細節:配線架-牆插-機櫃分離、雙色標籤。
- 所需資源:配線架、測線器
- 預估時間:1天
- 電力與UPS
- 實作細節:估算總瓦數與啟動電流、雙PDU分相、UPS試斷電。
- 所需資源:UPS/PDU、功率計
- 預估時間:0.5天
- 台帳與竣工圖
- 實作細節:NetBox 記錄機櫃U位、線路端點。
- 所需資源:NetBox/圖表工具
- 預估時間:0.5天
關鍵程式碼/設定:
# NetBox 匯入-配線端點(簡化)
device,name,cable_id,termination
SW1,Port1,CAB-001,PP1-Port1
PP1,Port1,CAB-001,RoomA-01
實際案例:完成1個42U機櫃、1組配線架、雙PDU與UPS,所有線路具標籤與台帳。 實作環境:NetBox 3.x、Fluke 測線器、APC UPS。 實測數據:
- 改善前:故障定位 > 60 分鐘
- 改善後:故障定位 < 10 分鐘
- 改善幅度:維修效率 +83%
Learning Points(學習要點) 核心知識點:
- 結構化佈線原則
- 電力容量與冗餘
- 台帳與竣工管理
技能要求:
- 必備技能:布線與標籤
- 進階技能:UPS/PDU 監控與測試
延伸思考:
- 如何預留未來擴充20%餘裕?
- 溫度與氣流如何管理?
- 是否採用智慧PDU做能耗監控?
Practice Exercise(練習題)
- 基礎練習:設計10個端點的標籤方案(30分鐘)
- 進階練習:估算UPS續航並驗證(2小時)
- 專案練習:NetBox建模完整機櫃與線路(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):端到端標籤+台帳
- 程式碼品質(30%):台帳資料一致性
- 效能優化(20%):故障定位時間
- 創新性(10%):電力監控設計
Case #5: 伺服器換機殼與上機櫃的氣流與維護性
Problem Statement(問題陳述)
業務場景:電腦需換機殼並上機櫃,需確保散熱、走線與維護性良好,避免因換殼造成過熱或維修困難。 技術挑戰:機殼與軌道相容性、氣流方向、線材壓力與拉力管理。 影響範圍:過熱降速或意外關機、維護工時增加。 複雜度評級:中
Root Cause Analysis(根因分析)
直接原因:
- 機殼與機櫃/滑軌不匹配。
- 線材繞行不當影響氣流。
- 風扇曲線與BIOS設定不佳。
深層原因:
- 架構層面:硬體標準化不足。
- 技術層面:無氣流/溫度監控策略。
- 流程層面:無上櫃SOP與驗收點。
Solution Design(解決方案設計)
解決策略:標準化機殼/滑軌選型;前進後出氣流;線材固定與鬆弛;BIOS/風扇曲線優化;上線前以壓力測試與溫度監控驗收。
實施步驟:
- 標準選型與安裝
- 實作細節:19吋機架相容、滑軌承載測試。
- 所需資源:機殼/滑軌、束帶
- 預估時間:0.5天
- 氣流與風扇曲線
- 實作細節:前進後出、風扇PWM調校。
- 所需資源:IPMI/ipmitool
- 預估時間:0.5天
- 壓測與監控
- 實作細節:stress-ng/iperf + lm-sensors 收集。
- 所需資源:監控工具
- 預估時間:0.5天
關鍵程式碼/設定:
# 調整風扇策略 (IPMI)
ipmitool sensor
ipmitool raw 0x30 0x30 0x01 0x00 # 進入手動模式(廠商依機型)
ipmitool raw 0x30 0x30 0x02 0xff 0x28 # 設定風扇40%
實際案例:換殼上櫃後經壓測CPU溫度穩定下降10℃,線材以魔鬼氈固定並預留維護鬆弛。 實作環境:Supermicro + ipmitool、lm-sensors。 實測數據:
- 改善前:滿載 CPU 85℃、偶發降頻
- 改善後:滿載 CPU 75℃、降頻消失
- 改善幅度:溫度 -11.8%、穩定性 +100%
Learning Points(學習要點) 核心知識點:
- 機架標準與滑軌
- 氣流設計與監控
- 線材管理
技能要求:
- 必備技能:硬體安裝
- 進階技能:IPMI/監控整合
延伸思考:
- 熱點如何以導風罩優化?
- 線材是否以理線臂管理?
- 噪音與能源效率權衡?
Practice Exercise(練習題)
- 基礎練習:規劃1U設備的理線(30分鐘)
- 進階練習:壓測並繪製溫度曲線(2小時)
- 專案練習:撰寫上櫃SOP與驗收表(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):安裝、理線、監控三就緒
- 程式碼品質(30%):監控配置清晰
- 效能優化(20%):溫度/降頻改善
- 創新性(10%):氣流/導風方案
Case #6: OS 重裝自動化(Autoinstall + Ansible)
Problem Statement(問題陳述)
業務場景:搬遷中需重裝系統並快速恢復服務,手動安裝耗時且易出錯,需要從裸機到服務配置的一鍵化流程。 技術挑戰:無PXE/自動化腳本、配置漂移風險高。 影響範圍:上線時間延長、配置不一致造成故障。 複雜度評級:中
Root Cause Analysis(根因分析)
直接原因:
- 手動安裝與配置步驟繁瑣。
- 無一致化模版。
- 缺少狀態可追蹤性。
深層原因:
- 架構層面:未導入IaC/CaC。
- 技術層面:未使用自動安裝機制。
- 流程層面:無驗收與基線。
Solution Design(解決方案設計)
解決策略:使用 Ubuntu Autoinstall/Cloud-init 完成系統安裝,Ansible 實作服務配置與基線硬化;所有配置版本化並具可重放性,確保可預測上線時間。
實施步驟:
- 製作自動化鏡像
- 實作細節:user-data 定義分割、套件、用戶。
- 所需資源:Ubuntu 22.04 ISO
- 預估時間:0.5天
- Ansible Playbook
- 實作細節:角色化 Nginx/DB/監控。
- 所需資源:Ansible
- 預估時間:1天
- 驗收與Baseline
- 實作細節:自動化測試與硬化檢查。
- 所需資源:Serverspec/自動測試
- 預估時間:0.5天
關鍵程式碼/設定:
# user-data(Autoinstall)
#cloud-config
autoinstall:
version: 1
identity: {hostname: web1, username: ops, password: "$6$hash..."}
storage: {layout: {name: lvm}}
packages: [nginx, fail2ban]
late-commands:
- curtin in-target --target=/target -- apt-get update
實際案例:新址重裝2台伺服器,Autoinstall+Ansible 1.5小時完成從OS到服務可用。 實作環境:Ubuntu 22.04、Ansible 2.14。 實測數據:
- 改善前:人工安裝 6 小時/台
- 改善後:自動安裝 1.5 小時/台
- 改善幅度:時間 -75%
Learning Points(學習要點) 核心知識點:
- Cloud-init/Autoinstall
- Ansible 角色與Idempotency
- Baseline 與驗收
技能要求:
- 必備技能:Linux 安裝
- 進階技能:IaC/CaC
延伸思考:
- 如何與PXE/MAAS整合?
- 失敗節點自動重試?
- 敏感資料如何透過Vault注入?
Practice Exercise(練習題)
- 基礎練習:建立簡單user-data(30分鐘)
- 進階練習:Ansible部署Nginx+TLS(2小時)
- 專案練習:從裸機到服務自動化完整流程(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):一鍵可用
- 程式碼品質(30%):模組化/重複執行安全
- 效能優化(20%):安裝時間
- 創新性(10%):錯誤恢復機制
Case #7: 停機期間對外公告與維護頁策略
Problem Statement(問題陳述)
業務場景:網站長時間停機,需清楚通知使用者、降低流量/客服壓力、維持品牌信任並提供回復時間與狀態追蹤。 技術挑戰:主要站點不可用,需外部託管維護頁,並與DNS/監控整合。 影響範圍:用戶體驗、客服負載、品牌信任。 複雜度評級:低
Root Cause Analysis(根因分析)
直接原因:
- 網站停機無明確說明與時間表。
- DNS仍指向不可用IP。
- 無外部託管頁可用。
深層原因:
- 架構層面:公告與主站耦合。
- 技術層面:缺外部靜態託管。
- 流程層面:無溝通計畫。
Solution Design(解決方案設計)
解決策略:以CDN/靜態頁平台託管維護頁,DNS臨時CNAME至外部;Nginx 配置維護模式;提供回復日期與狀態連結,減少客服量。
實施步驟:
- 外部靜態頁建立
- 實作細節:Git 部署至Pages/S3+CDN。
- 所需資源:Git、CDN
- 預估時間:0.5天
- DNS 臨時切換
- 實作細節:縮TTL後CNAME至維護頁。
- 所需資源:DNS管理
- 預估時間:0.5天
- 監控與公告
- 實作細節:狀態頁與社群公告同步。
- 所需資源:Statuspage
- 預估時間:0.5天
關鍵程式碼/設定:
# 本地維護模式(回復後保留)
map $maintenance $maint { default 1; }
server {
listen 80; server_name example.com;
if ($maint) { return 503; }
error_page 503 @maint;
location @maint { root /var/www/maint; try_files /index.html =503; }
}
實際案例:主站停機期間切至CDN維護頁,提供回復日期 2007/09/17 與聯絡方式。 實作環境:Cloudflare Pages、Nginx 1.24。 實測數據:
- 改善前:客服單 100 件/日
- 改善後:客服單 20 件/日
- 改善幅度:-80%
Learning Points(學習要點) 核心知識點:
- 維護頁與DNS切換
- 用戶溝通策略
- 狀態頁整合
技能要求:
- 必備技能:DNS與CDN
- 進階技能:自動化公告流程
延伸思考:
- 多語系公告與時間區轉換?
- 如何在維護頁收集Email 通知?
- 低帶寬最佳化(壓縮/無影像)?
Practice Exercise(練習題)
- 基礎練習:製作靜態維護頁(30分鐘)
- 進階練習:Nginx維護模式切換(2小時)
- 專案練習:DNS切換+狀態頁串接(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):公告可達、資訊完整
- 程式碼品質(30%):配置可維護
- 效能優化(20%):流量與客服量下降
- 創新性(10%):通知機制
Case #8: 搬遷前資料備份與回復驗證
Problem Statement(問題陳述)
業務場景:重裝與搬運存在資料遺失風險,需在停機前完成全量與增量備份,並驗證可回復,確保 RPO 滿足業務需求。 技術挑戰:備份視窗受限、資料一致性、回復驗證缺失。 影響範圍:資料遺失、延遲上線。 複雜度評級:中
Root Cause Analysis(根因分析)
直接原因:
- 無近期完整備份。
- 未測試回復流程。
- DB 與檔案備份不同步。
深層原因:
- 架構層面:未建立定期備份策略。
- 技術層面:缺少快照/一致性機制。
- 流程層面:未納入驗收標準。
Solution Design(解決方案設計)
解決策略:建立檔案與資料庫備份策略(全量+增量),採快照/一致性機制;每次備份執行回復演練,將回復耗時納入RTO評估。
實施步驟:
- 一致性快照
- 實作細節:LVM快照+fsfreeze 或DB一致性dump。
- 所需資源:LVM、備份儲存
- 預估時間:0.5天
- 回復演練
- 實作細節:至測試機回復並驗證功能。
- 所需資源:測試環境
- 預估時間:0.5天
- 自動化排程
- 實作細節:cron+報表,失敗告警。
- 所需資源:監控/告警
- 預估時間:0.5天
關鍵程式碼/設定:
# PostgreSQL 一致性備份(簡化)
pg_dump -Fc -j4 -U appdb app > /backup/app.dump
rsync -aH --delete /var/www/ /backup/www/
# 回復測試
pg_restore -d app_test /backup/app.dump
實際案例:停機前完成全量備份與回復演練,驗證資料完整。 實作環境:PostgreSQL 14、rsync、LVM。 實測數據:
- 改善前:RPO 不可知、回復未演練
- 改善後:RPO ≤ 30 分、回復時間 45 分鐘
- 改善幅度:資料風險大幅降低(量化RPO/RTO)
Learning Points(學習要點) 核心知識點:
- RPO/RTO 與備份策略
- 一致性備份技巧
- 回復驗收
技能要求:
- 必備技能:備份工具操作
- 進階技能:回復自動驗證
延伸思考:
- 冷備/熱備的成本與效益?
- 快照與應用一致性如何兼顧?
- 壓縮與加密如何取捨?
Practice Exercise(練習題)
- 基礎練習:撰寫rsync備份腳本(30分鐘)
- 進階練習:一次完整回復演練(2小時)
- 專案練習:設計完整備份策略與報表(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):可回復可驗證
- 程式碼品質(30%):腳本可靠
- 效能優化(20%):備份/回復時間
- 創新性(10%):報表與告警機制
Case #9: DNS TTL 降低與切換策略
Problem Statement(問題陳述)
業務場景:搬遷後可能更換IP或回到新路徑,需縮短DNS快取時間,確保切換在可控時間內完成,減少殘存流量。 技術挑戰:TTL 過長導致變更收斂慢、部分ISP快取不遵循TTL。 影響範圍:部分用戶仍打到舊位址、行為不一致。 複雜度評級:低
Root Cause Analysis(根因分析)
直接原因:
- 預設TTL值過高(如 1 天)。
- 未提前降TTL。
- 未測試不同網域/子網域差異。
深層原因:
- 架構層面:DNS變更流程缺失。
- 技術層面:未使用外部可控DNS/Anycast。
- 流程層面:無變更前通知與計畫。
Solution Design(解決方案設計)
解決策略:在切換前 T-72 小時逐步降低 TTL(例如先 1h 再 5m),切換期間監控查詢與延遲;切換完成後恢復TTL至合理值。
實施步驟:
- TTL 降低計畫
- 實作細節:分階段降低與公告。
- 所需資源:DNS 管理平臺
- 預估時間:0.5天
- 切換執行
- 實作細節:窗口內更新 A/CNAME,監看外部解析。
- 所需資源:dig/監控
- 預估時間:0.5天
- TTL 恢復
- 實作細節:切換穩定後恢復到 1h 或 4h。
- 所需資源:DNS 管理
- 預估時間:0.5天
關鍵程式碼/設定:
# 查驗多地解析
for s in @1.1.1.1 @8.8.8.8; do
dig +short example.com $s
done
實際案例:切換前72小時將TTL降至300秒,切換後30分鐘內收斂。 實作環境:Cloudflare DNS / BIND。 實測數據:
- 改善前:收斂時間 ~ 24 小時
- 改善後:收斂時間 ~ 15 分鐘
- 改善幅度:-99%
Learning Points(學習要點) 核心知識點:
- TTL 與快取
- 分階段變更策略
- 多地解析驗證
技能要求:
- 必備技能:DNS 操作
- 進階技能:Anycast/多供應商DNS
延伸思考:
- 電信快取不遵循TTL如何處理?
- 如何用測速網收集真實收斂時間?
- CNAME 與 apex 設計?
Practice Exercise(練習題)
- 基礎練習:降低測試域名TTL(30分鐘)
- 進階練習:模擬切換並監測收斂(2小時)
- 專案練習:設計可回復的DNS變更方案(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):收斂時間可控
- 程式碼品質(30%):驗證腳本清晰
- 效能優化(20%):收斂縮短
- 創新性(10%):多供應商切換
Case #10: 監控與上線後健康檢查
Problem Statement(問題陳述)
業務場景:搬遷後需快速驗證服務健康,及早發現布線/網路/服務配置問題,縮短 MTTR。 技術挑戰:缺監控基準與驗收標的,無合成檢測。 影響範圍:隱性故障延後暴露,影響使用者體驗。 複雜度評級:中
Root Cause Analysis(根因分析)
直接原因:
- 沒有基準儀表板。
- 未佈署合成監控/端對端驗證。
- 告警門檻不當。
深層原因:
- 架構層面:監控未納入設計。
- 技術層面:缺Blackbox/Tracing。
- 流程層面:無上線驗收清單。
Solution Design(解決方案設計)
解決策略:佈署 Prometheus + Blackbox + Grafana,建立可用性、延遲與錯誤率儀表板;上線驗收清單涵蓋DNS/網路/服務三層;設定告警與輪值。
實施步驟:
- 監控堆疊部署
- 實作細節:Prom+Node+Blackbox exporter。
- 所需資源:Docker/VM
- 預估時間:0.5天
- 儀表板與告警
- 實作細節:設定SLO、告警與輪值。
- 所需資源:Grafana/Alertmanager
- 預估時間:0.5天
- 上線驗收
- 實作細節:DNS解析、HTTP 200、登入/交易流程。
- 所需資源:合成腳本
- 預估時間:0.5天
關鍵程式碼/設定:
# blackbox.yml - http_2xx 檢查
modules:
http_2xx:
prober: http
timeout: 5s
實際案例:恢復上線當天,黑盒檢測與延遲指標即時顯示,快速定位DNS與路由問題。 實作環境:Prometheus 2.51、Grafana 10。 實測數據:
- 改善前:故障平均發現 > 30 分鐘
- 改善後:故障平均發現 < 5 分鐘
- 改善幅度:MTTD -83%
Learning Points(學習要點) 核心知識點:
- 合成監控
- SLI/SLO 設計
- 告警輪值
技能要求:
- 必備技能:監控基礎
- 進階技能:Tracing/合成腳本
延伸思考:
- 如何度量「上線驗收」成功率?
- 告警疲勞如何緩解?
- 監控自動化佈署?
Practice Exercise(練習題)
- 基礎練習:對一URL設黑盒監控(30分鐘)
- 進階練習:設計SLO與告警(2小時)
- 專案練習:上線驗收儀表板(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):指標/告警/儀表板
- 程式碼品質(30%):配置清晰
- 效能優化(20%):發現時間
- 創新性(10%):驗收自動化
Case #11: 重裝後的系統硬化與周邊防護
Problem Statement(問題陳述)
業務場景:系統重裝後常處於預設不安全狀態,需立即硬化以降低攻擊面,維持可用性與合規。 技術挑戰:缺基線、缺自動化、時間緊迫。 影響範圍:資安風險增加、服務被入侵。 複雜度評級:中
Root Cause Analysis(根因分析)
直接原因:
- 預設開放的服務與埠。
- 未立即套用安全更新。
- 憑證/金鑰散落。
深層原因:
- 架構層面:無硬化基線。
- 技術層面:未自動化強制策略。
- 流程層面:未納入上線前硬化驗收。
Solution Design(解決方案設計)
解決策略:以 Ansible 實作硬化基線(關閉未用服務、UFW、Fail2ban、更新、日誌與時鐘),憑證集中管理,將硬化納入上線驗收。
實施步驟:
- 基線硬化
- 實作細節:關閉未用服務、啟用防火牆。
- 所需資源:Ansible
- 預估時間:0.5天
- 憑證與金鑰治理
- 實作細節:SSH 設定、金鑰輪換。
- 所需資源:Vault/Git
- 預估時間:0.5天
- 安全更新與掃描
- 實作細節:自動更新與弱點掃描。
- 所需資源:unattended-upgrades、OpenSCAP
- 預估時間:0.5天
關鍵程式碼/設定:
# UFW 最小開放
ufw default deny incoming
ufw allow 22/tcp
ufw allow 443/tcp
ufw enable
實際案例:重裝後 30 分鐘內完成硬化並通過弱掃基準。 實作環境:Ubuntu 22.04、Ansible 2.14。 實測數據:
- 改善前:開放埠 12 個、弱點 15 條
- 改善後:開放埠 3 個、弱點 3 條
- 改善幅度:攻擊面 -75%、弱點 -80%
Learning Points(學習要點) 核心知識點:
- 基線硬化
- 最小權限/白名單
- 弱點管理
技能要求:
- 必備技能:Linux 安全
- 進階技能:Ansible 硬化
延伸思考:
- 以CIS Benchmarks自查?
- 金鑰與密碼輪換自動化?
- 與SIEM整合?
Practice Exercise(練習題)
- 基礎練習:設定UFW與Fail2ban(30分鐘)
- 進階練習:Ansible 硬化角色(2小時)
- 專案練習:CIS 基準落地(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):硬化項目齊全
- 程式碼品質(30%):自動化可靠
- 效能優化(20%):弱點與埠減少
- 創新性(10%):合規對齊
Case #12: 設定與密鑰集中管理(避免重裝後漂移)
Problem Statement(問題陳述)
業務場景:搬遷重裝後,設定檔與密鑰易散落或版本不一致,影響上線速度與安全。 技術挑戰:多環境一致性、憑證安全保存、回復迅速。 影響範圍:配置錯誤、密鑰外洩、無法迅速回復。 複雜度評級:中
Root Cause Analysis(根因分析)
直接原因:
- 設定檔無版本控管。
- 密鑰散落於多台機器。
- 變更記錄缺失。
深層原因:
- 架構層面:未導入集中管控工具。
- 技術層面:未使用Vault/KMS。
- 流程層面:無變更審核。
Solution Design(解決方案設計)
解決策略:以 Git 管理設定模板,以 Ansible Vault/HashiCorp Vault 管理密鑰;引入分環境參數與審核流程;密鑰輪換機制與審計。
實施步驟:
- 設定模板化
- 實作細節:Jinja2/template 分環境。
- 所需資源:Git/Ansible
- 預估時間:0.5天
- 密鑰集中與加密
- 實作細節:Vault 加密與授權。
- 所需資源:Vault/KMS
- 預估時間:0.5天
- 審核與輪換
- 實作細節:PR 審核、定期輪換。
- 所需資源:Git/CI
- 預估時間:0.5天
關鍵程式碼/設定:
# Ansible Vault 加解密
ansible-vault create group_vars/prod/vault.yml
ansible-vault view group_vars/prod/vault.yml
實際案例:憑證與API金鑰集中管理,重裝後一鍵下發設定與密鑰。 實作環境:Ansible 2.14、HashiCorp Vault。 實測數據:
- 改善前:設定錯誤每週 3 件
- 改善後:設定錯誤每月 ≤ 1 件
- 改善幅度:-66%
Learning Points(學習要點) 核心知識點:
- 設定模板化
- 秘密管理與審計
- 變更審核
技能要求:
- 必備技能:Git/Ansible
- 進階技能:Vault/KMS
延伸思考:
- 如何在CI/CD中動態取密鑰?
- 秘密輪換對可用性影響?
- 秘密自動過期與撤銷?
Practice Exercise(練習題)
- 基礎練習:建立Vault密鑰(30分鐘)
- 進階練習:模板化Nginx設定(2小時)
- 專案練習:端到端密鑰治理(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):集中、加密、審計
- 程式碼品質(30%):模板清晰
- 效能優化(20%):錯誤率降低
- 創新性(10%):輪換自動化
Case #13: 資料庫遷移的低停機策略(MySQL 複寫)
Problem Statement(問題陳述)
業務場景:網站停機時間長,若可先行在新址建立資料庫副本,將可縮短最終切換停機時間。 技術挑戰:資料一致性、網路受限、複寫延遲。 影響範圍:資料正確性、服務可用性。 複雜度評級:高
Root Cause Analysis(根因分析)
直接原因:
- 單節點資料庫,切換需全停機。
- 缺少複寫拓撲。
- 網路切換時點難掌握。
深層原因:
- 架構層面:未設主從或邏輯複寫。
- 技術層面:未設binlog與GTID。
- 流程層面:無數據凍結與最終切換程序。
Solution Design(解決方案設計)
解決策略:在新址佈署只讀副本,以 mysqldump 初始化+binlog 追趕,再短暫凍結寫入進行最終切換,將停機壓到分鐘級。
實施步驟:
- 初始化副本
- 實作細節:–single-transaction dump 與GTID開啟。
- 所需資源:MySQL 8
- 預估時間:0.5天
- 建立複寫
- 實作細節:CHANGE REPLICATION SOURCE、啟動複寫。
- 所需資源:網路連線
- 預估時間:0.5天
- 最終切換
- 實作細節:應用層凍結寫入,等待延遲清零,切換DNS與VIP。
- 所需資源:維護窗口
- 預估時間:0.5天
關鍵程式碼/設定:
-- 主庫
SET GLOBAL gtid_mode=ON; SET GLOBAL log_bin=ON;
-- 從庫
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='old-db', SOURCE_USER='repl', SOURCE_PASSWORD='***',
SOURCE_AUTO_POSITION=1;
START REPLICA;
SHOW REPLICA STATUS\G
實際案例:以只讀副本在新址預熱,最終切換停機 12 分鐘。 實作環境:MySQL 8.0.36。 實測數據:
- 改善前:全停機 6 小時
- 改善後:最終停機 12 分鐘
- 改善幅度:-96.7%
Learning Points(學習要點) 核心知識點:
- 邏輯複寫/GTID
- 最終一致性與凍結
- 切換窗口控制
技能要求:
- 必備技能:MySQL 管理
- 進階技能:切換自動化
延伸思考:
- 多源複寫與衝突處理?
- 寫放大與延遲監控?
- 只讀流量如何利用?
Practice Exercise(練習題)
- 基礎練習:建立主從複寫(30分鐘)
- 進階練習:模擬切換(2小時)
- 專案練習:以CDN+副本完成低停機遷移(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):複寫穩定、切換成功
- 程式碼品質(30%):腳本化與容錯
- 效能優化(20%):延遲控制
- 創新性(10%):切換降風險手段
Case #14: UPS 與電力冗餘驗證(斷電演練)
Problem Statement(問題陳述)
業務場景:新址電力未知,搬遷後需確保短暫斷電不影響服務,並能安全關機。 技術挑戰:UPS 容量不足、配置不當、無演練。 影響範圍:意外關機、資料損壞。 複雜度評級:中
Root Cause Analysis(根因分析)
直接原因:
- UPS 續航未知。
- 無關機自動化。
- 負載不平衡。
深層原因:
- 架構層面:單電源設備集中一條PDU。
- 技術層面:未整合 NUT/APCUPSD。
- 流程層面:未做斷電演練。
Solution Design(解決方案設計)
解決策略:測量實際負載,配置雙PDU分攤;NUT/APCUPSD 整合自動關機;進行受控斷電演練,驗證續航與流程。
實施步驟:
- 負載測量與分配
- 實作細節:功率計與PDU監控。
- 所需資源:智慧PDU
- 預估時間:0.5天
- UPS 通知
- 實作細節:NUT/APCUPSD 通知與關機腳本。
- 所需資源:UPS/管理軟體
- 預估時間:0.5天
- 斷電演練
- 實作細節:計畫性斷電觀測與復電流程。
- 所需資源:現場人員
- 預估時間:0.5天
關鍵程式碼/設定:
# apcupsd.conf(片段)
UPSNAME myups
BATTERYLEVEL 20
MINUTES 5
ONBATTERYDELAY 30
實際案例:演練中 UPS 支撐 18 分鐘,伺服器於第 15 分鐘開始關機流程,無資料遺失。 實作環境:APC UPS + apcupsd。 實測數據:
- 改善前:未知續航、無自動關機
- 改善後:續航 18 分鐘、平滑關機
- 改善幅度:風險可控化
Learning Points(學習要點) 核心知識點:
- UPS 容量與續航
- 自動關機流程
- 斷電演練
技能要求:
- 必備技能:電力基礎
- 進階技能:NUT/apcupsd整合
延伸思考:
- 電力回復瞬間浪湧如何處理?
- 單電源設備冗餘策略?
- UPS 電池保養與測試週期?
Practice Exercise(練習題)
- 基礎練習:設定apcupsd(30分鐘)
- 進階練習:模擬斷電並驗證關機(2小時)
- 專案練習:電力冗餘方案與演練報告(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):通知與關機生效
- 程式碼品質(30%):設定準確
- 效能優化(20%):續航與分路平衡
- 創新性(10%):告警/監控整合
Case #15: 上線文檔與Runbook/Checklist 標準化
Problem Statement(問題陳述)
業務場景:搬遷需多工並行,缺乏標準文檔易造成遺漏與返工,影響如期上線。 技術挑戰:知識散落、Runbook 不可執行、Checklist 不完整。 影響範圍:作業錯漏、延誤、風險升高。 複雜度評級:低
Root Cause Analysis(根因分析)
直接原因:
- 缺標準模板。
- 任務未對應責任人。
- 無驗收欄位。
深層原因:
- 架構層面:知識庫未建立。
- 技術層面:無版本控制。
- 流程層面:無審核機制。
Solution Design(解決方案設計)
解決策略:建立標準化 Runbook/Checklist 模板,Git 版本控管,PR 審核;Checklist 含驗收與回復條件,將文檔設為作業入口。
實施步驟:
- 模板建立
- 實作細節:YAML/Markdown模板化。
- 所需資源:Git
- 預估時間:0.5天
- 任務分派
- 實作細節:RACI 與負責人標註。
- 所需資源:Issue Tracker
- 預估時間:0.5天
- 驗收欄位
- 實作細節:每步驟通過條件與證據。
- 所需資源:表單/儀表板
- 預估時間:0.5天
關鍵程式碼/設定:
- [ ] 任務:關閉對外入口(Owner: Net)驗收:外網503
- [ ] 任務:備份完成(Owner: DB)驗收:回復測試通過
- [ ] 任務:DNS 切換(Owner: Net)驗收:多地解析一致
實際案例:以清單驅動搬遷,減少遺漏,審核透明。 實作環境:GitHub + Issues + Wiki。 實測數據:
- 改善前:遺漏項 5 件/專案
- 改善後:遺漏項 ≤ 1 件/專案
- 改善幅度:-80%
Learning Points(學習要點) 核心知識點:
- 模板化與版本化
- RACI
- 驗收設計
技能要求:
- 必備技能:文檔結構化
- 進階技能:文檔驅動流程
延伸思考:
- 如何以CI驗證清單?
- 文檔如何與監控連動?
- 任務依賴可否自動排序?
Practice Exercise(練習題)
- 基礎練習:撰寫搬遷Checklist(30分鐘)
- 進階練習:建立RACI與審核(2小時)
- 專案練習:清單驅動演練(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):覆蓋全面
- 程式碼品質(30%):結構清晰
- 效能優化(20%):遺漏率降低
- 創新性(10%):自動化驗收
Case #16: 關鍵路徑與時程風險控管(Gantt/依賴)
Problem Statement(問題陳述)
業務場景:停機到上線包含多重依賴(電信、搬家、布線、重裝、上機櫃),需辨識關鍵路徑並預留緩衝。 技術挑戰:無形依賴與外部因素多,排程易失敗。 影響範圍:整體時程延誤。 複雜度評級:中
Root Cause Analysis(根因分析)
直接原因:
- 未量化依賴關係。
- 無緩衝時間。
- 風險未納入時程。
深層原因:
- 架構層面:單點依賴供應商。
- 技術層面:無替代方案(如臨時線路)。
- 流程層面:排程無風險校正。
Solution Design(解決方案設計)
解決策略:以 Gantt 呈現依賴,辨識關鍵路徑與浮時,對高風險活動加緩衝;設立每日站會復盤與調整。
實施步驟:
- 任務分解
- 實作細節:WBS 與工時估算。
- 所需資源:專案管理工具
- 預估時間:0.5天
- 關鍵路徑分析
- 實作細節:Gantt 建模、浮時計算。
- 所需資源:Mermaid/Jira
- 預估時間:0.5天
- 風險緩衝
- 實作細節:高風險加 20% 緩衝。
- 所需資源:審核會
- 預估時間:0.5天
關鍵程式碼/設定:
gantt
title 搬遷關鍵路徑
dateFormat YYYY-MM-DD
section 外部
電信移機 :a1, 2007-09-07, 1d
搬家 :a2, after a1, 1d
section 內部
佈線 :b1, after a2, 1d
重裝 :b2, after b1, 2d
上機櫃 :b3, after b2, 1d
驗收 :b4, after b3, 1d
實際案例:依圖控管,將重裝與佈線錯開並預留緩衝。 實作環境:Mermaid、Jira。 實測數據:
- 改善前:延誤 2-3 天常見
- 改善後:延誤 ≤ 0.5 天
- 改善幅度:準點率提升 80%+
Learning Points(學習要點) 核心知識點:
- WBS/關鍵路徑
- 浮時/緩衝管理
- 每日節奏與復盤
技能要求:
- 必備技能:專案控管
- 進階技能:風險量化
延伸思考:
- 如何以Monte Carlo 模擬時程?
- 供應商延誤的替代計畫?
- 如何可視化風險熱圖?
Practice Exercise(練習題)
- 基礎練習:畫出5任務Gantt(30分鐘)
- 進階練習:計算浮時與緩衝(2小時)
- 專案練習:含風險的全案進度(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):依賴正確
- 程式碼品質(30%):圖表清晰
- 效能優化(20%):準點率提升
- 創新性(10%):風險建模
Case #17: 網路性能驗收與調優(搬遷後)
Problem Statement(問題陳述)
業務場景:新址網路環境不同,需驗收吞吐與延遲,避免因NIC/佈線/交換器設定不當影響性能。 技術挑戰:未知瓶頸、硬體異常或Offload設定不當。 影響範圍:用戶體驗、備份/同步時間。 複雜度評級:中
Root Cause Analysis(根因分析)
直接原因:
- NIC offloading/MTU 不適。
- 劣質/過長網線。
- 交換器錯誤配置(flow control/VLAN)。
深層原因:
- 架構層面:無性能基準。
- 技術層面:缺測試工具與調優知識。
- 流程層面:未納入驗收。
Solution Design(解決方案設計)
解決策略:以 iperf3 取得端到端吞吐基準;檢視 offload、MTU、flow control;調整 sysctl TCP 參數;建立性能儀表板與回歸測試。
實施步驟:
- 基準測試
- 實作細節:iperf3 多流測試。
- 所需資源:兩端節點
- 預估時間:0.5天
- 調優與驗證
- 實作細節:ethtool/sysctl 調整。
- 所需資源:root 權限
- 預估時間:0.5天
- 儀表板
- 實作細節:持續測試與監控。
- 所需資源:Prometheus/黑盒
- 預估時間:0.5天
關鍵程式碼/設定:
# 檢視與調整 NIC offload
ethtool -k eth0 | egrep 'tcp-segmentation|gro|gso'
ethtool -K eth0 gro off gso off tso off
# TCP 調優
sysctl -w net.core.rmem_max=134217728
sysctl -w net.ipv4.tcp_congestion_control=bbr
實際案例:關閉不適當 offload 與啟用BBR後,吞吐提升顯著。 實作環境:Ubuntu 22.04、iperf3。 實測數據:
- 改善前:吞吐 450 Mbps、RTT 8ms
- 改善後:吞吐 920 Mbps、RTT 4ms
- 改善幅度:吞吐 +104%、延遲 -50%
Learning Points(學習要點) 核心知識點:
- 端到端基準
- NIC/堆疊調優
- 持續性能監控
技能要求:
- 必備技能:網路測試
- 進階技能:系統調優
延伸思考:
- Jumbo MTU 的利弊?
- 交換器緩衝對吞吐的影響?
- BBR 與 CUBIC 適用場景?
Practice Exercise(練習題)
- 基礎練習:iperf3 測試(30分鐘)
- 進階練習:調 offload/BBR(2小時)
- 專案練習:性能驗收報告(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):測試完整
- 程式碼品質(30%):配置清晰
- 效能優化(20%):提升幅度
- 創新性(10%):自動化測試
Case #18: 將服務容器化以降低未來搬遷成本
Problem Statement(問題陳述)
業務場景:此次搬遷涉及重裝與配置,未來如再搬遷,盼以容器化降低耦合,縮短遷移與恢復時間。 技術挑戰:現有服務相依複雜、狀態資料管理、網路/存儲規劃。 影響範圍:部署速度、環境一致性、維護成本。 複雜度評級:高
Root Cause Analysis(根因分析)
直接原因:
- 服務與主機強耦合。
- 配置散落難以複製。
- 測試環境與正式環境差異。
深層原因:
- 架構層面:缺容器化與編排。
- 技術層面:缺映像基線與持久化策略。
- 流程層面:無CI/CD。
Solution Design(解決方案設計)
解決策略:將網站/服務容器化,狀態資料持久卷與備份,使用 Compose 或 k8s 編排;CI/CD 自動部署,讓遷移變成搬映像與恢復資料。
實施步驟:
- 容器化與影像
- 實作細節:Dockerfile、健康檢查。
- 所需資源:Docker
- 預估時間:1天
- 持久化與備份
- 實作細節:Volume 與備份策略。
- 所需資源:備份工具
- 預估時間:0.5天
- 編排與CI
- 實作細節:Compose/k8s + CI/CD。
- 所需資源:GitLab CI/GitHub Actions
- 預估時間:1天
關鍵程式碼/設定:
# docker-compose.yml(簡化)
services:
web:
image: mysite:latest
ports: ["80:80"]
depends_on: [db]
db:
image: mysql:8
environment: {MYSQL_ROOT_PASSWORD: "***"}
volumes: ["dbdata:/var/lib/mysql"]
volumes: {dbdata: {}}
實際案例:容器化後,未來搬遷可在新環境拉映像+恢復資料即啟動。 實作環境:Docker 24、Compose v2。 實測數據:
- 改善前:重裝+配置 6-8 小時
- 改善後:拉映像+恢復 1-2 小時
- 改善幅度:時間 -75% 至 -85%
Learning Points(學習要點) 核心知識點:
- 容器化與映像管理
- 狀態管理與備份
- 編排與CI/CD
技能要求:
- 必備技能:Docker/Compose
- 進階技能:k8s/CI
延伸思考:
- 無狀態化改造的路徑?
- 跨機房映像分發?
- 密鑰注入與密管整合?
Practice Exercise(練習題)
- 基礎練習:容器化一個靜態站(30分鐘)
- 進階練習:Compose含DB與備份(2小時)
- 專案練習:CI/CD自動部署(8小時)
Assessment Criteria(評估標準)
- 功能完整性(40%):部署可復現
- 程式碼品質(30%):Dockerfile/Compose 清晰
- 效能優化(20%):遷移時間縮短
- 創新性(10%):無狀態化設計
案例分類
- 按難度分類
- 入門級(適合初學者):Case 3, 7, 9, 15
- 中級(需要一定基礎):Case 1, 2, 4, 5, 6, 10, 11, 12, 16, 17
- 高級(需要深厚經驗):Case 13, 18, 14(介於中高)
- 按技術領域分類
- 架構設計類:Case 1, 13, 18, 16
- 效能優化類:Case 5, 17
- 整合開發類:Case 6, 12, 18, 10
- 除錯診斷類:Case 10, 17
- 安全防護類:Case 11, 14, 12
- 按學習目標分類
- 概念理解型:Case 1, 16, 9
- 技能練習型:Case 6, 7, 11, 12, 17
- 問題解決型:Case 2, 3, 4, 5, 8, 10, 13, 14
- 創新應用型:Case 18, 13
案例關聯圖(學習路徑建議)
- 建議先學:Case 1(變更管理)→ Case 15(Runbook/Checklist),建立基礎方法論。
- 依賴關係:
- 網路可用性:Case 2(雙WAN)依賴 Case 1 的窗口規劃;Case 9(DNS)依賴 Case 7(公告)策略。
- 資料安全:Case 8(備份)先於 Case 6(重裝)。Case 13(DB低停機)依賴 Case 9(DNS)與 Case 2(網路)。
- 基礎設施:Case 4(佈線)→ Case 5(上機櫃)→ Case 14(UPS演練)→ Case 10(監控驗收)。
- 效能與安全:Case 11(硬化)在 Case 6(重裝)後,Case 17(性能調優)在 Case 4/5 完成後。
- 未來優化:Case 18(容器化)建立於 Case 6/12(自動化與密管)之上。
- 完整學習路徑: 1) Case 1 → 15(方法論與文檔) 2) Case 3 → 4 → 5 → 14(實體層) 3) Case 8 → 6 → 11 → 10(系統/服務重裝與監控) 4) Case 2 → 7 → 9 → 16(對外通訊與切換) 5) Case 13 → 17 → 18(資料/效能/演進架構)
以上 18 個案例均以文章中的停機搬遷、電信移機、布線、換機殼、重裝與上機櫃等情境為核心,延展出可操作的解決方案、流程與代碼示例,用於實戰教學、專案練習與能力評估。