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. 线上稳定性提升,业务响应速度变快
相关推荐
hzxpaipai1 小时前
杭州网站运维|企业官网上线前技术检查清单:SEO、GEO、安全、服务器与备份
运维·服务器·nginx·安全
优化Henry1 小时前
关于“星链”互联网系统的几点认识
运维·服务器·网络·笔记·学习·信息与通信
沫璃染墨1 小时前
《从零入门Linux系统篇(二十八):文件篇·一——Linux为什么“万物皆文件”:从C语言文件流到系统调用》
linux·运维·服务器·开发语言·c++·文件
其实防守也摸鱼3 小时前
推荐一个自动化教育SRC漏洞挖掘系统--AutoHunter
运维·开发语言·人工智能·学习·安全·web安全·自动化
九硕智慧建筑一体化厂家3 小时前
智慧建筑高效管控!楼宇自控系统赋能新能源园区智能运维
运维·人工智能·笔记·智慧城市
咯哦哦哦哦4 小时前
linux so库(arm)对比分析
linux·运维·arm开发
星野川崎20610 小时前
电商多店运维:云机24小时挂机频繁掉线、账号无故风控深度原因分析及解决方案
大数据·运维·服务器·云计算·电商
不灭的程序员阿澄12 小时前
在飞牛 NAS 上用 Docker 运行 DeepSeek Harness
运维·docker·容器
Elastic 中国社区官方博客12 小时前
让大模型思考,让小模型执行:在 Elastic Workflows 中拆分 LLM 成本
大数据·运维·数据库·人工智能·elasticsearch·ai