什么是 DevOps?
在传统的软件开发模式中,开发人员为新功能、产品、错误修复等编写大量代码,然后将他们的工作交给运营团队进行部署,通常是通过自动票务系统进行部署。运营团队在其队列中收到该请求,测试代码并准备投入生产--这一过程可能需要数天、数周或数月。在这种传统模式下,如果运营部门在部署过程中遇到任何问题,团队就会向开发人员发回一张票据,告诉他们该如何修复。最终,在这种反反复复的情况得到解决后, 工作负载 被推入生产。
这种模式使软件交付成为一个漫长而分散的过程。开发人员常常把运营视为拦路虎,拖慢了他们的项目进度,而运营团队则觉得自己是开发问题的垃圾场。
DevOps 通过在整个软件交付流程中联合开发和运营团队来解决这些问题,使他们能够更早地发现和修复问题,自动进行测试和部署,并缩短上市时间。
DevOps 不是
- 开发团队和运行团队的组合:仍然有两个团队,他们只是以一种沟通、协作的方式开展工作。
- 它有自己独立的团队:没有所谓的 "DevOps 工程师"。尽管有些公司在尝试过渡到 DevOps 文化时,可能会任命一个 DevOps 团队作为试点,但 DevOps 指的是一种开发人员、测试人员和运营人员在整个软件交付生命周期中通力合作的文化。
- 一种工具或一套工具:虽然有一些工具可以很好地与 DevOps 模式配合使用,或有助于促进 DevOps 文化,但 DevOps 归根结底是一种策略,而不是一种工具。
- 自动化:虽然自动化对 DevOps 文化非常重要,但它本身并不能定义 DevOps。
定义 DevOps
在 DevOps 模式中,开发人员不是先编写庞大的功能集,然后再盲目地交给运营部门进行部署,而是经常交付少量代码进行持续测试。开发和运营团队不再通过票务系统沟通问题和请求,而是定期会面、共享分析结果并共同负责端到端的项目。
CI/CD 管道
DevOps 是一个持续集成和持续交付(或持续部署)的循环,又称 CI/CD 管道。CI/CD 管道将开发和运营团队整合在一起,通过实现基础架构和工作流程自动化以及持续测量应用程序性能来提高工作效率。看起来是这样的

- 持续集成 要求开发人员每天多次将代码集成到存储库中,以便进行自动测试。每次签入都由自动构建进行验证,使团队能够及早发现问题。
- 持续交付(不要与持续部署混淆)是指 CI 管道是自动化的,但代码在生产中实施之前必须经过人工技术检查。
- 持续部署 让持续交付更进一步。代码不需要人工检查,而是通过自动测试并自动部署,让客户即时获得新功能。
DevOps 与安全
DevOps 存在的一个问题是,安全问题经常被忽视。开发人员行动迅速,工作流程自动化。安全小组是一个独立的团队,开发人员不想因为安全检查和请求而放慢速度。因此,许多开发人员在部署时没有通过适当的安全渠道,难免会犯下有害的安全错误。
为了解决这个问题,组织正在采用 DevSecOps。DevSecOps 采用了 DevOps 背后的理念,即开发人员和 IT 小组应在整个软件交付过程中密切合作,而不是各自为政,并将其扩展到安全领域,将自动检查集成到整个 CI/CD 管道中。这就解决了安全似乎是外力的问题,使开发人员能够在不影响数据安全的情况下保持速度。