一、 引言
富途控股有限公司(“富途”)是一家领先的数字化金融科技公司,专注于为用户提供覆盖多个市场的全数字化金融服务,继而提升投资体验。2019年3月8日,富途(Nasdaq: FUTU)正式登陆美国纳斯达克交易所。富途通过自主研发的一站式数字化金融服务平台富途牛牛和moomoo,为用户提供市场数据、财经资讯、投资社区、投资知识等服务;并通过集团旗下持牌券商,向客户提供港股、美股、A股通、新加坡股及澳股的股票交易和清算,融资融券,及财富管理等服务。富途以用户为中心构建起连接用户、投资者、分析师、媒体、企业和机构的投资生态系统。通过旗下富途安逸(FUTU I&E)品牌,集团为企业客户提供一站式ESOP解决方案、首次公开募股(IPO)分销、投资者关系和公共关系(IR&PR)等企业及机构服务,已成为多家知名企业信赖的合作伙伴。
随着业务的不断扩展,企业也随之面临着更多复杂性和稳定性的挑战。业务上云、分布式架构、系统快速迭代更加剧了故问题发生的概率。如何将复杂系统问题提前暴露成为了运维团队亟需解决的问题。为此,富途旗下子品牌moomoo联合腾讯云,以业内先进混沌工程方法论为指导,基于腾讯云混沌演练平台开展了一次真实的故障演练“Game-Day“实践。
二、 Game-Day计划
2.1 什么是GameDay?
混沌工程(Chaos Engineering)是通过主动向系统引入故障场景,并对系统在各种压力下暴露出的问题进行优化的一种稳定性保障手段。开发人员和运营团队有时会将一个或多个混沌实验有序组织为一天的活动,称为混沌工程Game Day。Game-Day的价值在于通过模拟真实生产环境下故障场景,检验业务系统系统的可靠性、应急SOP的有效性等,以便在实际生产环境中更有信心地应对类似情况。
2.2 如何组织一次GameDay?
1. 确定演练目标和范围:首先确定演练实例范围、希望演练的故障场景,以及各场景下期望达到的效果;
2. 确定参与人员和角色:确定参与 Game-Day 的团队和角色,包括主要负责人(制定时间表、把控整体流程)、开发/运维工程师(最了解系统的人)、系统服务依赖人员(提前告知可能的影响)员等,以及每个人的职责和角色;
3. 环境准备:首先在测试环境进行预演练,然后在生产环境维护期间进行正式演练;
4. 确定故障场景和工具:确定需要模拟的故障场景和需要使用的平台工具;本次演练大部分由用户采用混沌演练平台操作,少部分采用运维手动支持;
5. 制定计划和流程:制定 Game-Day 整体流程,包括故障注入实验环节、应急响应SOP流程、恢复流程等,以确保演练顺利进行;
6. 风险评估和安全措施:对可能出现的风险进行评估,并制定相应的安全兜底措施,以确保 Game-Day 不会对生产环境造成不可逆的影响;
三、 moomoo故障演练实践
3.1 演练目标
结合moomoo的业务架构特点以及期望达到的可用性目标,此次moomoo 联合腾讯云混沌演练平台的GameDay活动围绕以下演练目标展开:
1. 检验关键服务的跨可用区容灾能力,如架构无单点,具备健康检查、负载均衡等;
2. 检验基础监控、业务指标监控的覆盖是否全面、告警是否及时等;
3. 检验故障应急预案中人员组织和SOP 规范是否合理、能否快速有效地对突发情况做出响应。
3.2 演练实例及场景
此次演练涉及moomoo十余个业务团队,数千个微服务应用,演练涉及腾讯云CLB、专线网络、CVM、TKE、CDB、CRS、TDSQL等多个云产品,主要对以下5个故障场景进行高可用能力验证:
1. 接入层负载均衡容灾能力
2. 专线网络容灾能力
3. 逻辑层虚拟机、容器集群容灾能力
4. 数据层CDB/CRS/TDSQL容灾能力
上述故障演练均基于腾讯云混沌演练平台(CFG)完成,业务团队在混沌演练平台上完成了实例选取、演练场景动作的编排、可视化故障注入、演练报告等全流程操作。
3.3 演练结果观测
在演练过程中,实施人员可通过对系统稳态监控指标在故障注入后的表现来判断故障注入是否成功、系统稳态指标是否符合预期来观察演练的效果,评估系统的可用性和可靠性。
四、挑战与解决方案
挑战1: 演练涉及资源对象类型多、实例范围大
此次演练涉及多个云产品的故障演练,如果采用传统人工运维支持的方式,需要协调各个基础产品团队配合实施故障注入,协同沟通成本较高;
解决方案 :混沌演练平台具备腾讯云主机、容器、数据库、专线等20余种对象资源的故障动注入能力,并提供近100种故障场景动作。演练前,用户可以在混沌演练平台上轻松完成多种资源类型的可故障注入动作组合编排;演练后,系统可以帮助自动化执行故障恢复流程,减少了人为干预的风险。原本需要腾讯云运维手工支持的复杂演练统筹工作交由客户在平台自助完成,节约了团队沟通及运维成本,极大提高了GameDay演练效率。
挑战2: 演练涉及对象实例多
本次演练为了模拟真实单可用区出现故障的场景,需要一次性完成最多数百台实例的故障注入,操作难度大。
解决方案:混沌演练平台支持多实例并发故障注入,能够真实有效地模拟可用区级别的故障场景,极大提高了故障演练整体效率。
挑战3: 故障注入效果观测
在一次演练GameDay活动中,业务方往往需要实时关注系统所依赖的各个云产品监控指标情况,以评估故障演练效果,把控风险。然而在实际演练中,往往存在着多个云产品监控看板不集中、看板界面反复跳转麻烦、监控指标信息不全面等问题,导致演练可观测的效率和能力存在不足。
解决方案:混沌演练平台集成了腾讯云监控各类基础云产品的监控指标体系,用户可以在混沌平台上快捷地集中查看各类云产品实例级别的的指标监控变化,实时观测故障注入效果,并对演练中可能出现的风险进行有效把控。
五、演练总结
此次moomo和腾讯云混沌演练平台的联合演练逐项验证了业务云服务容灾能力,系统的整体可用性和可靠性整体符合要求。同时,生产环境演练还帮助客户发现了一些有价值的问题,这些可用性问题往往在实际故障发生时才能有效暴露,这也是此次演练最直观的收益。通过演练,客户更好地了解了服务的容灾能力和故障时系统切换流程,提高了对自身服务的信心。
六、混沌演练平台产品介绍
本次演练由客户在腾讯云混沌演练平台上操作完成,更凸显出了平台自动化的重要性。腾讯云混沌演练平台(Chaotic Fault Generator)是腾讯云针推出的一款针对腾讯云上资源进行混沌工程实践的Saas产品,平台提供覆盖一站式故障演习服务:
● 演练前,平台提供演练计划功能,帮助用户快速组织GameDay活动,对Iaas至Paas产品100余种故障动作进行灵活编排组合;
● 演练中,平台支持用户进行可视化故障注入和自动恢复、稳态指标全方位监控,减少了人为干预的风险;
● 演练后,平台支持用户一键导出演练报告,回溯问题。
此外,平台从腾讯云内外部实践中提炼总结了7类行业经验库模板,用户可以快速复用行业经验模板来创建演练任务,提高演练效率。
附:
公有云产品体验:
混沌演练平台-腾讯云产品控制台
故障演练操作指南:
腾讯云文档中心-混沌演练平台-故障动作库
案例介绍文档:
腾讯云文档中心-混沌体验营
高可用服务:
高可用服务 - 腾讯云客户支持