DevOps

一、什么是 DevOps

DevOps = Development (开发) + Operations (运维) ,不是一个工具、不是一门技术、不是一款软件,是一套理念、方法论、工作文化与实践集合 ,目标是打破开发团队和运维团队之间的壁垒 ,实现软件快速、稳定、持续、高质量交付。

传统模式痛点

传统 IT 分工:

  • 开发 (Dev):负责写代码、实现功能,希望快速上新功能、频繁发版
  • 运维 (Ops):负责服务器、部署、稳定性、故障,害怕频繁上线,越稳定越好

双方目标天然冲突:开发要快,运维要稳,形成著名的墙(Wall of Confusion)

开发写完丢给运维,运维部署环境各种报错,互相甩锅、上线慢、故障多、迭代周期长

DevOps 核心思想:开发、测试、运维、产品紧密协作,整条软件交付链路打通,共同对线上业务负责

二、DevOps 核心理念

  1. 文化 Culture 最重要一层,优先改变思维。打破部门墙、责任共担、不要 "我的代码、你的服务器",所有人共同对最终线上结果负责。
  2. 自动化 Automation 尽可能把重复工作交给工具:构建、测试、打包、部署、回滚、监控自动化,减少人工操作失误。
  3. 精益 Lean 消除流程浪费,缩短交付周期,小步快跑,不要一次性开发超大版本再上线。
  4. 度量 Measurement 一切可量化:发布频率、故障恢复时长、失败率、部署耗时,用数据驱动改进。
  5. 共享 Sharing 文档、经验、故障复盘、技术方案全员共享,知识透明。

口诀:文化先行、工具落地、流程保障、数据度量、持续优化

三、DevOps 八大能力域

CALMS 是 DevOps 最经典定义,5 个维度

  • C‑Culture 文化:协作、无指责故障复盘、共同担责
  • A‑Automation 自动化:交付流水线自动化
  • L‑Lean 精益:减少等待、减少批量、小增量交付
  • M‑Measurement 度量指标:收集交付、质量、运维数据
  • S‑Sharing 共享:信息透明,知识共享

四、DevOps 完整生命周期

很多人误区:DevOps ≠ CI/CD CI/CD 是 DevOps 最重要工具实践,DevOps 范围更大,覆盖软件全生命周期 完整 DevOps 闭环:规划 → 开发 → 构建 → 测试 → 发布 → 部署 → 运维 → 监控 → 反馈,循环迭代

1. 规划 Plan

产品需求拆分、任务排期、迭代规划 工具:Jira、Trello、飞书项目、禅道

DevOps 提倡小需求、短迭代,避免大版本

2. 开发 Develop

程序员编码、版本控制

  • 代码管理:Git
  • 分支策略:GitFlow / TrunkBased (主干开发,DevOps 最推荐) 主干开发:所有人日常合并到主分支,通过功能开关控制功能是否启用,避免长期独立分支

3. 持续集成 CI

CI:持续集成 含义:多人开发,频繁(每天多次)把自己代码合并到主干仓库,自动做构建 + 单元测试 解决问题:很久才合并一次代码,最后爆发大量代码冲突 流程:代码提交 → 触发流水线 → 拉取代码 → 编译打包 → 自动单元测试 主流 CI 工具:Jenkins、GitLab‑CI、GitHub Actions、Azure DevOps、Tekton

4. 持续测试 CT

自动化测试嵌入流水线

  • 单元测试、接口自动化、UI 自动化、性能测试、安全扫描 不等到最后人工全量测试,代码变更就立刻做自动化校验 工具:JUnit、Postman、Selenium、JMeter、SonarQube (代码质量扫描)

5. 持续交付 CD

CD 第一层含义:持续交付 Continuous Delivery 含义:代码经过 CI + 自动化测试之后,随时可以一键部署到生产环境 代码包时刻处于可上线状态,但是否点发布按钮由人手动决定 持续交付 = 产出随时可部署的软件包

6. 持续部署 CD

CD 第二层含义:持续部署 Continuous Deployment 持续交付的进阶版:全部自动化,通过流水线自动部署生产,不需要人工点击 只有质量足够高、自动化测试覆盖率足够高的团队敢做持续部署
关系总结 CI < 持续交付 < 持续部署

  • CI:代码合并自动构建测试
  • 持续交付:包已经准备好,可随时上线(人工确认上线)
  • 持续部署:全自动直接上生产

7. 运维 Operate

服务上线之后的日常运维工作 环境管理、配置管理、资源调度 工具:Docker (容器打包)、K8s (Kubernetes 容器编排)、Ansible

8. 持续监控 & 反馈 Continuous Monitoring

线上运行状态实时监控,并且把问题快速反馈回开发 监控 4 大类

  1. 基础设施监控:CPU、内存、磁盘
  2. 应用性能监控 APM:接口耗时、异常、报错
  3. 日志监控:程序日志
  4. 用户体验监控 工具:Prometheus+Grafana、ELK (Elasticsearch+Logstash+Kibana)、SkyWalking 反馈闭环:线上出问题 → 告警 → 快速定位 → 开发修复 → 再次走流水线发布

五、DevOps 常用技术栈

阶段 代表工具
需求 & 项目管理 Jira、禅道、TAPD
代码仓库 Git、Gitee、GitLab、GitHub
CI 流水线 Jenkins、GitLab CI、Github Actions
代码质量 SonarQube
制品仓库 (存包) Nexus、Harbor (镜像仓库)
容器打包 Docker
编排部署 K8s(Kubernetes)
配置管理 Ansible
监控告警 Prometheus、Grafana、AlertManager
日志收集 ELK、Loki
APM 链路追踪 SkyWalking、Pinpoint

工具只是载体!没有上面 DevOps 文化,买再多工具也做不成 DevOps

六、4 个经典部署策略

用来保障频繁发布同时保证稳定性

  1. 蓝绿发布 Blue‑Green 线上同时运行两套完全一样环境:蓝 (旧版本)、绿 (新版本)。新版本全部部署在绿环境,验证没问题,流量一次性全部切过去。 优点:回滚极快;缺点:双倍资源成本
  2. 金丝雀发布(灰度发布 Canary) 先切一小部分流量到新版本,观察一段时间,没问题再逐步全量放量 风险最低,企业最常用
  3. 滚动发布 Rolling Update 一台一台服务器逐步升级版本,不停机。K8s 默认策略
  4. 功能开关 Feature Toggle 代码提前合并上线,功能默认关闭;后台配置打开功能,不用重新发版。主干开发必备技术

七、DevOps 和敏捷、SRE 的区别

  1. 敏捷 Agile :偏向开发侧,解决需求迭代、快速交付软件;敏捷只管怎么快速做出软件
  2. DevOps :打通开发 + 运维整条链路,解决软件怎么稳定快速上线、运维;敏捷是 DevOps 基础
  3. SRE 站点可靠性工程 :谷歌提出,偏向运维侧,用软件工程方式做运维,保障线上稳定性;SRE 可以看作 DevOps 运维方向的高级实践

简单一句话:

敏捷:怎么更快做出来 DevOps:怎么做出来并且安全快速上线跑起来 SRE:上线后怎么长期稳定运行

八、DevOps 带来的收益

  1. 缩短版本交付周期,从按月发布 → 按周 / 按天甚至一天多次发布
  2. 减少上线故障,自动化提前发现问题
  3. 故障恢复速度大幅提升
  4. 开发运维矛盾减少,沟通成本下降
  5. 线上稳定性提升,业务响应速度变快
相关推荐
Elastic 中国社区官方博客5 小时前
错误最多的服务运行正常:使用 ES|QL 从日志进行根因分析
大数据·运维·数据库·sql·elasticsearch·搜索引擎·全文检索
迪康coolmu5 小时前
屏幕水印与防拍照落地:从水印类型到泄密溯源的完整配置
运维·网络·安全·网络安全·数据安全
0+1115 小时前
Linux --进程间关系和守护进程
linux·运维·服务器
weixin_403810135 小时前
EasyClick iOS 免越狱自动化脚本怎么写:从环境判断到跑通第一个脚本
运维·ios·自动化
程序猿老A5 小时前
GPU云服务器怎么安装AI
运维·服务器·人工智能
小白的码BUG之路5 小时前
Docker -- No space left on device
运维·docker·容器
Ruiery6 小时前
Linux 6.6内核 CPU 深度解析(八):percpu 变量 — 每个 CPU 一份数据,无锁访问
linux·运维·服务器
程序猿老A6 小时前
云服务器怎么配置视频存储?
运维·服务器·音视频
程序员老陆7 小时前
Docker 命令全景指南:从镜像构建到生产运维
运维·docker·容器
Είναι η κοπέλα7 小时前
WSL2 部署 AI 开发环境:内核级 Linux + GPU 直通
linux·运维·人工智能