Skip to main content
☘️ Septvean's Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

发布系统

「发布系统(发布方式 / 发布平台 / 发布架构)的完整归纳总结」,从 传统 -> 自动化 -> 云原生 -> 大规模互联网 全覆盖,适合作为运维/平台/架构知识体系。

发布系统 = 代码 / 制品 -> 目标环境 -> 安全、可控、可回滚地上线

一、按“技术形态”分类(最常见)

1️⃣ 手工发布(最原始)

方式

  • ssh 登录服务器
  • git pull / scp / rsync
  • 手动 restart 服务

特点

  • 简单
  • 风险极高
  • 不可审计、不可回滚

适用

  • 个人项目 / 非生产环境

生产环境强烈不推荐

2️⃣ 脚本化发布

方式

  • Shell / Python 脚本
  • rsync + systemctl
  • 自定义发布脚本

特点

  • 有一定标准化
  • 依赖人工触发
  • 脚本质量决定稳定性

适用

  • 小团队
  • 传统服务器架构

3️⃣ CI/CD 发布系统(主流)

常见系统

  • Jenkins
  • GitLab CI/CD
  • GitHub Actions
  • Gitea Actions

流程

代码提交
 -> 构建
 -> 测试
 -> 制品生成
 -> 发布
 -> 健康检查
 -> 回滚(失败)

特点

  • 自动化
  • 可审计
  • 可回滚
  • 支持多环境

适用

  • 中大型团队
  • 微服务

目前最常见

二、按“发布策略”分类(重点)

4️⃣ 滚动发布(Rolling Update)

特点

  • 逐台更新
  • 不停机
  • 发布慢但稳定

适用

  • Kubernetes Deployment
  • 无状态服务

5️⃣ 蓝绿发布(Blue-Green)

特点

  • 新旧两套环境
  • 一次切换
  • 回滚极快

适用

  • 重要核心系统
  • 对稳定性要求高

6️⃣ 金丝雀发布(Canary)

特点

  • 小流量验证
  • 灰度发布
  • 风险可控

适用

  • 用户量大
  • 新功能风险高

7️⃣ A/B 发布

特点

  • 多版本并行
  • 对比效果
  • 常用于产品实验

三、按“部署载体”分类(非常重要)

8️⃣ 传统服务器发布系统

方式

  • 发布到物理机 / 虚拟机
  • systemd 管理服务

常见方案

  • Jenkins + SSH
  • Ansible
  • SaltStack

9️⃣ 容器发布系统

方式

  • Docker 镜像
  • 容器运行

特点

  • 环境一致
  • 易回滚

🔟 Kubernetes 发布系统(云原生)

常见工具

  • kubectl apply
  • Helm
  • Kustomize
  • Argo CD
  • Flux

特点

  • 声明式
  • 自动回滚
  • 与资源调度深度结合

云原生主流

四、按“发布控制模式”分类

1️⃣1️⃣ Push 模式(推送式)

特点

  • CI 主动部署
  • Jenkins -> 服务器/K8S

优点

  • 简单直接

缺点

  • CI 权限大
  • 安全风险高

1️⃣2️⃣ Pull 模式(拉取式 / GitOps)

代表

  • Argo CD
  • Flux

特点

  • 集群主动拉配置
  • Git 即真相源(Single Source of Truth)

优点

  • 更安全
  • 易审计
  • 易回滚

K8S 推荐

五、按“发布内容”分类

1️⃣3️⃣ 代码发布

  • 后端代码
  • 前端代码

1️⃣4️⃣ 配置发布

  • 配置变更
  • Feature Toggle
  • ConfigMap / Secret

⚠️ 配置发布 ≠ 代码发布

1️⃣5️⃣ 数据库发布

  • SQL 变更
  • 表结构变更
  • 数据迁移

常见工具

  • Flyway
  • Liquibase
  • 自研 DB 发布系统

六、按“系统形态”分类(企业级)

1️⃣6️⃣ 自研发布系统

特点

  • 深度定制
  • 权限细
  • 与公司流程绑定

常见能力

  • 工单
  • 审批
  • 多环境
  • 风险评估
  • 自动回滚

1️⃣7️⃣ 发布平台 / DevOps 平台

典型能力

  • CI/CD
  • 环境管理
  • 制品库
  • 权限审计
  • 发布记录
  • SLA 统计

七、发布系统核心能力清单(评判标准)

一个合格的发布系统必须具备:

  • 多环境(dev/test/stage/prod)
  • 发布策略(滚动/蓝绿/金丝雀)
  • 权限控制(RBAC)
  • 审计日志
  • 失败自动回滚
  • 健康检查
  • 灰度能力
  • 配置与代码解耦
  • 支持数据库变更
  • 支持紧急回滚

总结(非常重要)

发布系统的进化路径:

手工
 -> 脚本
 -> CI/CD
 -> 容器化
 -> Kubernetes
 -> GitOps
 -> 平台化 / 自研