迎难而上,腾讯云混沌工程实践之道揭秘
2023 年 5 月 27 日,由中国信通院混沌工程实验室主办,腾讯云计算 (北京) 有限责任公司、华为云计算有限公司协办的混沌工程实验室深圳站沙龙成功举办。沙龙以“保障系统稳定,构建韧性业务”为主题,旨在共同交流实践经验,深入探索业务系统的稳定性保障,提升行业内对系统稳定性的认知。来自腾讯云的周峰以“腾讯云混沌工程实践“为主题在上午场进行分享,来自腾讯云的周永飞参与了下午场的“系统稳定性保障“圆桌讨论。
混沌工程实验室简介:混沌工程实验室(ChaosLab)由中国信通院牵头成立,集产学研多方力量,聚焦混沌工程与分布式系统稳定性关键技术研究,实验室成立以来,坚持探索多样、有效的方式,持续推动系统稳定性相关技术在行业内的认知度及应用落地。
随着数字经济转型逐步深化,众多企业正迈入全面上云阶段。然而,云计算架构所带来的复杂性也让稳定性面临极大挑战。伴随着云计算规模的快速增长,云服务作为社会基础设施的重要性也日益提升。腾讯云深知质量乃生命线,稳定性至关重要且不容忽视。
为了应对稳定性挑战,团队对产生这些问题的主要因素进行了深入剖析。这些广泛存在的因素包括内部的代码 bug、操作变更问题,还有外部环境因素诸如运营商、数据中心硬件等所引发的稳定性问题。这些挑战所带来的损失和破坏力对云服务商来说是难以承受的,不仅仅涉及经济损失,更关键的是可能损害客户口碑。因此,腾讯云自上而下高度重视稳定性建设,并积极投入资源。
自 2018 年起,腾讯云开始深入探索混沌工程,逐步在内部实施和推广,由过去对故障的被动应急响应转向主动预防探索。
腾讯云在应对内部众多业务场景时,遇到的关键性挑战是什么?又是如何实践落地混沌工程的?
首要难点在于业务团队投入混沌工程的驱动力有限。面对研发和迭代各种功能需求,以及处理线上问题的压力,导致在混沌演练方面的时间和精力相对不足。
针对动力不足的挑战,综合考虑了多个方面,采取具体方案如下:
成立混沌蓝军:在团队组织上成立“混沌蓝军”虚拟团队,成员来自内部的测试、QA、运维及各产研团队,形成高效协同的横向组织结构,并在管理者层面取得高度认同。这种自上而下的策略确保了混沌工程得以落地运转。
协同与沟通:建立指挥小组、蓝军接口人、可用性月会、质量月会等定期沟通机制,确保演习和故障处理进展顺利进行并获取实时支持。
激励机制:设立多种奖项,包括部门和 BG 层面的奖励措施,鼓励蓝军团队、产研团队及测试团队积极参与混沌演练。
工具建设:建设腾讯云混沌演练平台,打造混沌演习全生命周期产品能力,确保团队能轻松实践混沌工程。
在整个混沌演练的过程中,关注以下三个核心环节:
业务自查:蓝军负责人深入分析所负责业务,明确现状及潜在风险,提前对隐患进行治理。
实战演习:完成自查治理后,再在准生产环境和生产环境进行实战演练,提升团队应对实际问题的能力。
共性识别:对演习发现的问题,通过可用性会议与质量会议,多领域专家共同分析问题,发现共性特征并将对应能力沉淀下来,形成可推广的公共能力。经过持续实践,上述方案和核心环节为实现高可用性目标提供了稳定可靠的支持。
从混沌工程的角度来看,越靠近生产环境,获得的价值越大。然而,靠近生产环境的同时,出现问题的概率也会增加。如何在不引发新故障前提下控制爆炸半径和影响范围,是第二个难点。对此,团队采取了以下两种解法:
选择尚未对客户开放的新可用区进行“新区断电演练”。正式开区前新区已完成所有线上环境配置与部署,与生产环境一致,在这个场景下开展严谨的容灾测试及断电演习。过去的几年里,腾讯云所有新区在正式开放前,都会要求进行断电演习。在腾讯云自有机房,我们会与现场的 IDC 合作,直接切断相关设备电源,模拟最为真实的断电场景。
同时利用可视化技术,全程监控演练过程中的设备状态变更,从断电到系统恢复正常运行。依据可视化数据,内部设定严格的恢复时间目标,持续进行考核与优化。此外,这种演练还能有效揭示与梳理隐含的云产品间依赖关系。
在生产环境中,建立一套严格的管控措施。从变更管控、业务资源权限管控,到高风险操作的审批确认,保障整个过程的可靠性与安全性。同时,平台提供了一系列精细化控制策略,如灰度发布能力、安全护栏以及回滚功能,作为基础能力支持团队进行混沌工程实践。
通过上述两个核心举措,有效地实现了混沌工程实践中爆炸半径与影响的有效控制。同时,这些方法不断优化并提高系统的可靠性和稳定性,为混沌工程实践带来更强大的力量。
结合腾讯云自研上云实践,打磨产品体验,提升易用性
最后,在众多演练工具当中,如何降低门槛提高演练效率,是第三个挑战。虽然市场上有众多开源和商业化的演练工具,但腾讯云始终努力寻求更高效地进行混沌工程实践的方法,基于腾讯云业务自身特点自研了腾讯云混沌演练平台产品,产品提供以下能力:
演习全生命周期支持:将演习过程划分为三个主要阶段:事前、事中和事后。在每个阶段,都为团队提供相应的支撑服务,包括演习计划制定、实施过程的模板化、执行过程的可视化以及最终演练报告生成与隐患跟踪。
经验快速复用:由于腾讯涉及众多业务场景,这些业务具有明显的差异性。因此,在实践演习过程中,重视总结优秀的或具有通用性的行业经验,并将其模板化,内部将这些模板化经验称为“预制菜”。通过这种方式,不同业务之间可以互相借鉴,实现快速学习和部署。
过去几年,腾讯云在内部持续推动混沌工程实践展开,云上故障数量和故障影响时长都显著下降。
仅在 2023 年过去五个多月中,内部就完成了超过 2000 次的混沌工程演习任务,跨越多个部门,覆盖 50 余团队,广泛进行深入推广与落地实施。
这些成果充分体现了混沌工程在腾讯云稳定性保障领域的作用,进一步推动了我们的稳定性保障工作向更高质量方向发展。
在于腾讯云客户交流的过程中,客户经常会问:腾讯面临这么多业务场景,是如何做稳定性治理的?为此,自 2021 年起,团队把面向腾讯内部几百款产品在演练实施过程中的经验和方法进行产品化,推出混沌工程产品腾讯云混沌演练平台,力求为客户提供故障注入能力和生命周期管理能力等实质性服务。
在未来,团队将持续关注混沌工程产品与用户业务实际业务场景的契合度。力求将故障注入产品与业务场景端对端地打通,并在隐患挖掘、问题治理和演习验证过程中形成闭环管理,这也正是团队一直在思考和推进的方向。
腾讯云已成功与金蝶等众多客户开展实际演练和落地项目,这些合作让我们积累了丰富的客户应用场景及经验。同时,在业内荣获信通院“混沌工程先锋实践者"优秀案例,获工信部云服务稳定运行演练“十佳优秀报告”称号,并成为首批通过可信云混沌工程平台能力要求最高等级 - 先进级认证企业。这些成果不断激励着我们提升混沌工程能力,共建稳定性治理体系。
随着产品化的发展,我们也将混沌工程能力扩展至专家服务领域。结合腾讯海量业务运维经验及腾讯云产品所具备的容灾能力,高可用服务专家团队致力于为公有云客户提供高可用容灾建设方案,从方案设计、评审、实施以及混沌演练验收以达成客户在容灾 RTO、RPO 的可量化目标。
高可用服务专家团队的周永飞也参与到下午场的“系统稳定性保障“圆桌讨论,在讨论过程中,周永飞针对稳定性保障建设和行业应用提出了诸多富有洞察力的建议和观点。以下为本次会议的摘要内容:
1. 云时代的稳定性挑战:云时代带来稳定性挑战涉及云服务提供商和客户两方面。云厂商面临多 AZ、多 region、全球化部署带来的网络环境、基础设施升级和软件版本发布等不稳定因素。客户方面技术能力参差不齐,容易出现业务稳定性、容灾方案设计上的不足。因此,地震、洪水等不可抗原因导致的 AZ、Region 级故障使技术能力偏弱的客户面临巨大挑战。
2. 混沌工程对稳定性的贡献如何衡量:在腾讯内部,混沌工程对业务稳定性验证是运维和质量团队中最关键的任务之一,尤其在腾讯云,我们的混沌蓝军已经是验证各产品稳定性,容灾能力,故障恢复能力的重要手段。并且也推出了混沌成熟度的评分机制,量化评估各个产品线在混沌当中的表现。
3. 可观测性与混沌工程的联合应用价值:其实是相辅相成的关系,混沌工程最关键的一环就是观测指标的设计与对照,对有效控制演练爆炸半径,实验结果解读,问题追踪等等都非常关键;同样混沌工程也能促进观测指标、问题定位链路追踪,以及日志在业务可观测的完善,尤其是在混沌演练中发现的对关键业务在未知故障场景的完善和补充。
4. 业界对服务韧性工程(SRE)的看法:韧性工程和混沌工程是 SRE 领域的关键部分,但不是全部。SRE 覆盖运维工具平台、容量规划、devops、可观测、应急事件处置等多个方面。由于国内环境下关注度较高,有一个误区认为韧性工程就是 SRE。实际上,质量和混沌在 SRE 领域虽然是关键,但 SRE 涵盖的领域远多于此。
腾讯云混沌演练平台(Chaotic Fault Generator)提供高效便捷、安全可靠的故障演习服务,除可视化故障注入服务外,还提供行业经验模板,监控护栏等核心功能,致力于帮助用户及时发现业务容灾隐患、验证高可用预案的有效性,从而提高系统的可用性和韧性。
如何快速实施混沌工程
产品体验:https://cloud.tencent.com/product/cfg
最佳实践:https://cloud.tencent.com/document/product/1500/90505
案例介绍:https://cloud.tencent.com/document/product/1500/83387
高可用服务:https://cloud.tencent.com/act/pro/high_availability_service?from=19589
微信扫码关注该文公众号作者