前言
DevOps
是一种方法论,一种文化,一套工具。
DevOps
主要关注以下内容:
- 开发团队与运维团队的紧密沟通&合作
- 开发流程&运维流程的自动化
- 敏捷开发
CI
&CD
一幅图
上面这幅图包含了两个流程:DEV
& OPS
。
这两个流程互相首尾相连,形成了一个新的流程DevOps
。
DEV
:Development,软件开发OPS
:Operations,IT 运维DevOps
:DEV
+OPS
plan -> code -> build -> test ----> DEV (开发流程)
↑ ↓
monitor <- operate <- deploy <- release ----> OPS (运维流程)
计划 -> 编码 -> 构建 -> 测试
↑ ↓
监控 <- 运维 <- 部署 <- 发布
可以把 DevOps
看做 开发、运维、质量保障 三者的交集:
这意味着 DevOps
需要同时兼顾这三者,是 既要、又要、还要的关系。
文化
传统的软件开发模式如 瀑布式开发,将设计、开发、测试、部署分开,交给不同的团队完成,一个阶段结束了再开始下一个阶段。这种模式无法快速响应变化。
因此有人提出了敏捷开发
,希望缩短这个过程,快速响应变化;不过敏捷开发
没有考虑到部署这个环节。
DevOps
包括了部署,将快速响应变化、快速交付软件推向了极致。
整个过程,需要开发团队与运维团队紧密沟通、站在对方的角度思考问题、自动化流程、提高每个环节的效率。
在 2019 年 O’Reilly Velocity
大会上,来自 Flickr
的两名员工发表了一个名为“每天部署 10+ 次”演讲:
10+ Deploys Per Day: Dev and Ops Cooperation,这个演讲对 DevOps
的发展产生了重大的影响。
敏捷开发
敏捷开发强调沟通、合作、快速响应变化、快速交付可用的软件;
DevOps
起源于敏捷开发的思想。
敏捷开发宣言 英文版:
中文版:
CI & CD
自动化 是成功应用 DevOps
的核心原则。
CI
& CD
是实现 自动化 的核心组件。
CI
:Continuous Integration
,持续集成CD
:Continuous Delivery
,持续交付
通常都采用 微服务 架构 + 容器 部署方式。
工具链
实现 DevOps
的工具非常多,主要是帮助提高每个环节的效率。
现在也有很多公司自研 DevOps
平台。
这是简单的:
这是复杂的:
DevSecOps
DevSecOps = Development + Security + Operations
除了 DevOps
,还考虑了 安全。
OWASP
OWASP: Open Web Application Security Project
OWASP
是一家非盈利组织,致力于提高软件安全。
OWASP
项目 Top 10 Web Application Security Risks 非常著名,列出了 Top 10 Web 应用的安全问题。
以下是 2017 vs 2021 年 的对比图:
参考资料
- https://en.wikipedia.org/wiki/DevOps
- https://www.zhangshilong.cn/work/21044.html
本文完。