一分钟精华速览
中国信通院最新的调查报告显示,越来越多企业正在尝试通过混沌工程来提高系统稳定性。实验的不同阶段,大家面临着不同的问题,我们尝试从混沌工程推进的不同角度,为大家提供一些解题思路。
「TakinTalks 论道系列」第 4 期,我们邀请了 4 位正在进行相关实践、研究的从业人员,从不同视角分享对混沌工程的看法,在他们的经验中了解混沌工程如何推进、如何落地、如何避坑……
微信公众号后台回复 “交流” 进入读者交流群。回复“报告”获取最新混沌工程研究报告。
主持人:中国信通院最近公布了两个调研结果:从 2021 年到 2022 年,许多企业尝试进行混沌工程;大部分企业仍然只在测试环境中进行混沌工程,或者在预生产环境中进行。我们想了解下,大家作为正在落地相关实验的企业,在实践中认为有哪些值得特别关注的点?(数据来自:《中国混沌工程调查报告(2022)》)
**中国人寿-刘玢 :**我想分享一下中国人寿在混沌工程落地时遇到的关键点和避坑点。在测试和开发环境中,我们关注的是故障模拟能力。包括基础故障、中间件故障和应用故障等,因为应用故障很难复现,我们通过组合故障来模拟和复现故障。而在准生产和生产环境中,我们的关注点是在监控能力整合上,会更关注监控的及时性、全面性和安全管控等方面。中国人寿有很多监控系统,比如硬件监控、网络监控、数据库监控、中间件监控、日志监控、应用监控、链路监控等等,但把这些监控整合起来,对接到混沌平台仍然有难度。未来在生产环境中落地混沌工程,我们则会关注如何控制爆炸半径。这需要及时、全面的监控数据支持。虽然目前还没有上生产,但我们一直在努力探索如何控制爆炸半径。已经结合压测平台实现了一部分功能,但我们仍需不断努力。
**太保科技-刘强 :**目前太保科技和中国人寿在混沌工程应用方面还有阶段性的差距,目前我们还在测试环境探索阶段。在这个阶段,我认为混沌文化理念的认同感是非常重要的。在金融行业中,业务连续性的要求非常高,特别是在太平洋保险成立太保科技后,原有集团的用户都变成了我们的甲方,对可用性的要求更高,生产中断是不可接受的。因为在生产或者准生产环境注入故障,一旦控制不好,导致混沌实验造成了业务中断,这样对整个混沌工程的推广会是一个非常大的打击。所以第一个关键点就是,在企业里把混沌工程理念宣贯透彻。另外一个关键点就是混沌工程需要有及时中断的控制能力。混沌工程的目的是发现系统中的问题,不管是在哪个环境中实验,发现问题就说明系统的强壮性是不够的。为了避免发生系统崩溃、服务不可用等更大问题影响到整个生产环境,需要有强有力的中断控制能力,同时也可以在小范围内探索和解决潜在的问题。
**TakinTalks 社区- 杨德华 :**今年年初,其实我深度思考了这个问题,“为什么混沌工程在有些企业能做得好,但有些企业落地效果很一般”?核心原因我总结了主要有 3 个方面——高层重视度、落地做法、目标设定。高层的重视度这里不赘述,稳定性工作本身就是一个跨多团队的事情,有了上级的支持,推进会更加顺利。其次是落地做法,虽然有些企业明确了要推进混沌工程,内部也宣导了要提升稳定性,但是实际执行中的做法区别还是比较大的。比如是不是有足够的经费、制度上有没有保障、有没有设定 0-1-5-10 这样的具体目标等等。再比如只是在应用内实验,还是网络设备、应用内、应用于中间件、应用与应用之间等等都涵盖,不同的做法会影响到最终的效果。最后特别提一下目标设定。我认为技术实现层面的事情其实并不难,最关键的是在确定要做混沌工程后,一定要设定一个 0-1-5-10 的目标,然后根据这样的目标去制定落地和保障方案以及拆解执行。要想把混沌工程推进下去,这个目标是非常重要的,不然对于项目的牵头人来说,混沌工程的价值会很难呈现和表述。所以我认为从全局的角度来看,这三个点是推进混沌工程中非常值得关注的点。
主持人:很多企业的混沌工程都有参考信通院近两年的政策和标准指导文件,所以信通院对于阶段性落地的关键点应该是比较有发言权的,海清老师这块您看看是否做些补充?
混沌工程实验室- 王海清 :我可以从整体行业视角来补充一些信息。信通院在做相关技术推广中,提倡大家在生产环境中去开展混沌演练,因为不管是测试环境还是准生产环境,无论多么仿真的环境都不可能和生产环境完全一致,只有在生产环境的演练才是最真实有效的,且测试环节和准生产环境的成本都很高。但实际情况是,由于恐惧实验失败带来更加不可控的风险,大多数企业在接纳混沌工程时都选择在测试环境中进行演练,这是可以理解的。
所以建议在开始混沌工程的初期,尤其在组织内部分布式化改造之后,在系统稳定性保障体系建立初期,可以先在开发环境中补齐显著漏洞,然后再往仿真环境或预生产环境中开展。在金融机构中我们的确还没有看到哪一家能非常好地在生产环境中开展混沌演练(证券行业除外,业务较为特殊)。尤其银行业,因为业务连续性要求极高,且无法回滚,只能花较多经费放在仿真环境上。那么在仿真环境中我们是建议有重点地推进,先建设核心应用的仿真环境,因为做仿真演练,不管是架构还是运营体系,其中的成本是非常高的。如果一定要投入,可以先从核心业务开始。当仿真业务无法满足需求时,可以在生产环境谨慎做演练尝试。此时,建议可以在边缘系统中尝试,比如中国人寿的在客户节活动平台客户量较少或者几乎没有流量时,在生产环境做一些故障注入的尝试。通过这种小范围的尝试来逐步建立实验信心。
除了技术上的建设,还需要在组织内部做一些文化上的宣贯工作,让大家接纳失败,并通过失败向成功迈进,这是系统混沌工程的组织文化建设的重要性。
主持人:关于平台建设过程中如何把控整体的节奏和规划,包括团队需要具备哪些能力和使用哪些工具?我们知道信通院有一个混沌工程平台成熟度模型的评估标准,标准是否在以上这些方面有具体规范或指导呢?
**混沌工程实验室- 王海清 :**我认为这个问题非常好。我们实验室在混沌工程标准化方面的研究较早,也已经做得比较深入了。仅混沌工程方向,我们目前已制定了两个标准——一个是面向供应商的平台能力要求,主要从技术框架的角度,去看怎么实现能力的梯度建设;另一个是成熟度模型,针对甲方的视角,从技术和效果角度推进混沌工程的使用。因为对于甲方来说,仅仅购买或建立平台是不够的,还需要在组织内部落地并让更多的团队接受和使用混沌工程。结合这两个标准,以及混沌工程文化的建设,我分享一些对这个问题的看法。(可以后台私信“能力模型”,获取信通院混沌工程成熟度能力模型)
从技术角度来看,我们建设混沌工程模型采用了梯度化的方法。比如,最开始可以接受混沌工程没有工具,先采用一些开源框架做尝试,随着大家认知度的上升或者对混沌理念的接受,可以逐步采纳开源框架或者采购商业化版本。在初期,如故障编排、场景梳理等等,都需要人工去实现,在应用加深的同时,也可以同步迭代自动化工具的水平。另一方面是故障报告,目前还没有看到有智能化的存在,但一些企业正在进行探索。未来,我们的预期是实现智能化,让系统自动根据被测系统架构的变化生成相应的故障场景,验证系统韧性和响应情况。从平台和工具的角度来看,我们需要逐步完善自动化能力并提高智能化水平,以实现梯度化的发展。
从效果角度来看,我们的目标是在组织内推广混沌工程。为此,可以通过一些指标来辅助其落地。比如成立一个关注混沌工程应用情况的虚拟组织,通过统计演练计划的完成程度、故障场景探索程度、稳态指标覆盖程度、故障闭环程度和产品赋能程度等。通过量化这些指标并可视化数据,可以了解到不同团队的混沌工程使用情况,并根据实验发现的问题来评估内部系统的安全运行水平。
另一方面,我们也需要在组织建设方面进行努力,包括团队建设和文化建设。在团队建设方面,我们可以鼓励工程师尝试混沌工程的开源工具,并逐步推广到小规模使用和专门的混沌工程团队。后期,我们需要把混沌工程扩散到研发、测试和运维团队,并让业务线上的人员具备基础的混沌工程实验注入能力,从散兵游勇到正规军再到全民混沌的水平。通过这些组织建设措施,我们可以进一步提高混沌工程的成熟度。文化建设也是采用梯度化的方法。最初的阶段是没有这种文化的,组织内部需要自己去了解并提升个人能力,如参加沙龙或在线技术分享等活动。当组织内部采纳混沌工程工具后,需要考虑在组织内部构建文化。这可以通过定期的培训、操作培训、知识分享和混沌演练等活动来实现,如 Game Day 和红蓝对抗。这些活动可以帮助组织内部提升接纳故障并使用故障来提升稳定运行水平的理念。另外,还有一些例子,如华泰证券组织内部周期性地评比混沌演练次数或效果最好的团队、老师或技术专家。通过开展这些具体的活动,可以带动组织内部的混沌工程文化。
主持人:海清老师从监管方或政策制定方的角度聊到了大方向的节奏,具体到各家企业可能也会有一些不同的实践办法。前期了解到太保科技目前是在落地混沌工程的比较早期阶段,调研数据显示目前接近 80%的企业都是差不多在这一应用阶段的,所以我们也想了解下太保当前的整体节奏,包括应用情况、团队建设和规划是怎么样的?
**太保科技-刘强 :**我们并不是一开始就去建平台做工具,而是先了解并对混沌理念有了初步的认识,然后在原本负责业务连续性的团队中安排了一两个人,从去年开始就在进行类似混沌工程的实验,即人工在生产系统中制造有计划的破坏。这样的破坏是在责任团队不知情的前提下开展的,是类似红蓝对抗的理念。我们通过这些活动找到了一些系统上的高可用问题,并且在一段时间内取得了成绩,也向上层展示了我们每天进行的破坏动作。首先检查系统的全链路高可用机制是否存在,我们发现有些高可用机制确实缺失,还有一些高可用机制虽然存在,但在我们的破坏中发现并未生效。当然,我们进行的破坏是有计划的,对生产系统的影响基本可以忽略不计。通过这些手段和活动,可以让上层看到生产环境中仍然存在许多风险隐患。因此,我们需要工具和平台来将这些破坏性的工作变成日常工作,而不是仅依靠人力来完成。这就是我们去年一整年做的铺垫。
要让混沌工程正式落地,我认为确实是需要找一个契机。那我们找的契机是什么呢?这两年我们引入了一些新的技术架构进来,我们通过演练发现了一些不完善的点,也为新建的技术平台带来了比较大的帮助。基于这样一个契机,我们内部也形成了一个对混沌工程平台建设的一致看法,即混沌工程是一件非常有价值的事情。规划方面,我们今年会在开发环境中先完善混沌平台,并形成可落地的场景。明年可能才会在正常的环境中推广和落地,生产环境可能还需要一些时间。
主持人: 当企业完成了前期的立项铺垫,进入到测试环境、准生产环境的正式实验了,那这块的节奏又要怎么把控呢?我们此前了解到,中国国寿的测试环境和准生产环境混沌实验是交叉进行的。刘玢老师是不是可以详细讲讲国寿这方面的经验?
**中国人寿-刘玢 :**正如您刚才提到的,我们的测试和准生产环境是交叉进行的。在推进这项工作时,我们并不是完全按照开发、测试、准生产和生产这个梯度来进行的,整体我认为可以分为三个阶段。最初有几个工程师先试玩,在得到比较好的效果,向管理层汇报并得到认可后,我们开始铺开做第二阶段的混沌实验。第三个阶段是最重要的,整个混沌工程做出一定的效果后,我们将其加到了研发中心的高可用成熟度模型中。这个模型包括灰度发布、在线压测、容量规划等等,我们将混沌工程的故障演练加入到这个模型后,让它成为了一个标准化的高可用提升动作。即从组织层面对研究混沌工程的团队有加分,更加认可其高可用水平,团队也会认为混沌实验对其工作帮助较大。这样就从文化理念上形成了共识,我们认为此时是进入到了比较成熟的阶段。
从队伍和能力建设方面来谈,我们有一个虚拟团队,混沌小组是其中的一部分,还有环境维护人员和部署团队的人员共同来做这个工作。其中最重要的角色是测试工程师,因为混沌工程实际有很多的工作和测试类似。包括发压、测试脚本的编写、故障复现等等,这些工作都是测试工程师来做的。架构师队伍也扮演着重要的角色,因为在做故障演练时,我们需要对被演练的系统以及其上下游周边系统的架构有非常深入的了解,这样才能够更接地气,快速地推进整个工作。另一个重要的角色是负责文化理念共识建设的人员,我们称为“混沌教练”。他的主要工作是向各个团队宣传混沌工程,并展示它的成效和效果。在初期阶段,这个角色非常重要,因为人们对于新事物的接受需要时间。因此,混沌教练需要不断游说各个团队和产品经理,以便让他们理解我们的工作并加入其中。
除此之外还有环境维护人员和部署人员。在混沌工程中,我们需要不断搭建各种环境,并在出现故障时快速恢复。因此,环境维护人员在整个团队中也扮演着非常重要的角色。虚拟团队中还有部署团队,他们的主要职责是对各个系统进行部署和运维,并在生产故障时进行模拟和应急预案提升。他们既是我们的用户,也是整个团队中的重要成员。
综上所述,整个团队的人员和能力分布需要考虑到各种不同的角色和职责,以便更好地完成混沌工程的各项任务。
中国信通院王海清: 我有一个特别感兴趣的问题,尤其是人寿和太保应该是偏向于金融行业,那么大家现在这个阶段实施混沌工程最大的痛点是什么?就是需要花费最多的时间和精力来解决的问题是什么?
**中国人寿-刘玢 :**我想分享一下我的真实感受。这个感受不能称之为痛点,其实是我个人的困惑。目前我们花费了大量时间和精力来提升爆炸半径控制和生产安全管控建设,但我最大的纠结点,是金融行业很少有公司将混沌工程应用于生产环境,而我们却将大量时间和精力投入到生产方面的能力建设中,我比较担心投入不会带来预期的回报,因为上生产这条路充满了坎坷。虽然我们在发现问题和为产品团队提供价值方面做得很好,但最难解决的问题是如何使我们的成果在生产环境中得到充分的应用。
**太保科技-刘强 :**我们这边的一个难题是我们在生产环境中进行混沌工程实验时左右为难——既希望发现问题,又不希望发现问题。因为发现问题意味着这次实验对生产环境会产生一些影响。而如果没有发现问题,这次实验就只能证明生产环境还可以,而没有取得更大的价值。这是一个左右为难的问题。刘玢老师提到的问题,我有一个想法,就是混沌工程实验既可以帮助我们找到生产环境中存在的隐患,也可以对开发测试环境产生积极的影响。通过在开发测试环境中寻找应用代码的问题,我们可以帮助应用程序的开发人员更好地开发他们的应用程序。这些实践在生产环境中未必能够执行,但是对应用程序的开发仍具有一定的价值,我认为可以从这个角度去思考应用价值。(全文完)
「TakinTalks稳定性社区」微信公众号后台回复 “交流” 进入读者交流群。回复“报告”获取最新混沌工程研究报告。
本文由博客一文多发平台 OpenWrite 发布!
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net