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

3.8 KiB
Raw Blame History

title, tags, aliases, created
title tags aliases created
Deployment vs Release (部署与发布分离)
devops
continuous-delivery
feature-management
release-management
Decoupled Deployment and Release
2026-04-25

Deployment vs Release (部署与发布分离)

Deployment vs. ReleaseFeature 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 模型
风险集中点 部署时刻 功能发布时刻
风险暴露范围 全量用户 当前放量比例
应急响应 小时级回滚 秒级开关
团队心态 防御性(害怕部署) 进攻性(敢于实验)
  • Feature Flag — 实现部署与发布分离的核心机制
  • CI-CD-Pipeline — Decoupled Deployment 是现代 CI/CD 的重要理念
  • Progressive Rollout — 部署与发布分离使渐进放量成为可能
  • Kill Switch — 发布控制权的极端体现(紧急关闭)
  • RTO — 部署与发布分离将 RTO 从部署回滚转向配置变更
  • Micro-Recovery — 部署与发布分离使 feature 级别恢复成为可能

Sources