DevOps 简介
DevOps 是 “Development(开发)” 和 “Operations(运维)” 的组合,旨在通过“文化、自动化、精益、度量和共享”(CALMS 原则)来打通开发与运维之间的壁垒,实现快速、高质量地交付软件及持续迭代。它强调开发、测试、运维团队之间的紧密协作和持续改进,以缩短交付周期、降低风险、提高软件质量并提升团队协作效率。
在传统的软件生命周期里,一般会经历以下阶段:
- 需求评审
- 系统设计
- 开发
- 测试
- 灰度发布(也称“灰度”或“试运行”阶段)
- 正式上线
- 版本迭代
而 DevOps 思想贯穿于整个生命周期,在每一个环节都强调持续集成、持续交付、监控与反馈,以实现快速迭代和高效交付。

image-20220406135157139.png
DevOps 在软件生命周期中的作用
-
需求评审阶段
- DevOps 团队会共同参与需求讨论,并对可交付性、可运维性、自动化测试需求等进行初步评估。
- 提前发现潜在的需求风险,并与后续的实现、部署、运维方案紧密结合。
-
系统设计阶段
- 运维团队与开发团队共同参与架构设计,确保基础设施与应用架构能够高效配合(如容器化、微服务架构、云环境等),从设计上支持后续的自动化部署和可扩展性。
- 关注监控、日志和可观测性设计,为上线后的运维和监控提供可行性方案。
-
开发阶段
- 通过 持续集成(CI,Continuous Integration) 工具(如 Jenkins、GitLab CI、GitHub Actions 等)将代码提交后自动触发构建与测试,大大缩短开发测试反馈周期。
- 保障代码质量与统一规范,如通过代码扫描、单元测试、集成测试等自动化测试手段及时发现问题。
-
测试阶段
- 在持续集成管道中融入自动化测试(包括单元测试、集成测试、UI 测试、性能测试、安全扫描等),提升测试效率,减少人为干预。
- 借助 持续交付(CD,Continuous Delivery/Deployment) 的理念,在测试通过后可将应用部署到预生产或灰度环境进行验证。
- DevOps 强调“左移测试”(Shift Left Testing),让测试更早、更频繁地发生在开发阶段,减少后期返工。
-
灰度发布阶段
- 通过 蓝绿部署 或 金丝雀发布 等灰度策略,将新版本先在小范围环境或用户群体中上线,持续监控指标和用户反馈。
- 发现问题后可快速回滚并修复,降低对全量用户的影响。
-
正式上线阶段
- DevOps 通过自动化部署脚本或容器编排工具(如 Kubernetes),将应用快速、准确地部署到生产环境。
- 确保系统的扩容、缩容以及高可用策略(如滚动升级、AB 测试)能够顺畅进行。
-
版本迭代阶段
- DevOps 的核心之一是“持续改进”。团队通过监控与日志收集系统(如 ELK、Prometheus、Grafana 等)对性能、可用性、用户反馈进行数据分析,定位问题、优化系统。
- 将改进需求快速纳入下一次迭代,形成“需求 –> 开发 –> 测试 –> 部署 –> 反馈 –> 改进”的持续循环。
DevOps 常见实践与工具
-
持续集成/持续交付(CI/CD)
- 常见工具: Jenkins、GitLab CI、CircleCI、GitHub Actions 等
- 目标: 实现自动化构建、测试、部署,提高交付速度和质量。
-
基础设施即代码(IaC)
- 常见工具: Terraform、Ansible、Chef、Puppet 等
- 目标: 用代码管理和部署服务器、网络和其他基础设施,提高环境一致性并减少人为操作失误。
-
容器化与编排
- 常见工具: Docker、Kubernetes、Docker Compose 等
- 目标: 将应用和依赖打包到容器中,借助编排工具统一管理部署和扩容。
-
微服务架构
- 将单体应用拆分为多个小型可独立部署与扩缩的服务,降低耦合度,方便迭代和维护。
- 通过服务网格(Service Mesh,如 Istio)增强微服务间的可观测性与安全性。
-
监控与日志
- 常见工具: Prometheus、Grafana、ELK(Elasticsearch + Logstash + Kibana)、Jaeger 等
- 目标: 在软件运行过程中实时监控业务指标、系统资源使用和应用日志,通过可视化手段及时发现并解决问题。
-
安全与合规
- DevSecOps 是将安全测试、漏洞扫描、合规审查等环节前置,融入到软件交付流水线中,以减少后期安全风险。
-
协作与文化
- 除了工具和流程外,DevOps 更加关注团队文化与协作。开发、测试、运维紧密配合,透明化问题和进度,强化知识共享与持续改进。
DevOps链路
随手画的,大概流程是这样。中小型公司其实可以跳过很多步骤,自己做也能操作全部流程

image.png
DevOps 带来的价值
-
加快交付速度
- 自动化流水线减少了重复性工作和手动干预;
- 更短的迭代周期,让新特性和修复更快上线。
-
提高交付质量
- 自动化测试与部署工具大幅降低出错率,减少不可预期的风险;
- 配合灰度发布、蓝绿部署等策略,降低故障影响面。
-
降低运营成本
- 基础设施即代码、容器化技术及自动化脚本减少了传统运维的人力成本和环境配置成本;
- 弹性伸缩和自动化监控避免资源浪费。
-
提升团队协作与满意度
- 开发与运维角色协作更紧密,减少互相推诿;
- 通过持续反馈和改进,团队成员积累经验,个人技能与团队能力不断提升。