Files
nexus/wiki/concepts/Deployment-vs-Release.md

103 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Deployment vs Release (部署与发布分离)"
tags: [devops, continuous-delivery, feature-management, release-management]
aliases: [Decoupled Deployment and Release]
created: 2026-04-25
---
# Deployment vs Release (部署与发布分离)
**Deployment vs. Release** 是 [[Feature Flag]] 实现的核心理念:代码**部署**Deploy到生产环境与功能对用户**可见**Release是两个独立的事件。
## Definition
> "Traditional deployments are all-or-nothing: you push code and everyone gets it immediately. This is why deployments are scary and why teams deploy at 2 AM 'just in case.'"
> "Deploy whenever you want, release when you're ready."
## Aliases
- Decoupled Deployment and Release
- 部署发布分离
## 核心对比
| 维度 | 传统方式(部署=发布) | Feature Flag部署≠发布 |
|------|---------------------|--------------------------|
| 代码到达生产 | 与用户可见同步 | 提前到达,用户不可见 |
| 回滚能力 | 需要重新部署 | 配置变更,秒级 |
| 发布时机 | 必须与部署同步 | 任意时刻可发布 |
| 团队压力 | 2AM 部署"以防万一" | 白天从容发布 |
| 实验能力 | 低(全量或无) | 高(灰度、可控放量) |
## 生命周期对比
### 传统方式
```
开发 → 测试 → 合并 → 部署 → 发布(全量)
部署=发布
```
### Feature Flag 方式
```
开发 → 测试 → 合并 → 部署 → 发布控制 → 渐进放量
↑ ↑
代码到达 用户可见
生产环境 由开关控制
```
## 关键价值
### 1. 降低部署风险
> "Feature flags change this. You can deploy code to production without releasing it to users."
代码可以在生产环境中就绪,但功能对用户保持隐藏,直到团队确认质量。
### 2. 加速交付
团队不再需要等待"完美时机"发布功能。代码就绪即可部署,功能发布由业务决定。
### 3. 赋能团队
- 产品:随时决定发布节奏
- 工程:随时部署,无需等待发布窗口
- 运营:渐进放量,数据驱动决策
### 4. 重新定义 RTO
当部署≠发布时恢复Rollback不再是回滚部署而是关闭 Feature Flag。
## 与 [[CI-CD-Pipeline]] 的关系
部署与发布的分离重构了 CI/CD 流程:
| 阶段 | 传统 CI/CD | Decoupled CI/CD |
|------|-----------|-----------------|
| Build | 构建产物 | 构建产物 |
| Test | 单元/集成测试 | 单元/集成测试 |
| Deploy | 部署到 prod | 部署到 prod用户不可见 |
| Release | — | Feature Flag 控制 |
| Monitor | 部署后监控 | 渐进放量期间监控 |
| Rollback | 重新部署旧版本 | 关闭 Feature Flag |
## 风险模型转变
| 维度 | 传统模型 | Decoupled 模型 |
|------|----------|----------------|
| 风险集中点 | 部署时刻 | 功能发布时刻 |
| 风险暴露范围 | 全量用户 | 当前放量比例 |
| 应急响应 | 小时级回滚 | 秒级开关 |
| 团队心态 | 防御性(害怕部署) | 进攻性(敢于实验) |
## Related Concepts
- [[Feature Flag]] — 实现部署与发布分离的核心机制
- [[CI-CD-Pipeline]] — Decoupled Deployment 是现代 CI/CD 的重要理念
- [[Progressive Rollout]] — 部署与发布分离使渐进放量成为可能
- [[Kill Switch]] — 发布控制权的极端体现(紧急关闭)
- [[RTO]] — 部署与发布分离将 RTO 从部署回滚转向配置变更
- [[Micro-Recovery]] — 部署与发布分离使 feature 级别恢复成为可能
## Sources
- [[sources/rto-vs-rpo-key-differences-for-modern-disaster-recovery.md]]