21 KiB
21 KiB
MOMO Pro System V10.0 - 全面優化計畫
版本: V10.0 (計畫版) 日期: 2026-02-14 作者: CIO 辦公室 狀態: 提案中
一、執行摘要
本計畫旨在將 MOMO Pro System 從當前 V9.4 升級至 V10.0,實現企業級的穩定性、自動化運維、與商業智慧能力。
核心目標
| 維度 | V9.4 現況 | V10.0 目標 |
|---|---|---|
| 可用性 | 99% | 99.9% (每月最多 43 分鐘停機) |
| MTTR | 手動修復 30+ 分鐘 | 自動修復 < 5 分鐘 |
| 部署頻率 | 手動觸發 | 每日自動部署 (GitOps) |
| 監控覆蓋率 | 60% | 100% |
| 環境一致性 | 手動同步 | 自動同步 + 告警 |
二、現況分析
2.1 環境架構
┌─────────────────────────────────────────────────────────────────────────────┐
│ 現行雙環境架構 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ UAT 主機 (192.168.0.110) │ │
│ │ 集中式監控與 BI 平台 │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ K8s momo-app│ │ Superset │ │ Metabase │ │ │
│ │ │ momo-sched │ │ (Docker) │ │ (Docker) │ │ │
│ │ │ momo-postgres│ └─────────────┘ └─────────────┘ │ │
│ │ └─────────────┘ │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Grafana │ │ Prometheus │ │Alertmanager │ │ │
│ │ │ (K8s) │ │ (K8s) │ │ (K8s) │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ GitLab │ │ Registry │ │ n8n │ │ │
│ │ │ (Docker) │ │ (Docker) │ │ (Docker) │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ │ │
│ │ 同步 / 監控 │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ GCP 正式環境 (35.194.233.141) │ │
│ │ 純應用部署 (無監控堆疊) │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ K8s momo-app│ │ momo-sched │ │momo-postgres│ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ │ │ │
│ │ ⚠️ 監控由 UAT 集中管理 │ │
│ │ ⚠️ BI 服務指向 UAT │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
2.2 現有問題總結
| 類別 | 問題 | 影響程度 |
|---|---|---|
| 環境同步 | UAT/GCP 配置偶爾不一致 | 🔴 高 |
| 部署流程 | CI/CD 部署 GCP 需手動觸發 | 🟠 中 |
| 監控告警 | 部分服務缺乏監控 | 🟠 中 |
| 自動修復 | OOM/死鎖等需人工介入 | 🔴 高 |
| BI 報表 | Superset 圖表配置繁瑣 | 🟡 低 |
| 文檔管理 | CLAUDE.md 過長,難以維護 | 🟡 低 |
| 備份策略 | 缺乏跨區域備份 | 🟠 中 |
三、V10.0 優化方案
3.1 自動化運維 (AIOps)
3.1.1 環境同步機制 ✅ 已實作
# 每 30 分鐘自動檢查
scripts/auto-repair/env-sync-monitor.sh
# 功能:
# 1. 比對 ConfigMap
# 2. 比對 Pod 版本
# 3. 比對關鍵檔案 checksum
# 4. 自動同步不一致項目
# 5. Telegram 告警
3.1.2 智慧自動修復矩陣
| 問題類型 | 偵測方式 | 自動修復動作 | 通知 |
|---|---|---|---|
| OOM | K8s OOMKilled |
增加 memory +50%, 重啟 | ✅ |
| Pod CrashLoop | 重啟 >5 次/小時 | 回滾到上一版本 | ✅ |
| 資料庫死鎖 | pg_stat_activity | 終止長時間查詢 | ✅ |
| 服務無回應 | 健康檢查 502/504 | 重啟 Pod/Docker | ✅ |
| 磁碟空間 | >85% | 自動清理 logs/tmp | ✅ |
| SSL 過期 | 30 天前 | 自動續約 (Certbot) | ✅ |
| 環境不一致 | ConfigMap diff | 自動同步 | ✅ |
| 爬蟲失敗 | 連續 3 次錯誤 | 重啟 scheduler | ✅ |
3.1.3 告警分級與升級機制
Level 1 (Info) → Telegram 通知
Level 2 (Warning) → Telegram + 自動修復嘗試
Level 3 (Critical) → Telegram + 自動修復 + Email
Level 4 (Emergency)→ Telegram + 自動修復 + Email + LINE (主管)
3.2 CI/CD 優化 (GitOps)
3.2.1 完整 Pipeline 流程
# .gitlab-ci.yml V10.0
stages:
- test
- security
- build
- deploy-uat
- integration-test
- deploy-gcp
- verify
workflow:
rules:
- if: $CI_COMMIT_BRANCH == "main"
when: always
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: always
test:
stage: test
script:
- pytest tests/ -v --cov=app --cov-report=xml
coverage: '/TOTAL.+?(\d+%)/'
security-scan:
stage: security
script:
- bandit -r . -f json -o bandit-report.json
- trivy image $IMAGE_NAME --severity HIGH,CRITICAL
artifacts:
reports:
sast: bandit-report.json
build:
stage: build
script:
- docker build -t $IMAGE_NAME:$CI_COMMIT_SHA .
- docker push $IMAGE_NAME:$CI_COMMIT_SHA
- docker tag $IMAGE_NAME:$CI_COMMIT_SHA $IMAGE_NAME:latest
- docker push $IMAGE_NAME:latest
deploy-uat:
stage: deploy-uat
script:
- ssh $UAT_HOST "kubectl set image deploy/momo-app momo-app=$IMAGE_NAME:$CI_COMMIT_SHA -n momo"
environment:
name: UAT
url: https://mo.wooo.work
integration-test:
stage: integration-test
script:
- sleep 60
- curl -f https://mo.wooo.work/health
- python tests/integration/test_api.py
needs: [deploy-uat]
deploy-gcp:
stage: deploy-gcp
script:
- gcloud compute ssh $GCP_VM --command="sudo kubectl set image deploy/momo-app momo-app=$IMAGE_NAME:$CI_COMMIT_SHA -n momo"
environment:
name: Production
url: https://momo.wooo.work
needs: [integration-test]
when: manual # 或 automatic
verify:
stage: verify
script:
- ./scripts/auto-repair/env-sync-monitor.sh check
- curl -f https://momo.wooo.work/health
needs: [deploy-gcp]
3.2.2 版本管理策略
main (v10.0.0)
├── 直接部署到 UAT (自動)
├── 整合測試通過後部署 GCP (自動/手動)
└── 每次部署自動打 Git Tag
develop (開發中)
├── 功能分支合併點
└── PR 必須通過 CI 檢查
feature/* (功能分支)
├── 開發新功能
└── PR → develop → main
3.3 監控體系升級
3.3.1 監控層級架構
┌─────────────────────────────────────────────────────────────────────────┐
│ V10.0 監控體系架構 │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Layer 4: 業務監控 (Business Metrics) │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ • 每日業績達成率 • 爬蟲成功率 • 用戶活躍度 │ │
│ │ • 報表產出準時率 • API 回應時間 • 錯誤率 │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │ │
│ Layer 3: 應用監控 (APM) │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ • Flask 請求追蹤 • 資料庫查詢分析 • 爬蟲執行監控 │ │
│ │ • 排程任務狀態 • 外部 API 呼叫 • 錯誤追蹤 (Sentry) │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │ │
│ Layer 2: 容器/K8s 監控 │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ • Pod 狀態/重啟 • 資源使用率 • 部署狀態 │ │
│ │ • 映像版本追蹤 • ConfigMap 變更 • Secret 存取 │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │ │
│ Layer 1: 基礎設施監控 │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ • CPU/記憶體/磁碟 • 網路流量 • 系統負載 │ │
│ │ • SSL 憑證狀態 • DNS 解析 • 外部服務可用性 │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
3.3.2 新增監控指標
| 指標類別 | 指標名稱 | 閾值 | 告警等級 |
|---|---|---|---|
| 業務 | 爬蟲成功率 | < 90% | Critical |
| 業務 | 每日業績匯入延遲 | > 30 分鐘 | Warning |
| 業務 | API 平均回應時間 | > 2 秒 | Warning |
| 應用 | Flask 錯誤率 | > 1% | Warning |
| 應用 | 資料庫查詢時間 | > 5 秒 | Warning |
| 容器 | Pod 記憶體使用率 | > 85% | Warning |
| 容器 | Pod 重啟次數 | > 3/小時 | Critical |
| 基礎 | 磁碟使用率 | > 85% | Warning |
| 基礎 | SSL 剩餘天數 | < 30 天 | Warning |
3.3.3 Grafana 儀表板規劃
| 儀表板名稱 | 內容 | 受眾 |
|---|---|---|
| Executive Summary | KPI 總覽、業績達成率、系統健康度 | 主管 |
| Operations Dashboard | 服務狀態、告警列表、最近部署 | 運維 |
| Application Performance | API 效能、錯誤追蹤、資料庫效能 | 開發 |
| Infrastructure Health | CPU/RAM/Disk、網路、K8s 資源 | 運維 |
| Crawler Monitoring | 爬蟲執行狀態、成功率、資料量 | 業務 |
3.4 商業智慧 (BI) 強化
3.4.1 Superset 圖表標準化
| 圖表 ID | 圖表名稱 | 類型 | 資料源 |
|---|---|---|---|
| 1 | 品牌銷售額排名 | Bar Chart | monthly_summary_analysis |
| 2 | 月銷售趨勢 | Line Chart | monthly_summary_analysis |
| 3 | 類別銷售佔比 | Pie Chart | monthly_summary_analysis |
| 4 | 銷售數量 Top 15 | Bar Chart | monthly_summary_analysis |
| 5 | 區域銷售分布 | Bar Chart | monthly_summary_analysis |
| 6 | 毛利率趨勢 | Line Chart | monthly_summary_analysis |
| 7 | 瀏覽量趨勢 | Area Chart | monthly_summary_analysis |
| 8 | 每日業績概覽 | Big Number | daily_sales_snapshot |
3.4.2 Metabase 集合整理
📊 MOMO 業績分析
├── ⭐ 2026 專業分析儀表板(新版)
│ ├── 即時業績概覽
│ ├── 品牌分析
│ ├── 趨勢分析
│ └── 預測模型
│
└── 📦 舊版業績分析(已棄用)
└── 歷史資料備份
3.5 資料備份與災難復原
3.5.1 備份策略 (3-2-1 原則)
| 備份類型 | 頻率 | 保留期限 | 儲存位置 |
|---|---|---|---|
| 資料庫全備 | 每日 02:00 | 30 天 | UAT 本地 |
| 資料庫增量 | 每小時 | 7 天 | UAT 本地 |
| 跨區域備份 | 每日 04:00 | 14 天 | GCS (asia-east1) |
| 配置檔備份 | 每次變更 | 永久 | Git + GCS |
3.5.2 災難復原流程
RTO (Recovery Time Objective): 30 分鐘
RPO (Recovery Point Objective): 1 小時
復原流程:
1. 確認災難類型 (UAT 故障 / GCP 故障 / 完全災難)
2. 啟動備用環境或復原程序
3. 從最近備份還原資料庫
4. 驗證服務健康
5. 切換 DNS 或流量
6. 通知相關人員
3.6 安全強化
3.6.1 安全檢查清單
| 項目 | 當前狀態 | V10.0 目標 |
|---|---|---|
| Fail2Ban | ✅ 已啟用 | 維持 |
| UFW 防火牆 | ✅ 已啟用 | 維持 |
| SSL/TLS | ✅ A+ 評級 | 維持 |
| HSTS | ✅ 已啟用 | 維持 |
| 端口隱藏 | ✅ 僅 80/443/22 | 維持 |
| 程式碼掃描 | ✅ Bandit | 增加 SonarQube |
| 映像掃描 | ✅ Trivy | 維持 |
| WAF | ❌ | 新增 ModSecurity |
| Secret 管理 | K8s Secret | 升級 Vault |
3.6.2 合規性目標
- ISO 27001 資訊安全管理
- GDPR 個資保護 (如適用)
- 定期滲透測試 (每季)
- 安全意識培訓
3.7 文檔與知識管理
3.7.1 CLAUDE.md 重構
CLAUDE.md (主文件,簡潔版)
├── 專案概覽
├── 環境架構
├── 帳號密碼
└── 快速指令
docs/
├── ARCHITECTURE.md # 詳細架構說明
├── DEPLOYMENT.md # 部署流程
├── MONITORING.md # 監控告警
├── TROUBLESHOOTING.md # 故障排除
├── API-REFERENCE.md # API 文檔
├── DATABASE-SCHEMA.md # 資料庫結構
├── SECURITY.md # 安全規範
└── CHANGELOG.md # 變更記錄
3.7.2 Runbook 建立
| Runbook | 內容 | 適用場景 |
|---|---|---|
| Pod OOM 處理 | 診斷步驟、記憶體調整、回滾 | Pod 記憶體不足 |
| 資料庫連線問題 | 連線池檢查、重啟流程 | 連線超時 |
| 爬蟲失敗處理 | 日誌檢查、重試、手動觸發 | 爬蟲異常 |
| CI/CD 失敗處理 | Pipeline 診斷、手動部署 | 部署失敗 |
| SSL 憑證更新 | Certbot 更新、Nginx 重載 | 憑證到期 |
四、實施計畫
4.1 里程碑規劃
| 階段 | 時程 | 交付物 |
|---|---|---|
| Phase 1: 基礎穩定 | Week 1-2 | 環境同步機制、自動修復完善 |
| Phase 2: CI/CD 強化 | Week 3-4 | GitOps 流程、自動化測試 |
| Phase 3: 監控升級 | Week 5-6 | 新監控指標、Grafana 儀表板 |
| Phase 4: BI 優化 | Week 7-8 | Superset/Metabase 標準化 |
| Phase 5: 安全強化 | Week 9-10 | WAF、Vault、合規文檔 |
| Phase 6: 文檔整理 | Week 11-12 | CLAUDE.md 重構、Runbook |
4.2 風險評估
| 風險 | 機率 | 影響 | 緩解措施 |
|---|---|---|---|
| 環境同步失敗 | 中 | 高 | 雙重驗證機制 |
| 自動修復誤觸發 | 低 | 中 | 保守閾值設定 |
| CI/CD Pipeline 中斷 | 中 | 高 | 手動部署備案 |
| 新監控影響效能 | 低 | 低 | 資源隔離 |
4.3 成功指標
| 指標 | 目標值 | 測量方式 |
|---|---|---|
| 系統可用性 | 99.9% | Uptime 監控 |
| 平均修復時間 | < 5 分鐘 | 告警到恢復時間 |
| 部署頻率 | 每日 | CI/CD Pipeline |
| 環境一致性 | 100% | 同步檢查結果 |
| 告警準確率 | > 95% | 誤報率分析 |
五、資源需求
5.1 硬體資源
| 項目 | UAT 現況 | V10.0 建議 |
|---|---|---|
| CPU | 4 核心 | 8 核心 |
| RAM | 8 GB | 16 GB |
| SSD | 100 GB | 200 GB |
| 網路 | 1 Gbps | 維持 |
5.2 軟體授權
| 軟體 | 類型 | 費用 |
|---|---|---|
| K3s | 開源 | 免費 |
| Prometheus/Grafana | 開源 | 免費 |
| Superset/Metabase | 開源 | 免費 |
| GitLab CE | 開源 | 免費 |
| HashiCorp Vault | 開源 | 免費 |
| ModSecurity | 開源 | 免費 |
5.3 人力需求
| 角色 | 投入時間 | 任務 |
|---|---|---|
| DevOps 工程師 | 50% | 自動化、監控、CI/CD |
| 後端開發 | 30% | API 優化、測試 |
| 資料分析師 | 20% | BI 報表、資料品質 |
六、附錄
6.1 相關文檔
- AGENTS.md - Codex 專案入口
- CONSTITUTION.md - 專案憲法
- DEPLOYMENT_WORKFLOW.md - 部署流程
6.2 變更記錄
| 日期 | 版本 | 變更內容 |
|---|---|---|
| 2026-02-14 | Draft | 初版計畫提案 |
文件結束
本計畫需經技術評審與管理層核准後實施。