Files
ewoooc/docs/V10.0-OPTIMIZATION-PLAN.md

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 相關文檔

6.2 變更記錄

日期 版本 變更內容
2026-02-14 Draft 初版計畫提案

文件結束

本計畫需經技術評審與管理層核准後實施。