我们将探讨敏捷技术如何在发现和应对 CrowdStrike 争议等问题中发挥至关重要的作用。
译自5 Agile Techniques To Help Avoid a CrowdStrike-Like Issue,作者 David Eastman。
敏捷软件开发方法的一个被低估的优势是,它能够量化“如果”问题的价值,而不会影响项目的连贯性。也就是说,敏捷拥有大量内置系统来检查项目周围的环境并质疑当前的做法。
这篇文章探讨了敏捷的技术和仪式如何在发现和应对可能造成严重损害的问题方面发挥至关重要的作用——正如最近的CrowdStrike 争议所示。
1. 外部环境问题
“外部环境问题”是一个参考,在科幻小说中流行起来,指的是我们无法立即理解的事件带来的威胁:
“外部环境问题或 OCP 是对特定群体(组织、社会、文化或文明)经验完全陌生的挑战。由于 OCP 是前所未有的事情,因此最终结果是不可预测的。”
你可能听说过许多其他表达类似意思的术语;从“未知的未知”到“黑天鹅”。我们最近从 CrowdStrike 事件中看到的部分原因就是其中之一——安全软件导致大规模停机,而没有恶意行为者。
通过推动项目的边界,即使只是基于直觉或经验,也会产生见解。
代码中存在着各种各样的错误,它们从未造成问题。我们只注意到那些被环境揭示的错误。我们在开发过程中的工作是减少错误隐藏的表面积,并找出合理的流程来修复出现的任何问题。
敏捷非常擅长为团队可能最初没有关注的问题提供一个安全的游乐场来环顾项目。它引导人们对各个领域的兴趣,而不会失去对资源的追踪。
根据定义,组织中的任何人都不会花时间考虑他们没有经验的事情的可能结果。然而,通过推动项目的边界,即使只是基于直觉或经验,也会产生见解。即使无法预见问题的初始形式,也往往可以预见次级问题。
敏捷提供的是技术和框架,它们都重视这些技术。你或你的团队可以单独采用这些技术,而无需遵循其他相关实践,但正是这些技术在敏捷团队中随着时间的推移而得到加强。
2. 时间盒(Timebox)
这是一种正式的方式,用于限制子团队检查一个略微偏离轨道的问题的时间,同时将其保持在冲刺内——团队同意完成任务的固定时间段——并接受其他任务将在之后立即被接手。
它正确地假设,如果一个解决方案需要深入研究一个深奥的问题,那么这个解决方案可能不适用于项目的时限。这是一种很好的方式来理解,没有哪个软件是“最终解决方案”,而仅仅是目前情况下,在现有资源下做事的正确方式。如果情况发生变化,可以在以后重新审视这个问题。
3. 回顾(Retrospective)
它通常被视为仅仅是一个周结束仪式,但实际上它是一种检查先前承诺的保证的重要方式。承诺在刚刚过去的冲刺中解决但尚未解决的动作,表明需要重新评估。它还让团队成员有机会倾听正在酝酿的风暴并进行干预。
如果缺乏明智的 Scrum Master 或团队领导的管理,这些回顾可能会过于接近毛主义的“斗争会”。让团队中的一名成员质疑另一名成员是健康的,但也可能造成摩擦。有时结果只是清单上的一个额外项目,但有时它会触发对整个项目的重大反思。
特权代码
让我们先花点时间回顾一下CrowdStrike问题的形式,虽然我们目前还不知道全部细节,但它仍然在我们脑海中。在大多数操作系统(如 Windows)中,您有在“用户空间”运行的程序,与在“内核空间”运行的代码相反。只有特权代码可以在内核中运行,而用户空间中运行的程序代码(或线程)必须礼貌地向内核请求信息,并等待结果。为了高效工作,安全软件需要在内核中运行,这样它就可以实时查看内部状态。我们知道内核进程何时在 Windows 中检测到错误:您会看到臭名昭著的蓝屏死机,操作系统会停止运行以保护自身免受进一步损坏。
微软会对任何想要在内核中运行在 Windows 上的第三方系统进行一系列测试,并认证其是否通过。由于微软是一个庞大而缓慢的企业,您可以想象认证需要一些时间。如果您的工作是作为一家安全公司来发现 0 日攻击,然后立即将响应传播到您被付费保护的所有机器,那么等待 Bob 从假期回来进行一些测试是不可扩展的。
因此,为了绕过这个问题,安全公司可以从其经过认证的已安装代码中加载额外的伪代码,以考虑瞬时变化。
到此为止。如果您在安全团队工作,并听到关于这种解决方案在多个回顾中不断积累的信息,您会介入吗?这是一个很好的例子,它展示了一个完全合理的解决方案,但仍然存在缺陷。(此视频很好地介绍了内核代码领域。)
4. Brown Bags
这些通常只是简短的演示——通常在午餐时间——团队成员可以选择一个主题与团队讨论。这些用于帮助为即将到来的更改或编码挑战做好准备。
这些将团队成员对某个领域的真正兴趣或经验与当前项目的相关性联系起来。我记得做过一个关于正则表达式的主题。
让对某个领域充满热情的人实际运行它并不总是合适的,但将好奇心传播到整个团队中始终是一件好事。
5. Sprint Zero
这是通常建立研究峰值以及项目成功所需的其它定制系统的 Sprint。
人们研究的一些最聪明的事情是为测试环境伪造服务的方法。这些方法的副产品是迫使开发人员更多地了解他们正在伪造的真实服务,以及在整个服务生命周期中节省时间。
结论
如果您尝试从严重事件倒推——问“我们如何避免这种情况?”——您很快就会忘记现实生活不会倒退,并制定出几乎无关紧要的计划。简而言之,您将与过去的战争作斗争。即使您对敏捷没有兴趣,也要考虑如何在项目中构建检查路径的方法,而不会阻碍您的旅程。