如何将AI能力与大数据技术结合,助力数据分析治理等工作的效率大幅提升,优化大数据引擎的性能及成本? 了解详情
写点什么

都在聊混沌工程,它的落地实践你了解多少?

  • 2021-09-29
  • 本文字数:3689 字

    阅读完需:约 12 分钟

都在聊混沌工程,它的落地实践你了解多少?

因果关系是生活的某种基本原则。

 

体现在开发者的世界大抵就是:如果你不提早发现和解决问题,最后问题就会在周末/半夜来解决你。

 

无数个被叫醒的深夜、被工作“召回”的周末、以及因系统故障而付出的惨痛代价已让越来越来开发者和管理者意识到实施混沌工程的重要性。

 

说到混沌工程,并非这两年的新概念。早在十多年前 Netflix 在亚马逊云科技上发布的一款名叫 chaos monkey(混沌猴子) 的服务,混沌工程便已经诞生了。那么,为什么直到近几年,混沌工程才开始受到广泛关注呢?在《亚马逊云科技在混沌工程的探索与实践》Tech Talk 中,资深开发者布道师黄帅就这个问题进行论述,并详细介绍了实践混沌工程的难点和思路,以及如何利用合适的开发工具对混沌工程进行落地。

 

是时候聊聊混沌工程了

 

为什么是现在,而不是十年前?黄帅从我们当前面临的痛点开始聊起,并将企业和开发者当前面临的痛点归结为以下五点。

 

痛点 1: 系统规模增长带来的复杂性

 

随着系统规模的增长,其复杂性类似于心脏拓扑结构。每个节点都是一个服务,错综相连,整个软件的生命周期极度依赖治理手段和能力。企业对于系统进行观测及持续维护的难度也大大增加了。

 


痛点 2: 快与稳的煎熬

 

DevOps 、微服务、敏捷开发的广泛使用,使软件的迭代和新功能的发布越来越快速。如何快步前进过程中,保持稳健,成了企业面临的新难题。

 

痛点 3: 小步快跑的疑问

 

每次变更很小,提高发布频次,一定能够降低风险的结论值得商榷。软件版本的快速迭代通常发生在软件质量还没有收敛到比较好状态的前期,而且存在不同服务迭代节奏的差异。在这种情况下,心脏拓扑结构中哪怕很微小的增量变动都可能产生级联故障,从而对整个系统造成重大影响。

 

痛点 4: 稳定性测试的新难度

 

心脏拓扑结构的复杂依赖性,给集成测试、回归测试和浸泡测试都带来新的挑战。此外,整个新版本的发布过程也是保证系统稳定性的重要环节,因此流水线上的每一个环节都需要进行验证,给稳定性测试带来新的难度。

 

痛点 5: 排障追踪的困境

 

当系统的复杂性达到一定程度,版本更迭的速度又非常快的状态下,很多时候我们碰到生产问题,要找出背后的根因非常困难。这中间可能是因为,健康仪表盘吐出了不准确的服务状态,水平扩展明明要借助冗余性获得更好的可用性却因毒化效应完全失效,告警系统因自身的稳定性故障产生大量的误报等等。

 

以上五大痛点的本质都可以用故障宿命论来解释:人类设计的系统变得愈发复杂,逐渐超出了人类的认知范围。近年来,随着分布式系统、敏捷开发、云原生微服务架构等云上现代化技术的广泛应用,开发的效率和便捷性大幅提升,但是这些创新的背后隐藏的问题是传统稳定性治理手段的落后。

 

软件可以用新技术实现弯道超车,系统复杂性引起的故障该如何解决?复杂性科学研究者、Cynefin 认知框架的提出者戴夫·斯诺登认为——理解复杂系统的唯一方法,就是与之互动。快速迭代中,谁都无法做到所有变化背后的考量全部记录下来,系统是我们设计和构建的,但系统行为我们却无法准确预测,所以我们必须要在实际的运行环境中,通过实验探索的方式(行为预期、事件注入、系统观测和更新假设),扩展我们对系统行为的认识,这便是最好的“互动”。

 

亚马逊可用性保障团队灾难大师杰西·罗宾斯,因其消防员的经验于 2004 年发明了 GameDay,邀请志愿者借助“实验”与待测系统进行“互动”,探索未知的系统风险,同时也训练了工程师团队的应急响应能力。随着业界更多团队开展GameDay,亟待一种新的实践模式实现 GameDay 高效实验、自动化和流程标准化。Netflix 发明的混沌猴子工具,以及后续提出的混沌工程正是源于这个思路。

 

混沌工程承认人们对于系统的行为认知是有局限的,通过受控的故障注入实验,观测、记录、分析系统,找到背后的原因,改进架构或相关的代码和设计,从而真正提升整个系统架构的韧性,避免级联故障发生。

 


混沌工程具体能产生怎样的价值?是否能量化呢?黄帅在分享中列举了 Netflix 报告中的一个例子:“过去一年中,混沌工程提前发现了 2 次大故障和 8 次小故障,避免了整个组织大约 70 万美金的损失。混沌工程团队,总共 3 个成员,薪水支出 15 万美金/人。开展混沌工程实验,本身需要 1 万美金的成本。投资回报率是多少?高达 52.17%。”

 

落地混沌工程的难点和思路

 

混沌工程带来的价值,无疑是令人心动的。近年来,许多公司都尝试采用某种形式的混沌工程来提高现代架构的可靠性。然而,混沌工程的探索实践之路却并非一帆风顺。分享中提到,企业实践混沌工程主要面临三个方面的挑战。

 

首先,面临稳态分析和服务透视方面的挑战。在故障注入后,需要判定系统的稳态是否被改变。如何定义稳态?又该采用何种手段判定呢?

 

混沌工程的核心特征是对照观测实验。精细化流量控制后,分别设置实验组和对照组。在实验组中注入故障,通过可观测的手段比较差异,通过链路追踪的方式去判断其强弱依赖的状况。人工手动分析,稳态对照分析的效率和准确性需要依赖于自动检验算法,简单地可以采用双样本的 T 检验,复杂地就需要借助异常检测等手段。在链路追踪的过程中,需要分析它的强弱依赖,从而计算出爆炸半径。其中,很重要的可观测手段是服务透视。在亚马逊云科技上既支持已有的可观测工具,同时也支持开源架构,整套工具开发者可直接进行使用。此外,可观测性在促进我们对于系统行为认知的同时,混沌工程本身也是系统可观测性的强有力的验证手段。通过平时的实验可以去验证当有故障产生的时候,哪些告警才是真正对排障追踪真正有效,哪些告警并不能带来价值。

 

第二,面临爆炸半径安全管控方面的难题。混沌工程采用的方式是用很小比例可能受到影响的用户进行实验,借以提升整个系统的可靠性。这个过程需要进行安全管控,一方面,要有随时停止的能力,俗称一键关停。另一方面要合理管控实验流量的大小,流量太小,可能会产生样本误差,流量太大会影响用户。对于偏差,我们可以借助实验手段中存在已久的统计学方法,如多重检验、费舍尔方法等等。

 


安全管控可以采用灰度对照实验,一键关停的方式,对流量进行精细控制。通过亚马逊云科技的服务可以很细粒度的去隔离相应爆破的对象,以及进行强弱依赖识别。因为只有知道相关服务之间的依赖关系强弱才能知道爆破半径有多大。

 

第三,是效率方面的难题。假设有 10 个组件,采用排列组合的方式去实验会产生 360 多万个场景。这么多场景不可能通过有限的人力、时间和资源完成测试。

 

我们需要以史为镜,通过历史的故障进行一些类比引申和重现。首先,故障注入点不在于多,而是要使故障注入点的组合场景更接近现实的状况。其次,要去实现混沌工程标准化、模板化和互操作性,不同团队之间可以互相分享,共享一些模板,这些模板可以高效地使用起来。另外,可以使用 FMECA 服务失效模式的分析手段,从故障发生的可能性、严重性和可观测性三个角度,确定故障组合的优先级。通过这个优先级就可以很轻松地判定出哪些故障是核心故障,哪些故障是最重要的,然后把时间精力投入到重要的故障里面就可以了。在故障组合的探索方面,可以用到 STPA 分析模型。该模型认为系统的可靠性依赖数据面、控制面、人工面三个部分,三个部分交互的点,也就是最容易产生故障的点。

 

总结来说,企业落地混沌工程的难点和思路基本围绕稳态、安全、效率三个方面。那么,在落地过程中是否可以借助一些工具和服务呢?

 

用好一切可用的服务

 

今年 3 月,亚马逊云科技发布了一款 Amazon FIS 服务,帮助大家更简单、高效地去实践混沌工程。该服务基于亚马逊云科技内部工具 Amazon Gremlin 技术和能力的输出。

 


早在 2004 年,亚马逊就创立了基于工程师团队的交互式和开放式的学习与训练的“GameDay”。在 2004 年到 2021 年整整 17 年间亚马逊云科技一直实践 GameDay 的玩法。2010 年亚马逊云科技推出自研混沌工程产品 Amazon Gremlin,结合 GameDay 成为可用性保障实践内容。

 

在 Amazon Gremlin 内部实践并为其公司带来价值后,亚马逊云科技考虑将拥有的能力赋能给自身的客户和用户,推出了 Amazon FIS 服务。

 


Amazon FIS 的最大的优势体现在它的易用性。使用 Amazon FIS 不用集成和安装其他工具就可以控制管理台。同时 Amazon FIS 提供一些预设实验的模板,用这些模板可直接做故障注入,如果产生新的想法,也可以根据自己的需要进行定制和修改。

 

其次,Amazon FIS 非常贴近真实的场景。很多故障场景并不代表真实世界的事件,在实际场景中很多问题是多个故障的组合引发的,Amazon FIS 支持串行、并行等多种实验灵活编排,最大程度还原真实场景。

 

第三,也是非常重要的安全保障方面,Amazon FIS 提供了自动停止的能力。一旦混沌工程实验影响到实际用户或产生负面影响,它可以自动停止。用户也可以自行设置相应的告警,一旦触发相应的停止条件,实验将立即停止。在故障注入的过程中,可观测性非常重要,Amazon FIS 可集成 Amazon CloudWatch 的可观测能力,方便用户观察故障注入时的系统变化。此外,Amazon FIS 内置安全回滚策略,并且能够通过细粒度 IAM 实现精细权限控制,避免混沌工程这个平台成为新的攻击点。

 

在 Tech Talk 的最后,黄帅演示了四个借助 Amazon FIS 服务轻松打造云上混沌的实验。具体操作步骤可点击视频了解。


00:00 / 00:00
    1.0x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00


    2021-09-29 09:581860

    评论

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

    为什么很难得出结论

    将军-技术演讲力教练

    淘特 Flutter 流畅度优化实践

    阿里巴巴终端技术

    flutter 移动端 flutter 调试工具

    从产品角度探索采控的快速交付

    鲸品堂

    交付工具

    Rainbond通过插件整合ELK/EFK,实现日志收集

    北京好雨科技有限公司

    Kubernetes PaaS ELK Stack rainbond

    ShardingSphere Mode 模式新起航:运行模式详解

    SphereEx

    开源 ShardingSphere SphereEx 运行模式 分布式治理

    绩效评估的why&how

    mtfelix

    28天写作

    为什么?为什么要先问目的?(27/28)

    赵新龙

    28天写作

    《PyTorch 深度学习实战》复习完成2

    IT蜗壳-Tango

    28天写作 12月日更

    敏捷、协作与研发管理

    LigaAI

    敏捷 研发效能 SaaS 内容合集 技术专题合集

    性能工具之15个常用的Linux文件系统命令

    zuozewei

    Linux Shell 12月日更

    新一代人工智能院士高峰论坛-视觉预训练大模型及其在智慧城市中的应用分论坛顺利举办

    OpenI启智社区

    人工智能 智慧城市 预训练大模型

    57 K8S之自动弹性缩放

    穿过生命散发芬芳

    k8s 28天写作 12月日更

    从0到1带你深入理解log4j2漏洞

    网络安全学海

    网络安全 信息安全 渗透测试 WEB安全 安全漏洞

    HarmonyOS(鸿蒙)——滑动事件之上下左右滑动

    李子捌

    28天写作 21天挑战 鸿蒙开发 12月日更

    百度智能云 AI 公有云服务市场,连续五次第一!

    百度大脑

    人工智能

    前端规范落地,团队级的解决方案

    德育处主任

    前端 代码规范 规范 eslint git规范

    低成本、低功耗、小体积433MHz数字量无线控制器

    不脱发的程序猿

    DIY 无线通信 智能硬件 创客开发

    openEuler高琨:积极推动开源合规 助力供应链安全

    科技热闻

    都在说边缘计算,它到底是用来干啥的?

    火山引擎边缘云

    云计算 边缘计算 虚拟化 算力

    几个超火的编程网站,别错过!

    程序员鱼皮

    CSS JavaScript html 前端 后端

    第一财经年终总结

    石云升

    读书笔记 28天写作 12月日更

    Spring Boot 最核心的 25 个注解,都是干货!

    CRMEB

    龙蜥操作系统通过工信部电子标准院首批开源项目成熟度评估

    OpenAnolis小助手

    国产操作系统 龙蜥社区

    首颗云原生边缘计算卫星升空,与KubeEdge一起探索“智慧太空”

    科技热闻

    物联网资产管理系统解决方案

    低代码小观

    物联网 资产管理 CRM 企业管理系统 CRM系统

    都在聊混沌工程,它的落地实践你了解多少?_文化 & 方法_张雅文_InfoQ精选文章