本文最初发布于 DevOps.com。并进行了更新与修订。
与「区块链」、「大数据」、「数字颠覆」类似,「DevOps」这一术语是当前大型组织IT部门中另一个流行的术语。
许多企业(正确地)认识到,软件开发生命周期作为一种更精确的流程,能够与业务目标紧密结合,实现更清晰的工作流,并促进开发团队与运维团队之间的协作。DevOps本质上是"敏捷"开发,它使所有成员都能成长,持续创新,并随时准备应对现代业务对快速部署的需求。对安全专家而言,这无疑是重大利好。通过在更早阶段将安全机制融入流程,既能降低漏洞修复成本,又能规避未来可能发生的重大灾难。
问题在于,真正成功实施DevOps的企业寥寥无几。若缺乏全公司范围内的充分支持、培养和理解,整个项目转眼间就会回到原点。众所周知,这属于"战争自不必说"的项目类型。
那么,问题出在哪里呢?这确实是个值得探讨的话题。我认为在DevOps实践中,存在若干方法能显著促进更顺畅的转型。有效的实施计划绝非仅靠炫目的新工具、花哨的头衔或团队会议就能达成。虽然过程未必轻松,但通过持续修正失败的策略(或从一开始就采用正确方法),长期来看能大幅减轻痛苦。最终,这将催生出更高质量、更安全的软件产品。
让我们来分解一下:
请松开「敏捷」围裙的系带。
存在一种误解,认为组织必须在敏捷与DevOps之间二选一,开辟一条道路后就永远不能回头。
关键在于,开发流程在将两者融合考虑并实施时才能发挥最佳效能。DevOps并非对敏捷开发的重新发明,而是敏捷开发的延伸。若过度依赖流程,往往会导致脱轨——要么完全背离敏捷,要么彻底背离敏捷。
敏捷开发支持跨职能团队原则,将设计师、测试人员和开发人员从项目初期就紧密结合,并确保整个项目周期保持开放的沟通渠道。其目标在于消除孤岛式交付并减少重复工作——这两点同样是DevOps流程的优势所在。然而DevOps更进一步,通过整合系统、安全与运维能力,构建出坚实可靠的端到端技能体系,其终极目标是向客户交付完整且可运行的软件产品。
在向更注重DevOps的流程转型这一不可避免的进程中,孤岛式开发带来的风险可能再度加剧。许多情况下,原有的敏捷团队虽已开始协作,但由于安全与运维环节尚未深度融入系统,各方对具体实施方式、工作重点及整体目标仍缺乏共识。
DevOps若没有明确的目标、跨部门的入职流程以及与所有相关方的直接沟通,便无法有效运作。虽然需要经过需要谨慎变更管理的协调期,但让所有人达成共识——即DevOps功能带来的增强——这仅仅是成功的一半。
DevOps作为流程的一部分,开始着重强调安全最佳实践,清晰阐述其步骤,从而弥合安全团队与其他成员之间的隔阂(这点值得庆幸)。正如前文所述,要让开发人员从一开始就实现安全编码仍需时日,但成功实施DevOps方法论,将为在开发团队内部构建安全技能奠定坚实基础。
自动化并非万能(也并非最安全)。
DevOps方法论的另一大特征是软件开发流程的高度自动化。持续集成与持续交付(CI/CD)原则构成了这一理念的基础,正如您所料,其实现高度依赖于工具支持。
这些工具堪称卓越,确实如此。它们能够相对无缝地管理代码仓库、测试、维护及存储等各个环节,从而为软件交付流程带来前所未有的速度。
然而,机器人终将夺走我们所有工作并囚禁人类——尽管这尚未成为现实。过度依赖工具与自动化会大幅增加错误概率。扫描与测试无法检测所有问题,代码可能未经检查就投入使用,最终导致质量(更不用说安全性) 将面临巨大风险。攻击者只需找到一个后门便可窃取数据。若在质量管理和安全管理中忽视人为因素,可能招致灾难性后果。
「快乐媒介」旨在协调人们的平衡,同时也是工具。工具应当作为可靠团队的助手,助力项目达成目标。它需要做到以下几点:
- 请为熟悉所选的DevOps工具链预留充足的时间。
- 聚焦于高效协作(以及工具如何支持协作)
- 无论是基于技能/知识的,还是基于工具的,我们都能处理流程中的所有差距。
简而言之,仅靠“工具升级”来期待最佳结果是不够的。
DevOps并非流行语,而是文化。贵公司的成长是否正在推进?
变更管理即使在最佳时机也充满挑战。对未知的恐惧可能阻碍最优秀的团队成员提升技能、拓展视野。
看,仅仅喊着"搞DevOps"就让运维团队搬个办公桌,并不能让流程神奇地运转起来。这会让很多人感到困惑,让资深团队成员心生不满。传达期望至关重要,"逐步推进"同样关键。DevOps既是开发方法论,也是文化运动。团队必须贯彻跨部门协作的思维方式。
什么是优秀的DevOps文化?
- 不仅是领导者,个人也获得将自身专业知识融入流程的权限。
- 团队间开放、真诚且相互尊重的沟通
- 在开发流程中融入质量与安全这一总体目标,需由每个人承担责任。
- 关于DevOps在业务中的定义、路线图以及各人的职责方法/内容/理由,全体成员都持有相同的认知。
多年来,我一直强调在开发团队中建立积极的安全文化的重要性,而DevOps也不例外。
要实现安全最佳实践,确保发现的漏洞数量减少,并让团队关注数据保护的重要性,必须具备适当的工具、知识和支持。在DevOps中,需要建立实现积极变革的文化基础。这意味着必须让每个人都能理解自己的职责、价值、期望、项目整体目标以及流程步骤。
掌握这些了吗?太棒了。那么现在让我们转变策略,进一步强化安全防护,将DevSecOps打造为软件卓越的终极蓝图。