混沌工程实验的变化与优先级
1. 软件系统为何如此复杂
现代软件系统极其复杂。即使是最小的软件产品,也可能有数百甚至数千名工程师参与开发。一个服务系统可能由数千甚至数百万个软硬件组件构成。
这些组件的供应商众多,比如硬件供应商英特尔、三星、西部数据等,网络和电源设备供应商思科、Arista、戴尔、APC等,还有提供云平台的微软和亚马逊等。这些直接或间接的依赖关系相互交织,形成了一个复杂的黑盒,而我们的系统就构建在这个黑盒之上。
1.1 意外复杂情况的示例
作者早期参与潜艇声纳设备算法开发时,虽然潜艇环境相对封闭,涉及的计算机、传感器和用户数量有限,且对每个组件都进行了详细的审查和严格的实验室测试,但首次在实际船上测试时仍状况百出。
原本预计只需几天的测试,最终花费了40天。遇到了许多未曾预料到的问题,如天线到信号处理器的200多个连接全部错误,需要重新调整。这是因为在规划时只关注了信号处理的数学和计算机科学问题,而忽略了现实世界中的不良布线、极端温度和用户输入质量等因素。
这一经历表明,混沌工程的一个高级原则是在实验中引入现实世界的各种事件变化。如果当时花时间探索系统内外的现实影响,而不仅仅是为理想情况做规划,可能测试会更顺利。
1.2 简单系统只是冰山一角
以作者为妻子艺术学校创建的小型网站为例,该网站托管在Azure上,它依赖于IIS、Windows、IaaS VMs、Hyper - V等众多软件组件,以及开发和部署机器的硬件、数据中心的电源和网络设备等。此外,还依赖于CDN、DNS、全球骨干网络、客户选择的浏览器和互联网服务提供商等。
即使是这样一
超级会员免费看
订阅专栏 解锁全文
73

被折叠的 条评论
为什么被折叠?



