10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

AWS 云上混沌工程实践之对照实验设计篇

  • 2019-09-30
  • 本文字数:3229 字

    阅读完需:约 11 分钟

AWS云上混沌工程实践之对照实验设计篇

上一周,笔者有幸受邀参与了QCon 2019北京大会的混沌工程专场,和与会者分享了AWS云上混沌工程实践中对照实验的设计方法。特此在本专栏回顾这一场的分享内容,以飨读者。现场有感而发画了下面这个混沌工程的小漫画:


“如果你不提早发现和解决问题(引入混沌工程实验),最后问题会来(周末/半夜)解决你”。



图 1 混沌工程带来的变化


我们在启动篇从混沌工程的发展历程出发,分析了社区对混沌工程的理解并不是一蹴而就而是循序渐进,以此得到了第一个重要结论:


结论 1 :“并不是只有研发实力突出的大型互联网公司才能实践混沌工程”。


可行性评估篇明确了混沌工程的过去、当前和未来目标(实现韧性系统,如图 2 所示),为了帮助不同类型的公司来进行实践混沌工程,我们提出了混沌工程的可行性评估模型。



图 2 混沌工程的过去和未来


因此,我们得到了第二个重要的结论:


结论 2 :“也许很多公司目前仍处在第三象限(实验技术成熟度低、公司接纳指数低),但只要根据可行性评估模型中的逐项要求和未来发展的路线图,迭代推进和持续改进,我们都可以从混沌工程实践中获得收益。”


接下来的问题便是,混沌工程实验要怎么做,具体的设计方法是什么?

混沌工程实验:一个持续性迭代的闭环体系


图 3 混沌工程实验的实践流程


如图 3 所示,完整的混沌工程实验是一个持续性迭代的闭环体系,从初步的实验需求和实验对象出发,通过实验可行性评估,确定实验范围,设计合适的观测指标、实验场景和环境,选择合适的实验工具和平台框架;建立实验计划,和实验对象的干系人充分沟通,进而联合执行实验过程,并搜集预先设计好的实验指标;待实验完成后,清理和恢复实验环境,对实验结果进行分析,追踪根源并解决问题,并将以上实验场景自动化,并入流水线,定期执行;之后,便可开始增加新的实验范围,持续迭代和有序改进。


下面我们会深入讨论有关混沌工程实验的准备事项:


  • 实验可行性评估

  • 观测指标设计与对照

  • 实验场景和环境的设计

  • 实验工具和平台框架选型(限于篇幅,未完待续)

实验可行性评估

可行性评估篇提供了这样一个混沌工程实验的可行性评估模型,从多个维度对实验技术的成熟度做了定性分析。此处的实验可行性评估,依照这个可行性评估模型,会针对具体的实验需求和实验对象进行细致评估。常见的一个形式是对照“可行性评估问题表”,对实验对象的干系人进行访谈。可行性评估问题表的内容会包含以下几个方面:


  • 架构抵御故障的能力:通过对实验对象的架构高可用性的分析和评估,找出潜在的系统单点风险,确定合理的实验范围。

  • 实验指标设计:评估目前实验对象判定业务正常运行所需的业务指标、应用健康状况指标和其他系统指标。

  • 实验环境选择:选择实验对象可以应用的实验环境:开发、测试、预生产、生产。

  • 实验工具使用:评估目前实验对象对实验工具的熟悉程度。

  • 故障注入场景及爆炸半径:讨论和选择可行的故障注入场景,并评估每个场景的爆炸半径。

  • 实验自动化能力:衡量目前实验对象的平台自动化实施能力。

  • 环境恢复能力:根据选定的故障注入场景,评估实验对象对环境的清理和恢复能力。

  • 实验结果整理:根据实验需求,讨论确定实验结果和解读分析报告的内容项。

观测指标设计与对照

观测指标设计


观测指标的设计是整个混沌工程实验成功与否的关键之一。最新的调研报告“Chaos Engineering Observability: Bringing Chaos Experiments into System Observability”指出在进行混沌工程实验过程中,系统可观测性已成为一种“强制性功能”,良好的系统可观测性会给混沌工程实验带来一个强有力的数据支撑,为后续的实验结果解读、问题追踪和最终解决提供了坚实的基础。


以下是常见混沌工程实验的观测指标类型:


  • 业务性指标:价值最大,探测难度最大

  • 应用健康指标:反映应用的健康状况

  • 其他系统指标:较易获取,反映基础设施和系统的运行状况


以 Netflix 为例,早在 2008 年 Netflix 起步流媒体,手动追踪数百个指标,全靠人工来检测问题。 这种方法适用于数十台服务器和数千台设备,但不适用于未来的数千台服务器和数百万台设备。最终 Netflix 找到了一个可以反映业务状况、用户参与度的指标:每秒流视频启动次数 SPS (stream-starts-per-second)。



SPS 指标示例比较(红色=当前周,黑色=前一周)


SPS 模式通常是比较规则的,受到假日和事件等外部影响会有所变化。上图描绘的就是 SPS 随时间变化的波动情况,可以看出,它有一个稳定的模式,每天 SPS 峰值发生在晚上,谷值发生在清晨。这是因为人们习惯于在晚餐时间看电视节目。假期时,白天的观看次数增加,因为有更多的空闲时间在 Netflix 上观看节目。

观测指标对照

如果我们将过去一周的波动图放在当前的波动图之上,就像上图中当前的图线是红色,上一周的图线是黑色,以求找出其中的差异。由此,我们可用“受 SPS 影响”或“不影响 SPS”来衡量业务的状况。此外,由于 SPS 随时间的变化可以预期,所以我们可用一周前的 SPS 波动图作为稳定状态的模型,并通过使用预期 SPS 级别与实际 SPS 级别来衡量业务的可用性。Netflix SPS 指标的这种特性,也提醒我们应以观测指标的稳定状态进行对照。


不过可行性评估中,我们发现有很多的用户还是无法定义一个合适的业务指标,如无法准确定义一个稳定状态,那么我们也可以退而求其次,使用多个指标进行联合分析来对照。具体的联合分析方法包括:静态阈值、指数平滑、双指数平滑、贝叶斯检测、马尔可夫链蒙特卡罗方法(MCMC)、鲁棒主成分分析(PCA)等等,后面我们可以专门来详细讨论。

实验场景和环境的设计

实验场景和环境的设计要努力遵循以下三大设计目标:


  • 在生产环境运行实验

  • 持续自动化运行实验

  • 最小化实验场景的“爆炸半径”

实验场景设计

以下是亚马逊 AWS 云上常见的实验场景:


故障注入场景具体描述
依赖型故障AWS 托管服务异常:ELB/S3 / DynamoDB/Lambda,…
主机型故障EC2 实例异常终止,EC2 实例异常关闭,EBS 磁盘卷异常卸载,容器异常终止,容器异常关闭,RDS 数据库实例故障切换,ElastiCache 实例故障切换,…
操作系统内故障CPU、内存、磁盘空间、IOPS占满或突发过高占用,大文件,只读系统,系统重启,熵耗尽,…
网络故障网络延迟,网络丢包,DNS 解析故障,DNS 缓存毒化,VIP 转移,网络黑洞,…
服务层故障不正常关闭连接,进程被杀死,暂停/启用进程,内核奔溃,…
请求拦截型故障异常请求,请求处理延迟,…


这些场景的实施能力,依赖于实验工具和平台框架的选型,后面我们会专门来深入讨论。

实验环境设计


实验环境的不同,带来不同的业务风险。生产环境的业务风险最大,开发环境的业务风险最小,其他依次类推。我们会建议用户在生产环境上进行混沌工程实验,当然前提是这些实验场景和工具已经在开发/测试和预生产环境得到了验证。当然在生产环境上进行混沌工程实验也不是强制的,用户可以选择适合自己的推进节奏,逐步向生产环境靠拢。因为实验越接近生产环境,从结果中学到的越多。同时,为了体现实验对照的效果,在生产环境进行的混沌实验可以通过真实生产流量分支的方式,组建控制组和对照组,以此区分故障注入的影响,从一定程度上控制了爆炸半径。对于非生产环境的混沌工程实验,可采用模拟生产流量的方式,尽量和生产流量相似,来验证实验场景和工具的可靠性。


综上,本文是混沌工程专栏的第三篇,首先我们回顾了专栏前两篇中的重要结论,由此引申出“如何进行对照实验设计”这个实施性问题,并从实验可行性评估、观测指标设计与对照、实验场景和环境的设计三个维度,深入分析和讨论了混沌工程实验的对照设计原则和方法,后续我们还会针对特定专题进行剖析。


作者介绍:


黄帅


亚马逊 AWS 专业服务团队云架构咨询顾问。负责企业级客户的云架构设计和优化、DevOps 组织咨询和技术实施。在软件研发领域有多年架构设计和运维、团队管理经验,对 DevOps、云原生微服务治理框架、容器化平台运维、混沌工程实践等有深入的研究和热情。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/aws-cloud-chaos-engineering-experiment-designs-contract/


2019-09-30 15:201124
用户头像

发布了 1929 篇内容, 共 155.6 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

企业内网IM软件怎么选?

BeeWorks

即时通讯 IM 私有化部署

企业IT可观测痛点破解!嘉为蓝鲸全栈智能可观测中心V4.5:全景观测拓扑+业务黄金指标洞察一站式解决

嘉为蓝鲸

AIOPS 可观测 可观测平台 智能可观测平台 IT运维监控

网站DNS解析失败的原因有哪些?

国科云

出海遇冷?用这几招快速点燃跨境电商第一波流量

Wolink

电商 出海企业 海外营销推广 沃链Wolink 达人营销

CST的超材料光子晶体---60度周期布里渊区

思茂信息

cst CST软件 CST Studio Suite

海量数据如何“安家”?一文读懂哈希、范围和一致性哈希三大分片策略

poemyang

分布式 分布式系统

DOLANSUN多兰笙--多兰笙:高端羊绒新机遇

跑一跑

羊毛

嘉为蓝鲸CTeam敏捷协同平台:自动化研发流程覆盖多角色,降本提效双丰收

嘉为蓝鲸

研发效能 研发协同 研发项目管理 敏捷协同平台 敏捷协同

Flink和StreamPark自定义UDF函数的使用

天翼云开发者社区

MySQL flink

一个MES项目,是软件重要还是实施重要?

万界星空科技

生产管理系统 mes 数字化工厂 万界星空科技 制造业工厂

打造弹性 TCP 服务:基于 PoW 的 DDoS 防护

俞凡

golang 架构

Flink 与Flink可视化平台StreamPark教程(开篇)

天翼云开发者社区

大数据 flink

理论到实战,高可用架构踩坑说明书

京东科技开发者

DeepSeek冲击(含本地化部署实践)

京东科技开发者

告别手动低效!嘉为蓝鲸WeOpsV5.25:AI日志检索+专业监控视图,双料提升运维体验

嘉为蓝鲸

智能运维 IT运维 一体化运维 运维效率 一体化智能运维平台

为什么说BeeWorks适合成为企业承载业务的“超级底座”?

BeeWorks

即时通讯 IM 私有化部署

数据库高频面试十问

王中阳Go

数据库 面试题

开源浪潮激荡,智驱能源革新:MyEMS 如何破局重塑能源管理新范式

开源能源管理系统

开源 开源能源管理系统

区块链 DApp 开发技术方案

北京木奇移动技术有限公司

dapp开发 区块链开发 软件外包公司

WeOps认证中心上线啦:三步获取电子证书,CA/CE/CD认证助力运维成长

嘉为蓝鲸

智能运维 weops 技术认证 一体化运维 运维人员

嘉为蓝鲸CMeas研发效能洞察平台:3秒精准定位研发效能报表,筛选+置顶双助力

嘉为蓝鲸

研发效能 仪表板 研发效能度量 研发效能洞察平台 研发效能报表

私有化部署Dify构建企业AI平台教程

测吧(北京)科技有限公司

我如何用Prompt工程将大模型调教成风控专家

京东科技开发者

数字孪生项目外包开发的流程

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

RFID技术没有改变世界,但它正在重塑细节

斯科信息

RFID技术 RFID系统 RFID通道机 RFID设备 RFID模块

转转客服IM系统的WebSocket集群架构设计和部署方案

JackJiang

网络编程 即时通讯 IM

3DXML格式是什么?用什么软件可以打开?

在路上

cad cad看图 CAD看图王

京东商品详情API参数构造指南:必填参数与自定义字段配置

tbapi

京东API 京东商品数据采集 京东商品详情API 京东数据采集 京东数据分析

3DXML格式文件用什么软件查看?

在路上

cad 3dxml预览

[成都信息工程大学主办]2025年第五届人工智能与智能制造国际研讨会(AIIM 2025)

搞科研的小刘

人工智能 投稿 智能制造 学术会议 国际研讨会

海外社交媒体分析如何助力舆情监测网站迭代升级

沃观Wovision

社交媒体 沃观Wovision 舆情监测系统 海外舆情监测

AWS云上混沌工程实践之对照实验设计篇_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章