混沌:软件工程新趋势?
找份工作,工作内容就是不断破坏东西,然后让它们更好地运转?听起来像是每个好奇心重的六岁小孩的梦想,但又确实是 DevOps 向 DevSecOps 转型过程中的一种新兴软件工程趋势。其宗旨就是通过测试系统极限,来提升任何情况下的安全及性能。
这种趋势就是混沌工程。其前提是,即使在一切正常的时候,现代分布式网络的本质仍旧意味着,系统中存在固有的混沌元素,可导致不可预知的结果。
混沌工程是主动型漏洞管理的一种形式,在受控环境中测试网络在最极端情况下的表现。其理论基础是:当你做好了应对最坏情况的准备,就能轻松应付常规性能问题。
在受控环境中放任混沌肆虐,可使工程师运用收集来的数据设计出更健壮、更富弹性的系统。而且,听起来就很有趣。
Netflix 为什么选择混沌
混沌工程这一概念成型于 2010 年,作为此前 Netflix 所遭严重宕机事件的应对之策。Netflix 在宕机事件后即从单一供应商内部部署网络,转型至基于云的全球分布模式。那次宕机事件源于该公司主数据库之一崩溃,造成公司掉线三天,数百万客户无服务可用。
在一小时宕机时间即可导致企业平均 10 万美元以上损失的时代,就算掉线五分钟也是不可接受的。宕机不仅影响企业声誉和收益,还会令企业网络更易遭受攻击和数据泄露。
为准备转向去中心化全球网络,Netflix 团队创建了 Chaos Monkey (混世猴子)工具。该工具用于在非预期时间和位置上制造随机系统性故障,以确定系统能否抗住极端情况。其中逻辑在于,如果网络连这种极端情况都能对付,那肯定就能处理不那么极端的情况。
自 Netflix 将混沌作为一种软件工程 DevOps 工具,并把他们的 “猴子” 放到了开源社区,将近七年的时间里,混沌工程已经成为 IBM、谷歌和亚马逊等公司的标准测试过程。
混沌实战:混沌工程的原则
混沌工程可简单比作以网络为对象的接种防疫。人体接种失活疫苗后,身体会自然产生抗体,抵御此后可能的感染。网络安全发展至今,有些方法开始利用机器学习预测、调适和对抗内部及外部威胁。混沌工程可与这些先进网络安全方法紧密协作。
混沌工程原理
混沌工程的目标之一,是通过直接解决特定谬论,纠正不熟悉分布式网络的那些人的偏见。
这些谬论是:
- 网络可靠且安全
- 零延迟
- 带宽是无限的
- 拓扑是不变的
- 管理员只有一个
- 传输开销为零
- 网络是同质的
混沌工程实验旨在解决全球网络分布中范围和结果的不确定性,发现可能影响性能和安全的系统性漏洞。绝大多数混沌工程实验遵循以下四步:
1. 定义指征正常系统性能的可衡量结果 “稳定状态”。
2. 假设该稳定状态将在控制和挑战两种环境中延续。
3. 引入模拟现实世界问题的变量,比如服务器崩溃、恶意软件注入、网络掉线和硬件故障等。
4. 通过对比控制组和挑战组中网络行为的差异,试图推翻原本稳定状态将延续的假设。
实验在受控设置下进行,以便了解分布式网络行为的更多特征,寻求在发生系统性故障之前就修正问题。良好混沌实验的核心,是可产生非预期变量的一系列创意。在试图证伪先前假设的过程中,一次改变一个重要变量,打破陈规。
有很多种方式可以创建新的潜在破坏性变量。很多人都会用 VPN 加密互联网连接,但未必考虑过使用其地理位置功能隐藏自身 IP 地址。该软件就通过以中间计算机连接互联网,来冒充其他国家的用户,以此实现隐藏自身 IP 地址的目的。关键点就在于尝试打破稳定状态。造成服务器崩溃。关闭虚拟机。给网络制造的复杂情况越多,你对系统安全与性能的信心越足,而且人工智能的发展也可以生成相当复杂的各种场景。
为确保混沌工程在理想状况下执行,产生出可靠数据,以下原则是必须遵循的。
1. 围绕基于可测输出而非系统特征的稳定状态行为,形成一种假设。这将证明系统可抵御不可预测的压力因素,而不仅仅是确认其如何运作。
2. 变动现实世界事件,包含源自硬件故障、软件漏洞及其他未必造成故障的事件,比如瞬时流量峰值或操作增加。
3. 在生产中实验,以便囊括真实流量。这可确保测试的真实性与相关性,让结果比仅仅依靠流量及压力模拟来得更具现实意义。
4. 运用自动化技术,安排和执行持续实验。自动化测试已编入混沌工程标准流程,目的是节省人工实现所耗费的时间和开销。
5. 最小化冲击范围,提升控制与减少网络中断。
企业运用混沌工程的优势
混沌条件下实现测试比单纯实验室分析提供的好处更多。技术人员能获得有关系统性漏洞的更深洞见,可减少有害事件及后果,缩短上市时间。业务人员能主动缓解盈利损失,减少停工时间,启动更有意义的 IT 和工程培训项目。
最重要的是,开发人员、工程师和业务人员可以支持更可靠的服务开发与交付,通过确保持续的服务可用性而增加客户满意度。
想要保护联网系统,在整体性能与网络安全缓解计划中融入混沌工程标准值得一试。
结语
网络越复杂,分布范围越广,软件开发人员和工程师就越想拥有适应各种情况的有效测试协议。
引入混沌工程,可以在不中断关键系统功能的情况下,更好地应对非预期事件。这将提升几乎所有挑战性环境中的整体性能并增强系统安全性。
相关文章
- 5条评论
- 馥妴邶谌2022-06-02 03:51:03
- 。混沌工程是主动型漏洞管理的一种形式,在受控环境中测试网络在最极端情况下的表现。其理论基础是:当你做好了应对最坏情况的准备,就能轻松应付常规性能问题。在受控环境中放任混沌肆虐,可使工程师
- 冬马忆囚2022-06-02 05:50:06
- ix 为什么选择混沌混沌工程这一概念成型于 2010 年,作为此前 Netflix 所遭严重宕机事件的应对之策。Netflix 在宕机事件后即从单一供应商内部部署网络,转型至基于云的全球分布模式。那次宕机事件源于
- 边侣同尘2022-06-02 05:44:01
- 人工实现所耗费的时间和开销。5. 最小化冲击范围,提升控制与减少网络中断。企业运用混沌工程的优势混沌条件下实现测试比单纯实验室分析提供的好处更多。技术人员能获得有关系统性漏洞的更深洞见,可减少有害事件及后果,缩短上
- 性许闻呓2022-06-02 03:31:37
- 型漏洞管理的一种形式,在受控环境中测试网络在最极端情况下的表现。其理论基础是:当你做好了应对最坏情况的准备,就能轻松应付常规性能问题。在受控环境中放任混沌肆虐,可使工程师运用收集来的数据设计出更
- 痴妓咽渡2022-06-02 11:33:03
- 找份工作,工作内容就是不断破坏东西,然后让它们更好地运转?听起来像是每个好奇心重的六岁小孩的梦想,但又确实是 DevOps 向 DevSecOps 转型过程中的一种新兴软件工程趋势。其宗旨就是通过测试系统极限,来提升任何情况下的安全及性能。这种