devops
简单来说,DevOps(Development 和 Operations 的缩写)不仅是一项技术,更是一种文化、实践和工具的结合体。
它的核心目标是打破开发人员(Dev)和运维人员(Ops)之间的壁垒,让软件的构建、测试、发布到运行变得更加快速、可靠。
1. 核心定义:从“对立”到“融合”
在传统的模式中,开发和运维通常是孤立的:
- 开发(Dev): 负责写代码,追求“快”,不断增加新功能。
- 运维(Ops): 负责系统稳定,追求“稳”,往往对频繁的变更感到压力。
DevOps 的出现将两者整合,形成一个闭环,让团队对产品的整个生命周期(从构思到上线运行)共同负责。
2. DevOps 的五大支柱 (CALMS 模型)
业界常用 CALMS 来衡量一个团队的 DevOps 成熟度:
| 维度 | 说明 |
|---|---|
| Culture (文化) | 强调团队协作、分担责任,不再互相“甩锅”。 |
| Automation (自动化) | 尽可能减少人工干预,通过自动化脚本完成测试和部署。 |
| Lean (精益) | 消除流程中的浪费,进行小步快跑、高频迭代。 |
| Measurement (测量) | 监控所有数据(如部署频率、失败率),用数据驱动决策。 |
| Sharing (共享) | 共享工具、知识和成功的经验,透明化沟通。 |
3. 核心实践:CI/CD
这是 DevOps 落地最关键的技术环节:
- 持续集成 (CI - Continuous Integration): 开发人员频繁地将代码合并到主分支,每次合并都会触发自动化的构建和测试,确保新代码不会破坏原有功能。
- 持续交付/部署 (CD - Continuous Delivery/Deployment): 通过自动化的流水线,将测试通过的代码自动发布到生产环境或预发布环境。
4. 常见的 DevOps 工具链
DevOps 并不是指某一个软件,而是一系列工具的组合:
- 项目管理: Jira, Trello
- 代码仓库: Git (GitHub, GitLab)
- CI/CD 流水线: Jenkins, GitLab CI, GitHub Actions
- 容器化: Docker, Kubernetes (K8s)
- 配置管理: Ansible, Terraform (基础设施即代码)
- 监控告警: Prometheus, Grafana, ELK Stack
5. 为什么企业需要 DevOps?
- 响应更快: 缩短从需求到上线的时间(Time to Market)。
- 质量更高: 自动化测试减少了人为失误。
- 更稳定: 频繁的小规模更新比一次性大规模发布风险更低,且更易回滚。
一句话总结: DevOps 是让软件开发不再像“工厂流水线”那样死板,而是像“有机整体”一样快速进化。
核心对比
| 项目 | 类型 | 主要作用 | 常见用途 |
|---|---|---|---|
| containerd | 容器运行时 | 真正负责“运行容器” | 被 Docker / K8s 调用 |
| Docker | 容器平台 | 构建 + 运行容器 | 本地开发最常用 |
| Podman | 容器引擎 | 类似 Docker,但无 daemon | Linux 服务器 |
| Kubernetes | 编排系统 | 管理大量容器和机器 | 生产集群 |