482 lines
21 KiB
Markdown
482 lines
21 KiB
Markdown
# 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 環境同步機制 ✅ 已實作
|
|
|
|
```bash
|
|
# 每 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 流程
|
|
|
|
```yaml
|
|
# .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](../AGENTS.md) - Codex 專案入口
|
|
- [CONSTITUTION.md](../CONSTITUTION.md) - 專案憲法
|
|
- [DEPLOYMENT_WORKFLOW.md](DEPLOYMENT_WORKFLOW.md) - 部署流程
|
|
|
|
### 6.2 變更記錄
|
|
|
|
| 日期 | 版本 | 變更內容 |
|
|
|------|------|---------|
|
|
| 2026-02-14 | Draft | 初版計畫提案 |
|
|
|
|
---
|
|
|
|
**文件結束**
|
|
|
|
*本計畫需經技術評審與管理層核准後實施。*
|