# 04-上线部署与过渡管理工作流

## 一、工作流总览

```
┌─────────────────────────────────────────────────────────────────────┐
│                   上线部署与过渡管理工作流全景图                         │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐        │
│  │1.上线方案 │──>│2.生产环境 │──>│3.数据迁移 │──>│4.上线演练 │        │
│  │ 制定      │   │ 准备      │   │ 与验证    │   │ 与预演    │        │
│  └──────────┘   └──────────┘   └──────────┘   └──────────┘        │
│       │              │              │              │                │
│       v              v              v              v                │
│  ┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐        │
│  │5.正式上线 │──>│6.War Room │──>│7.Hypercare│──>│8.正式移交 │        │
│  │ 切换      │   │ 保障      │   │ 过渡期     │   │ 运维      │        │
│  └──────────┘   └──────────┘   └──────────┘   └──────────┘        │
│                                                                     │
│  核心策略: 灰度发布 | 回滚预案 | 7×24 War Room | 30天Hypercare        │
└─────────────────────────────────────────────────────────────────────┘
```

## 二、详细步骤说明

---

### 步骤1：上线方案制定

**目标**：制定详细的上线切换方案和应急预案。

**操作指南**：

**1.1 上线方案核心要素**

```
上线方案文档:

1. 上线目标与范围
   - 哪些系统、模块、功能本次上线
   - 哪些内容不在本期上线范围

2. 切换策略选择

   ┌───────────────┬─────────────────┬──────────────┐
   │   策略         │     适用场景     │    风险      │
   ├───────────────┼─────────────────┼──────────────┤
   │ 一次性切换     │ 全新系统、无旧系统 │ 高（无退路）  │
   │ (Big Bang)    │                 │              │
   ├───────────────┼─────────────────┼──────────────┤
   │ 并行运行       │ 替代旧系统       │ 中（成本高）  │
   │ (Parallel)    │ 需过渡期        │              │
   ├───────────────┼─────────────────┼──────────────┤
   │ 灰度发布       │ 大规模用户系统   │ 低（可回滚）  │
   │ (Canary)      │                 │              │
   ├───────────────┼─────────────────┼──────────────┤
   │ 地域分批       │ 多区域部署       │ 低（分批控制）│
   │ (Geographic)  │                 │              │
   └───────────────┴─────────────────┴──────────────┘

3. 切换详细步骤
   (按时间线排列每步操作、负责人、验证方法)

4. 回滚方案
   - 回滚触发条件
   - 回滚步骤
   - 回滚后验证
   - 预计回滚需要的时间

5. 上线团队
   - 各角色职责和联系方式

6. 上线时间窗口
   - 日期、时间、预计时长
   - 建议: 周五晚间至周日凌晨（交通影响最小）
```

**1.2 交通系统上线特殊考虑**

| 考虑因素 | 说明 |
|---------|------|
| 避开节假日/重大活动 | 春运/国庆/两会期间不宜上线 |
| 交通运行低谷期 | 深夜至凌晨流量小 |
| 先内部后外部 | 客户内部先用→服务窗口→公众用户 |
| 业务连续性 | 核心监测系统不能因上线中断监控 |

---

### 步骤2：生产环境准备

**目标**：确保生产环境就绪并通过验证。

**操作指南**：

**2.1 生产环境检查清单**

```
生产环境检查清单:

□ 硬件资源
  □ 服务器已到位上架
  □ 网络配置（IP/VLAN/防火墙策略）
  □ 存储挂载、容量检查
  □ GPU资源（如需要AI推理）

□ 软件资源
  □ OS安装与安全加固
  □ 中间件（数据库/消息队列/K8s等）安装
  □ 应用部署包准备
  □ SSL证书
  □ 监控Agent部署

□ 网络与安全
  □ 域名解析生效
  □ 负载均衡配置
  □ WAF规则配置
  □ 防火墙端口开放
  □ VPN/专线连通

□ 运维就绪
  □ 备份策略配置
  □ 监控告警配置
  □ 日志采集配置
  □ 运维账号和权限
```

---

### 步骤3：数据迁移与验证

**目标**：安全、完整地将数据从旧系统（如有）迁移到新系统。

**操作指南**：

**3.1 数据迁移策略**

```
数据迁移四步法:

1. 迁移前检查
   □ 数据量评估（行数、大小）
   □ 数据清洗（脏数据、重复数据）
   □ 字符集/编码一致性
   □ 数据字典/主数据对齐

2. 试迁移（非生产环境）
   □ 在测试环境执行一次完整迁移
   □ 验证迁移后数据的完整性、准确性
   □ 记录迁移耗时

3. 正式迁移
   □ 停止旧系统写入
   □ 执行数据导出→转换→导入
   □ 全量+增量同步

4. 迁移后验证
   □ 行数核对（源 vs 目标）
   □ 抽样核对（随机抽100条逐字段对）
   □ 关键业务数据专项核对
   □ 业务部门确认
```

**3.2 数据验证SQL示例**

```sql
-- 行数一致性检查
SELECT 'source' as db, count(*) FROM source_db.traffic_event
UNION ALL
SELECT 'target' as db, count(*) FROM target_db.traffic_event;

-- 关键数据抽样核对
SELECT s.event_id, s.event_type, s.event_time,
       t.event_id, t.event_type, t.event_time
FROM source_db.traffic_event s
FULL OUTER JOIN target_db.traffic_event t ON s.event_id = t.event_id
WHERE s.event_type != t.event_type
   OR ABS(s.event_time - t.event_time) > 1;
```

---

### 步骤4：上线演练与预演

**目标**：通过多次演练确保上线万无一失。

**操作指南**：

**4.1 演练类型**

| 演练类型 | 次数 | 环境 | 目的 |
|---------|:---:|------|------|
| 技术演练 | 2-3次 | 测试环境 | 验证部署脚本、切换步骤 |
| 全流程预演 | 1-2次 | 预生产环境 | 完整模拟上线全流程 |
| 回滚演练 | 1-2次 | 测试环境 | 验证回滚方案可行性 |

**4.2 上线操作手册（Runbook）**

```
上线操作手册结构:

一、上线操作步骤（超详细版）
  每步包含:
  · 步骤编号与名称
  · 操作内容（命令/操作）
  · 执行人
  · 预计耗时
  · 验证方法
  · 异常处理

示例:
  Step 03: 停止旧系统服务
  操作: systemctl stop old-system
  执行人: 运维工程师-张三
  预计耗时: 1 min
  验证: systemctl status old-system → inactive
  异常处理: 如无法正常停止，执行 kill -15 <pid>，等待30s，
           如仍无法停止，通告TL决定是否 kill -9

二、版本与配置
三、回滚步骤
四、联系人与升级路径
```

---

### 步骤5：正式上线切换

**目标**：按照操作手册执行上线切换。

**操作指南**：

**5.1 上线当天时间线示例**

```
上线日时间线 (以周五22:00上线为例):

┌──────────┬──────────────────────────────────────┐
│  21:00   │ War Room集结、角色确认、工具检查        │
│  21:30   │ 上线前检查（环境/数据/备份/公告已发）     │
│  22:00   │ 上线开始 - 系统进入维护模式              │
│  22:05   │ Step 1: 停止旧系统服务                  │
│  22:10   │ Step 2: 数据库备份                     │
│  22:30   │ Step 3: 数据迁移（如需要）              │
│  23:30   │ Step 4: 部署新版本应用                  │
│  23:45   │ Step 5: 启动新系统服务                  │
│  00:00   │ Step 6: 冒烟测试(核心功能验证)           │
│  00:30   │ Step 7: 集成测试(关键接口验证)           │
│  01:30   │ Step 8: 回归测试(全功能抽检)             │
│  02:00   │ Step 9: 解除维护模式                    │
│  02:30   │ 上线成功确认 / 或执行回滚                 │
│  03:00   │ 当天上线工作结束，War Room进入保障模式    │
└──────────┴──────────────────────────────────────┘
```

---

### 步骤6：War Room保障

**目标**：在上线后48-72小时内密集监控，快速响应问题。

**操作指南**：

**6.1 War Room配置**

| 要素 | 说明 |
|------|------|
| 地点 | 专用会议室或在线War Room（Teams/Zoom长会议） |
| 人员 | 开发/测试/运维/项目经理 + 客户IT代表 |
| 监控大屏 | 核心业务指标仪表盘、系统健康监控 |
| 通信 | 专用微信群+对讲机（如有） |
| 排班 | 3班倒（每班8小时），确保7×24覆盖 |
| 食物 | 准备餐食和饮料（长时间值守） |

**6.2 War Room升级运行框架**

```
问题升级路径:

L1: 技术团队自行解决（10分钟内）
  └→ L2: 升级到架构师/技术负责人（30分钟内未解决）
       └→ L3: 升级到项目经理（1小时内未解决，影响业务）
            └→ L4: 升级到项目总监/客户Sponsor（重大故障）
```

---

### 步骤7：Hypercare过渡期

**目标**：上线后30天的强化支持期，快速响应用户问题。

**操作指南**：

**7.1 Hypercare期工作安排**

| 时间段 | 工作重点 |
|-------|---------|
| D+0 ~ D+3 (War Room) | 7×24值守、快速响应、每日3次问题同步 |
| D+4 ~ D+14 (强化支持) | 工作时间值守+非工作时间On-Call、每日问题汇总 |
| D+15 ~ D+30 (过渡期) | 正常工作时间支持、每周问题汇总、开始向运维移交 |

**7.2 Hypercare期KPI**

| KPI | 目标 |
|------|:---:|
| P0问题响应时间 | <15分钟 |
| P0问题解决时间 | <4小时 |
| P1问题响应时间 | <1小时 |
| P1问题解决时间 | <24小时 |
| 用户满意度 | >80分 |

---

### 步骤8：正式移交运维

**目标**：完成从项目团队到运维团队的正式移交。

**操作指南**：

**8.1 运维移交检查清单**

```
移交清单:

□ 运维文档
  □ 系统运维手册
  □ 部署架构图（最终版）
  □ 应急预案
  □ 日常巡检手册
  □ 常见问题处理手册

□ 系统访问
  □ 运维账号和权限移交
  □ 服务器/数据库/中间件访问权限
  □ 监控平台权限

□ 代码与配置
  □ 源代码仓库权限
  □ 配置文件管理
  □ CI/CD配置

□ 知识转移
  □ 运维培训完成（至少2次）
  □ 运维团队跟岗≥1周
  □ 关键问题的模拟演练

□ 合同交接
  □ 运维SLA确认
  □ 工单系统流程确认
  □ 升级路径确认

□ 签署确认
  □ 运维团队签署接收确认书
  □ 项目团队签署交付确认书
```

---

## 三、角色与职责（RACI矩阵）

| 活动 | 项目经理 | 技术Lead | 运维工程师 | 测试Lead | 客户IT |
|------|:---:|:---:|:---:|:---:|:---:|
| 上线方案 | **R/A** | C | C | I | C |
| 环境准备 | I | C | **R/A** | I | C |
| 数据迁移 | I | C | **R** | **C** | C |
| 上线演练 | C | **R** | C | C | I |
| 正式切换 | C | **R** | **R** | C | C |
| War Room | **A** | **R** | C | C | C |
| Hypercare | C | **R** | C | C | C |
| 运维移交 | **R/A** | C | C | I | C |

---

## 四、关键检查点

| # | 检查点 | 通过标准 |
|---|--------|---------|
| CP1 | 上线方案评审 | 方案评审通过，回滚方案可行 |
| CP2 | 预演成功 | 全流程预演1次以上成功完成 |
| CP3 | 上线成功 | 冒烟测试+核心功能验证通过 |
| CP4 | War Room结束 | 48h内无P0问题，P1<5个 |
| CP5 | Hypercare结束 | 连续7天无新增P1问题 |
| CP6 | 运维移交 | 运维团队签署接收确认书 |

---

## 五、估计时长

| 阶段 | 时长 |
|------|:---:|
| 上线方案+准备 | 1-2周 |
| 演练+预演 | 1周 |
| 正式上线 | 1晚（4-8小时） |
| War Room | 2-3天 |
| Hypercare | 30天 |
| 运维移交 | 1-2周 |

---

## 六、输出物清单

1. **上线方案文档（含回滚方案）**（.docx）
2. **上线操作手册(Runbook)**（.docx）
3. **数据迁移方案与验证报告**（.docx）
4. **上线演练记录**（.docx）
5. **War Room值班日志**（.xlsx）
6. **Hypercare问题跟踪表**（.xlsx）
7. **运维移交文件包**（.docx + 操作手册）
8. **系统运维手册**（.docx）

---

> **版本**: V1.0 | **撰写日期**: 2025-07
