第11章 圈内人
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在软件系统上进行实验是更好地理解其行为的一种有价值的方法,这一概念本身就意味着承认在设计系统时无法全面地规定其行为。大多数现代软件工程师都明白这一点;编写软件和理解软件如何工作(以及如何可能失败)是两码事。
开发和保持对系统行为的理解取决于人们修订或重新校准其行为 "心智模型 "的能力。1生产系统中的实验过程(以及事故后分析)可以被看作是这种重新校准或 "心智模型更新 "的一个富有成效的机会。
本书的大部分内容都是关于混沌工程的方法、细微差别、细节和观点。本书的存在以及该主题在当前软件工程和运营对话中的出现令人兴奋,而且很可能会继续发展。它提出了一个概念,即可以通过更复杂、更成熟的方式建立信心。
在软件世界中,关于如何在混沌工程的背景下实现更多自动化的新想法和争论层出不穷,这也是意料之中的事。这种趋势是可以理解的(因为构建 "自动化 "本质上是软件工程师存在的理由)。在这种情况下提出的 ,可能没有意识到在一个主要是为......自动化的不确定行为提供信心的过程中引入更多自动化的讽刺意味。
正如《混沌工程原理》(Principles of Chaos Engineering)一书所言:"..:2
混沌工程是一门对系统进行实验的学科,目的是建立对系统在生产中承受动荡条件能力的信心。
在现实世界中,"建立信心 "是什么 ?
-
人们对自信的内容、时间和方式都很敏感。
-
像实验这样的过程,在特定实验的目标和细节、何时和如何进行实验的理由以及如何解释实验结果等方面,也都取决于情境。
这些都是我们需要探索的领域,以便理解 "人在回路中 "的真正含义。
实验的原因、方式和时间
混沌工程学为软件工程师提供的 方法非常简单:在各种条件和参数变化的情况下,增加对系统行为的信心,而这些条件和参数变化可能会超出 乐观的"幸福轨迹"。
为什么
的工作方式使该方法与其他方法和技术相得益彰,这些方法和技术用于建立对软件行为方式的信心,例如:
-
各种形式的测试(如单元测试、集成测试、功能测试等)
-
代码审查策略(针对同一代码变更收集多角度意见)
-
向生产环境的 "暗 "部署3
-
按组别(如只针对员工)或按百分比(如客户流量的 50%)"提升 "新功能
其中一些方法将其 "目标 "视为代码片段中的函数、相互影响的包含代码组,或相互连接的子系统或组件。在任何情况下,工程师都可以通过这些方法建立信心,其中包括通过混沌工程(Chaos Engineering)进行的实验。
这些建立信心的技术通常与相对现代的 "持续交付 "范式相关联。4,5将混沌工程作为一种可靠的方法纳入这一范例是合理的。6
有些实验不是因为负责实验 "目标 "的团队缺乏信心,而是因为其他各方缺乏信心。例如,设想一个团队想要对其服务做出重大改变,需要向利益相关者展示某种形式的尽职调查或 "生产准备就绪"。通过这种方式,实验可以作为一种隐性验证,证明已经做出了特定的努力。
如何进行
正如 在前面的论述中提到的,这些技术都取决于具体情况,也就是说,在特定情况下,这些技术可能更有效,也可能不那么有效。
例如,在没有单元测试或功能测试的情况下,某些代码变更可能需要通过代码审查进行更严格的检查。或者在特殊时期(可能是每天的流量高峰期,或者是电子商务网站的节假日旺季),可以考虑对新代码路径采用更保守的 "升级 "速度。数据库模式更改、搜索索引重建、低层网络路由选择以及 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access