如何实践混沌工程方法,改进系统和服务 - Christodoulos Xystras
By Devoxx · 2024-02-24
Chris首先介绍了他的背景和他所在的公司XM的情况,包括公司规模、全球客户群体、使用的AWS服务等。随后,Chris提到了他们采用的混沌工程方法,通过案例展示了如何利用混沌工程实践来改进系统和服务,从而让人们的生活变得更加美好。XM公司在混沌工程过程中采用了六个关键步骤,包括前四个基本的步骤以及后面新增的两个步骤,以此来完善混沌工程的方法,为整个生命周期过程增加策略。最终的目标是通过云服务和系统的稳定性,并将服务和资源用于培训和帮助员工,从而实现帮助员工提升工作效率和生活质量的目标。
混沌工程简介
- Chris首先介绍了他的背景和他所在的公司XM的情况,包括公司规模、全球客户群体、使用的AWS服务等。
- 随后,Chris提到了他们采用的混沌工程方法,通过案例展示了如何利用混沌工程实践来改进系统和服务,从而让人们的生活变得更加美好。
- XM公司在混沌工程过程中采用了六个关键步骤,包括前四个基本的步骤以及后面新增的两个步骤,以此来完善混 沌工程的方法,为整个生命周期过程增加策略。
- 最终的目标是通过云服务和系统的稳定性,并将服务和资源用于培训和帮助员工,从而实现帮助员工提升工作效率和生活质量的目标。
混沌工程简介
关键点分析
- 要将收集到的关键点转化为下一步的行动点。
- 在之前的会议中也曾提到,我们不希望出现错误,当然你也不希望重复犯错。
- 使用生命周期的原因基本上可以归结为永远不要让任何事情被忽略,我们都不言而喻地被工作压得喘不过气来。
- 每一个行动都为我们带来另外三四项任务,因此很难跟上。这就是为什么我们试图将生命周期纳入几乎所有重要的支柱和流程中。
- 无论是解决方案设计、成本绩效审查,甚至是应用程序审查,我们都在努力将生命周期纳入其中。
关键点分析
混沌工程实验的解决方案
- 服务台经理提出了一个想法,希望能够模拟一些警报而不让工程师、代理商或响应人员知道。
- 他们利用 API 调用程序(比如 Postman 或 red node)向 API 网关发送 API 调用,该网关连接一个 Lambda 函数来触发 FIS 实验(故障注入模拟器)。
- FIS 服务是 AWS 的一个故障注入模拟器,旨在进行混沌工程实验,它可以通过 SSM 调用自定义脚本,然后应用到 EC2 的控制平面或其他服务上。
- 他们还需要在主机上配置监控代理,例如 Xavix 或 New Relic,并创建虚拟服务或模拟服务,让代理监控。
- 一旦服务出现问题,监控警报会触发,然后他们的事件响应团队会按照预定流程处理。
混沌工程实验的解决方案
关于API调用程序的安全性和云原生转型
- 我们向他们展示了如何使用API调用程序,并将其配置为预设,以便他们可以根据需要使用它。
- 安全性方面,我们已将安全性向左转移给了安全人员。API网关受到资源策略的控制,对调用者IP和用户进行了身份验证,并要求特定的SSO角色。这些特定的SSO角色只授权给了少数人,因此我们知道触发调用的人是有权限的。
- Lambda函数本身已经限制在需要的基础上,并且尽量避免未处理的异常。我们还尽量保持代码简洁,避免注入故障模拟服务。
- SSM用于创建我们所需的脚本,CloudWatch用于指标记录,已被添加到故障注入模拟服务中。这意味着我们可以方便地监控代理和服务内部的配置。
- 我们注意到工程师的准备时间更快了,他们变得更加自信,并且某些具体行动变得像肌肉记忆一样自然。对于服务台领导,云操作的入职以及我们能够捕捉服务方面也有很大的帮助。同时,这个项目还发现了运行手册中的一些漏洞,为我们提供了改进的机会。
关于API调用程序的安全性和云原生转型
创业公司通过混沌工程实践的 收获
- 通过用户数据或任何其他创业脚本,我们在未来计划中提取了DevOps从实验室自动触发中带出的内容。
- 我们没有将这种实践用于QA测试方法,因为这是一种混沌实践,而不是QA测试。
- 然而,我们认为这对于IT团队来说是很有益处的,他们可以通过这种实践方式真正测试系统的弹性。比如,DBA可以创建多AZ数据库或主动-主动数据库,但实际上应用程序在网络故障时会发生什么,这是一个值得思考的问题。
- 此外,我们将混沌事件提升到自动化的层面,我们从FIS服务、Lambda函数、API调用或其他服务中获取了日志,为什么不制作一个快速的仪表板呢?尽管我们不是开发人员,也不在Angular或React领域,但我们了解一些会对我们有益的内容。这对于管理团队和申请者来说也将是一个很好的展示机会,他们可以看到他们的实验结果,以及观察他们的应用程序是如何运作的。
- 我们作为一家公司学到的一点是,演练非常有益处,在一个高要求的外汇交易行业,情况更加紧张和苛刻,甚至比银行业还要严峻。对于这样的行业来说,超低延迟、高可用性,没有容错空间,每个新系统或功能的添加都必须经过释放周期的所有环节。
- 我们的员工需要得到训练,因为在可能出现的情况下他们需要做好准备。最近我们不仅为故障事件还为备份 恢复做好了充分准备。通过我们的练习演练,我们做好了准备,几周后发生了一些自动化的已知攻击事件,幸运的是,我们的工程师们对此做出了非常迅速的反应。
- 混沌实践对公司来说不仅仅是因为最近的攻击事件或持续高流量的挑战,有时人员变动也会对业务部门产生影响。如果一个工程师离开,而且有大量知识不传的风险,那么公司就需要利用演练来解决这个问题。
- 感谢大家的时间,再次道歉。如果您对我们的空缺感兴趣,欢迎点击链接了解更多,也欢迎来我们的展台参加抽奖活动,我们准备了PlayStation 5、Oculus VR和Roborock自动吸尘器等大奖,因为我们总是豪气干到底,永不言败。
创业公司通过混沌工程实践的收获
Conclusion:
要将收集到的关键点转化为下一步的行动点。在之前的会议中也曾提到,我们不希望出现错误,当然你也不希望重复犯错。使用生命周期的原因基本上可以归结为永远不要让任何事情被忽略,我们都不言而喻地被工作压得喘不过气来。每一个行动都为我们带来另外三四项任务,因此很难跟上。这就是为什么我们试图将生命周期纳入几乎所有重要的支柱和流程中。无论是解决方案设计、成本绩效审查,甚至是应用程序审查,我们都在努力将生命周期纳入其中。