发布系统
「发布系统(发布方式 / 发布平台 / 发布架构)的完整归纳总结」,从 传统 -> 自动化 -> 云原生 -> 大规模互联网 全覆盖,适合作为运维/平台/架构知识体系。
发布系统 = 代码 / 制品 -> 目标环境 -> 安全、可控、可回滚地上线
方式
- ssh 登录服务器
- git pull / scp / rsync
- 手动 restart 服务
特点
- 简单
- 风险极高
- 不可审计、不可回滚
适用
- 个人项目 / 非生产环境
❌ 生产环境强烈不推荐
方式
- Shell / Python 脚本
- rsync + systemctl
- 自定义发布脚本
特点
- 有一定标准化
- 依赖人工触发
- 脚本质量决定稳定性
适用
- 小团队
- 传统服务器架构
常见系统
- Jenkins
- GitLab CI/CD
- GitHub Actions
- Gitea Actions
流程
代码提交
-> 构建
-> 测试
-> 制品生成
-> 发布
-> 健康检查
-> 回滚(失败)
特点
- 自动化
- 可审计
- 可回滚
- 支持多环境
适用
- 中大型团队
- 微服务
✅ 目前最常见
特点
- 逐台更新
- 不停机
- 发布慢但稳定
适用
- Kubernetes Deployment
- 无状态服务
特点
- 新旧两套环境
- 一次切换
- 回滚极快
适用
- 重要核心系统
- 对稳定性要求高
特点
- 小流量验证
- 灰度发布
- 风险可控
适用
- 用户量大
- 新功能风险高
特点
- 多版本并行
- 对比效果
- 常用于产品实验
方式
- 发布到物理机 / 虚拟机
- systemd 管理服务
常见方案
- Jenkins + SSH
- Ansible
- SaltStack
方式
- Docker 镜像
- 容器运行
特点
- 环境一致
- 易回滚
常见工具
- kubectl apply
- Helm
- Kustomize
- Argo CD
- Flux
特点
- 声明式
- 自动回滚
- 与资源调度深度结合
✅ 云原生主流
特点
- CI 主动部署
- Jenkins -> 服务器/K8S
优点
- 简单直接
缺点
- CI 权限大
- 安全风险高
代表
- Argo CD
- Flux
特点
- 集群主动拉配置
- Git 即真相源(Single Source of Truth)
优点
- 更安全
- 易审计
- 易回滚
✅ K8S 推荐
- 后端代码
- 前端代码
- 配置变更
- Feature Toggle
- ConfigMap / Secret
⚠️ 配置发布 ≠ 代码发布
- SQL 变更
- 表结构变更
- 数据迁移
常见工具
- Flyway
- Liquibase
- 自研 DB 发布系统
特点
- 深度定制
- 权限细
- 与公司流程绑定
常见能力
- 工单
- 审批
- 多环境
- 风险评估
- 自动回滚
典型能力
- CI/CD
- 环境管理
- 制品库
- 权限审计
- 发布记录
- SLA 统计
一个合格的发布系统必须具备:
- 多环境(dev/test/stage/prod)
- 发布策略(滚动/蓝绿/金丝雀)
- 权限控制(RBAC)
- 审计日志
- 失败自动回滚
- 健康检查
- 灰度能力
- 配置与代码解耦
- 支持数据库变更
- 支持紧急回滚
发布系统的进化路径:
手工
-> 脚本
-> CI/CD
-> 容器化
-> Kubernetes
-> GitOps
-> 平台化 / 自研