1 什么是混沌GameDay?
GameDay在混沌工程中可以理解为一次有计划的演练实践活动,可以持续一天,也可以持续几个小时,也可以持续几天,持续时间根据具体的目标而定。GameDay活动旨在对系统如何应对现实世界中的混乱状况进行演习。通常来讲,实施混沌GameDay的团队需要探索下面几个问题:
- 系统健康监控等系统是否有预期预警?
- 在注入故障生效期间,负责目标系统的团队该怎样应对?
- 故障注入之后,系统是否满足稳态指标,运行是否正常?
混沌GameDay是一个有计划、受控、安全、可观测的活动,而不是“混乱”的活动。
混沌GameDay的最终目的是按照一定的规划,有序地对目标系统进行混沌演练,收集演练实验证据,以此来验证混沌工程稳态假说。
2 GameDay的准备
只要能对目标系统进行有计划的混沌演练的活动,并能收集到相关证据,都可以称为一次成功的混沌GameDay。您也可以按照如下步骤进行游戏的准备工作。
2.1 选择稳态假说
一次成功的GameDay必须要有至少一个明确的验证目标,即混沌工程稳态假说。一个稳态假说往往包含但不限于以下几点内容。
- 预期的系统响应
- 可能的现实故障场景,如网络断开,机器宕机等
- 故障会给系统带来哪些影响
- 假说验证之后,可以对系统的哪些方面建立信心
选择假说时,可以和团队以及相关干系人一起讨论,选择一个或多个达成共识的、值得验证的假说作为GameDay的目标假说。
2.2 确定主持者、执行者、参与者以及观察者
GameDay的目的是收集相关证据验证选择的稳态假说,为保障GameDay高效,有序的进行,分工统筹是很有必要的。在GameDay中,可以分为主持者、执行者、参与者以及观察者四种分工类型。
- 主持者:顾名思义,负责主持整个GameDay,按照GameDay的规划(时间、故障事件,故障爆炸半径等)指挥对应人员进行混沌演练。并按照GameDay模式向参与者告知信息。
- 执行者:负责执行混沌故障事件,向目标系统注入故障,可以是一个或多个人组成。
- 应对者:一般为目标系统的团队成员以及相关干系人。
- 观察者:负责按照稳态假说对目标的稳态指标进行观察,收集相关演练证据并记录。同样可以是一个或多个人组成。
2.3 选择GameDay模式
GameDay有很多种不同的执行模式,一般是根据参与者事先知道故障场景信息的多少以及时间来区分。可以参考的有如下3种模式。
- 事先告知模式,该模式会在GameDay之前将需要进行演练的故障事件及细节告知应对者。该模式一般揭示团队如何面故障状况。
- 事中告知模式,该模式会在GameDay之前通知应对者会进行故障演练,但不告知具体故障事件相关细节,在GameDay故障演练执行过程中告知应对者细节。
- 事后告知模式,该模式仅仅会在GameDay之前通知应对者进行故障演练的时间,整个演练过程中不告知任何故障时间细节,待演练完成之后,告知应对者故障事件相关细节。
3 GameDay故障演练实验设计
在完成上述步骤之后,便可以按照GameDay的计划创建GameDay的故障演练实验设计。设计可以参考如下流程。
4 开展混沌GameDay活动
做好GameDay的准备之后,需要在GameDay开始前通知开展GameDay的人员,若有任何一方未就绪,GameDay应当取消或者延迟。当所有人员都已就位之后,由主持者按照GameDay计划有序地指挥执行者以及观察者进行混沌演练。
在开展混沌GameDay过程中,有几个重要的注意事项需要考虑:
- 安全性:确保在进行GameDay活动时,系统和数据的安全性得到保障。确保各个角色了解并遵守安全规范,以防止任何潜在的安全漏洞或数据泄露。
- 规划和准备:在进行GameDay之前,进行充分的规划和准备工作是至关重要的。确保有清晰的目标和预期结果,并制定相应的计划。准备好所需的资源、工具和环境,以便顺利进行GameDay活动。
- 通信和协调:确保GameDay各成员之间的良好沟通和协调。建立有效的沟通渠道,确保信息的及时传递和共享。确保有效地协作和合作。
- 反馈和学习:GameDay对参与的各个角色的人员来说都是一个学习和改进的过程。鼓励各角色在GameDay中总结分享他们的经验和教训,并将其应用于未来的Gameday活动中。
5 复盘GameDay
GameDay结束之后,可根据演练过程中观察者收集的系统相关证据以及故障事件细节信息验证假说是否满足,若未满足,需要根据相关证据分析目标系统,优化系统,并在优化之后再次进行假说验证。
混沌GameDay的主要目的是帮助发现系统潜在的风险以及隐患,因此对GameDay进行复盘便是其中关键的一环。基于之前的分工,不同角色可参考如下方式进行复盘工作。
- 主持者:回顾整个GameDay的执行过程;同时从其他参与者收集反馈意见;分析演练期间的决策和指令,复盘判断过程的秩序和有效性,引导讨论并促进改进计划的制定。
- 执行者:回顾自己在演练中的行动和决策,提供关于故障注入和应对措施的详细信息,以便其他参与者了解演练的具体情况。
- 应对者:评估注入的混沌故障其对目标系统的影响和效果,结合故障演练场景分析系统潜在隐患以及优化方案,总结在应对故障事件时的经验和教训。
- 观察者:提供在观察过程中发现的问题、趋势和异常情况,目标系统的稳态指标和性能的详细信息,以便复盘过程中进行分析和讨论。
在复盘过程中,各个角色应当积极参与讨论,分享自己的观点和经验,共同分析演练的结果和效果。通过充分的交流和合作,可以更全面地评估演练的成功与失败,并制定改进计划以提高未来的GameDay活动的质量和效果。
腾讯云的混沌工程
腾讯云混沌演练平台(CFG)也正是基于上述背景而诞生,汇集各行业成功案例和最佳实践,提供宝贵经验,提供模拟IaaS、PaaS、SaaS近百种故障注入场景。