自去年 7 月CrowdStrike/Microsoft大规模中断以来的几个月里,我们了解到了很多问题所在。一家大型网络安全提供商为其广泛部署的企业端点保护产品推出了一个有缺陷的更新。尽管(错误地)批准发布,但该更新导致全球的 Windows 系统崩溃,并阻止它们从重启中自然恢复。短短几分钟内,全球850 万台设备就出现了可怕的“蓝屏死机”现象。许多设备会持续数小时。
我们可以吸取这次事件的几个重要教训,但让我们集中讨论其中两个。
首先,即使是善意的软件更新也可能导致灾难性的中断,从而中断业务连续性。在这种情况下,全球数千家组织不得不停止运营。金融公司、政府机构和航空公司受到的影响尤其严重,数千个航班被取消,无数商业交易中断。仅财富 500 强企业的直接损失就将超过 50 亿美元。
第二个重要教训:主动、全面的测试仍然无可替代。随着企业软件堆栈变得越来越复杂和相互依赖,我们不能假设任何新的更新或版本发布(无论是内部产品还是组织可能使用的数百个第三方组件)都可以安全部署。然而,我们可以做的是确保主动、自动化的测试嵌入到变更管理工具中。这不会消除软件冲突。但有效实施后,持续测试 (CT) 可确保当更新失败时,您早在影响用户之前就知道它。
自动化的前景和风险
在技术行业之外使用“DevOps”一词,大多数人都不知道你在说什么。然而,持续集成/持续交付 (CI/CD) 模型的出现以及通过持续软件更新不断扩展产品功能的能力是革命性的。根据独立的 DevOps 调查,采用最先进 CI/CD 实践的组织比没有采用 CI/CD 实践的组织部署频率高 208 倍,交付周期快 106 倍。
但与此同时,软件变更的自动化就像驾驶一级方程式赛车。速度越快,一旦出现问题,后果就越严重。简而言之,软件交付速度越快,实施有效的安全措施就越重要。首先要进行主动、全面的测试,该测试与 DevOps 工具链紧密集成,并作为 CI/CD 管道的一部分自动执行。
不幸的是,没有单一、标准化的方法来实施 CI/CD,不同的组织采用的方法也大不相同。在很多情况下,DevOps 的测试元素没有得到应有的重视。测试用例不够全面,或者没有尽早或频繁地进行——尤其是考虑到遗漏严重问题的弊端。归根结底,您处理 CT 的方式可能会成就或破坏您的 CI/CD 实施。
持续测试内部
有效的 CT 框架将测试直接嵌入到交付管道中,并在整个软件生命周期(从早期开发到发布)中自动调用测试用例。这样的框架采用了更大的测试池,并且比标准 QA 测试更频繁地执行测试。它根据预定义要求建立多个通过/失败数据点。并且它与 CI/CD 管道完全协调和集成,理想情况下是通过基于云的实验室和可以根据需要弹性扩展的测试基础设施。
当组织采用持续自动化测试时,他们可以立即获得有关新软件更新或版本发布的反馈,并更好地识别潜在的冲突和风险。通过构建 CI/CD 的 CT 组件,组织可以:
尽早发现问题:大规模中断不仅仅是由恶意攻击造成的。正如 CrowdStrike 事件所表明的那样,简单的错误(在本例中,用于执行验证检查的工具出现故障)可能会造成灾难性的后果。当组织拥有大量可重复的测试,并在整个交付管道中自动重复执行时,他们可以在投入生产之前就发现大多数问题。
提高 IT 系统的稳定性和安全性:当组织实现自动化测试时,他们获得了监控性能和更准确地检测潜在问题的新功能。例如,通过捕获网络性能和安全态势的基线 KPI,他们可以快速识别这些 KPI 在变化后何时出现偏差。
加快交付时间:自动化测试,尤其是通过按需实验室即服务 (LaaS) 和测试即服务 (TaaS) 解决方案实施时,可以立即提高敏捷性。组织可以在任何时间和地点扩展测试资源,并更快地推送更新,而不会产生不必要的风险。
提高整体效率:有效实施 CT 的组织不仅行动更快,而且工作效率更高,质量和合规性也更好。他们还可以通过避免监管罚款和诉讼、在开发周期早期发现问题来节省大量成本。
设想有效的持续测试 (CT)
有多少家公司就有多少种 DevOps 框架,因此每个 CI/CD 管道都是独一无二的。尽管如此,有效的 CT 实施具有共同的核心要素。最成功的软件组织采用的测试是:
全面:有效的 CT 流程始于大量可重复的测试,并自动在多个短周期内执行这些测试。按照这种思路,组织应该能够快速启动可能部署软件的各种操作系统,以验证影响和质量。
受控:组织应仅在充分控制的情况下部署更新,以确保所有更改都经过授权、有意图且按预期执行。该原则应适用于软件堆栈的所有第三方元素以及内部产品,以减轻供应链风险。
持续性:自动化测试应贯穿整个软件交付流程,一旦实施,就应通过主动测试进行验证。通过在实际负载下使用模拟流量测试补丁和版本更新,组织可以在实施后阶段更快地发现问题,以免影响用户和客户。
展望未来
大多数企业软件每年更新两到三次的时代已经一去不复返。我们正式进入了一个勇敢的新 DevOps 世界,组织可以不断为用户和客户提供更具创新性的软件功能。但如果我们想充分实现这种新发现的敏捷性带来的好处,我们别无选择,只能确保我们尽可能安全、负责任地实施软件交付管道。确保您没有忽视 CI/CD 的 CT 方面。