本文最初发表于 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 成为实现卓越软件的终极计划。