作者:穹谷|阿里云技术专家,ChaosBlade 社区以及商业化产品的 Founder 和 Maintainer ,乐于参与混沌工程布道。
2021 年 12 月 7 日,由信通院主办、混沌工程实验室承办的“混沌工程技术沙龙-金融行业精品专场”沙龙在北京举办,来自阿里云的技术专家穹谷分享“从甲方到乙方,如何做好混沌工程的行业化落地”。
企业系统云原生化,带动应用发布迭代速度越来越快,但分布式系统的复杂性也越来越高,从而导致故障频发,如 Google Cloud 服务器由于内部存储配额问题造成身份验证系统中断、AWS 处理流媒体数据服务出现问题,云服务宕机 5 小时等故障,都造成了重大影响。
由于系统不可预测的行为风险增多,云上复杂系统的稳定性难以保障,所以混沌工程逐步成为企业寻求业务连续性的重要方案。企业企图通过混沌工程用来保障生产环境的分布式系统在面对失控条件的时候仍然具备较强的韧性。
同时行业也在不断增强混沌工程领域的标准制定,信通院通过发布《混沌工程平台能力要求》、《混沌工程成熟度模型》、《混沌工程稳定性度量模型》等标准规范推动混沌工程领域发展,同时联合各企业成立混沌工程实验室,促进了混沌工程在国内快速发展。
自混沌工程原则提出,国内外头部互联网、云厂商等公司开始涌现一批初具形态的混沌工程平台服务,互联网的公司的特点使平台发展路线关注在产品化、生产环境、实验探索、云原生等方面。根据信通院联合各企业发布的《中国混沌工程调查报告》显示,在混沌工程开发技术上,甲方和乙方对技术产品有不同的选择。乙方(服务供给侧)更倾向于采用自研平台为辅助,而甲方(服务需求侧)更倾向于采用商业化平台作为辅助,在选择商业化平台时更加关注产品完善度、行业案例、安全、技术可控等能力,面对的问题如场景如何梳理、实施环境如何建设、稳定性如何评估、影响范围如何控制、实验流程如何制定、组织如何协同、落地价值如何体现、行业特性覆盖、运维体系如何集成等问题,所以不仅需要技术,还需要服务,融入行业特性结合实践模式来落地混沌工程。那如何去做呢?阿里巴巴结合内部混沌工程的演进,包括集团、商业化、开源等方向全方位提供混沌工程能力,结合行业化客户面临落地混沌工程的困难,提供了一套成熟的混沌工程行业化落地解决方案。
阿里巴巴混沌工程行业化的解决方案包含平台技术和服务两部分,平台技术部分包含混沌工程平台社区版和混沌工程平台企业版本。社区版本是代码全部开源,由社区开发维护的版本。企业版本是提供公有云 SaaS和专有云部署的版本,相比于社区版本,提供更符合企业级规模化、场景化、安全可控等平台需求。
混沌工程平台社区版是开源的,面向多集群、多环境、多语言的通用混沌工程平台,目的是解决用户开始着手启动混沌工程的问题。在平台上可以配置多个环境实现资源隔离,在每个环境中支持多主机、多集群、多容器资源管理和故障注入,还支持运行在这些资源上的 Java、Golang、C++ 等多语言应用;同时还支持托管业内主流的混沌工程实验工具如 chaosblade、chaos mesh 和 litmuschaos,可以在平台上实现一键部署;并且统一了实验界面,可以直接在平台上使用这些工具提供的实验场景。除工具托管功能外,还提供场景管理、多维演练、流程编排、稳态检测、演练防护、演练报告、多租户等能力,提供 OpenAPI 可供外部集成。社区版和 CNCF 生态紧密关联,如 Prometheus、HELM 等项目。
混沌工程平台企业版定位是提供规模化、场景化、自动化、安全的产品能力,覆盖 IaaS、PaaS、SaaS 全栈场景。采用社区版内核能力,可提供社区版往企业版一键升级的能力,同时针对行业化客户已有的运维系统,如全链路压测系统、环境技术、单元化容灾平台、预案系统、可观测等进行适配集成,通过与这些平台集成,可以很好的解决爆炸半径、稳态评估、自动化运行实验等问题。
行业化客户应用架构一般具备多语言、多平台、异构云、多供应商架构等特点,混沌工程企业版可以很好的适配集成,方便实现混沌工程一体化平台。除了适配集成外,企业版相比如社区版平台的能力更丰富,可从四个方面来看:
丰富的演练场景:企业版支持 200 多个故障场景、支持云服务、同时兼容 Windows 平台,支持预检、断网、恢复、复盘一站式的容灾断网演练,和服务级别的微服务演练。
多样化的演练形式:支持自定义演练机器、场景,可以将实验沉淀为经验库或者直接创建经验模板一键演练,简单便捷。提供高阶的演练方案,按需配置。支持可视化演练,在架构拓扑图上一键发起演练,可以很有效的查看演练状态和保障半径。
易用的演练平台:业务零改造即可使用企业版平台,支持架构自动化感知,实现自动梳理架构拓扑、演练可视化等。支持一键从社区版升级至企业版,满足企业级的需要。
安全的演练保障:提供多种演练恢复策略,如通过配置业务指标阈值来控制演练状态,安全可控。提供细粒度的权限管控等。
阿里巴巴混沌工程实践模式是一套建立在阿里内部多年混沌工程实践、社区开源讨论和多个企业项目案例的基础上,抽象出的一套通用混沌工程实践模式。通过此实践模式,可以大幅度降低企业在混沌工程课题引入、目标设定、组织设计等,确保有目的性的混沌工程落地。实践模式一共分为三类,业务导向型混沌实践、架构导向型混沌实践和组织导向型混沌实践:
业务导向型混沌实践,是一种以业务为视角的实践方法,通过模式模板,可以快速演练暴露业务架构设计的问题,降低突发故障对业务带来的影响。实践模式包含服务间的强弱依赖模式,涉及到金融、资金类的资损防控模式,涉及用户使用体验类的用户体验模式和客户端类终端容灾模式,典型的应用场景如手机银行、交易结算。
架构导向型混沌实践,是一种以基础设施为视角的实践方法,通过模式模板,从基础设施的使用者和运维者角度发现问题、度量稳定性,缩短故障恢复时间。实践模式包含验证监控覆盖度和有效性的可观测模式,通过对 SLI 演练验证对外提供 SLA 的服务等级协议模式,验证同城双活异地多活灾难恢复模式、验证服务自愈的故障恢复模式。使用场景有核心架构分布式改造、核心业务上云等。
组织导向型混沌工程实践,是一种全局视角度量和提升稳定性的实践方法,通过组织运营,可以大幅度提升混沌工程氛围,促进团队的组织协同,提升故障应急效率。实践模式包含计划性的故障演习模式、在特定时间组织红蓝军对抗的红蓝攻防模式、对生产环境发起的奇袭攻击模式。典型的使用场景有针对故障应急 1-5-10 的达标率考核、大型稳定性项目推动等。
通过咨询服务总结出一套混沌工程实践模式,可以更加聚焦的解决混沌工程层次化落地实践问题。在实际的客户交付中,根据客户阶段,逐步衍生出三种交付模式,即:社区版加可行性评估模式、企业版加规模化落地模式、企业版加行业深度共建3种模式。
模式1 :社区版+可行性评估模式(轻咨询) ,主要是通过开源的混沌工程平台加混沌工程专家经验,快速在企业中落地实施混沌工程,进行后续混沌工程全面铺开的可行性评估。
模式2 :企业版+规模化落地模式,通过公有云或专有云部署,借助此平台的企业级功能特性,可以实现在企业中规模化落地。
模式3:企业版+行业深度共建模式,通过专有云部署,通过专有云版本集成与被集成的能力,结合客户已有系统,进行深度共建,实现平台一体化。
借助混沌工程社区版和阿里巴巴多年在集团和客户沉淀的落地经验,切实解决客户面对混沌工程无从下手的窘境,快速落地混沌工程,实现混沌工程在企业落地的可行性评估。
这个模式的典型客户的案例如上,客户背景是为满足主机下移,对系统进行了分布式架构改造,自研分布式框架需要验证其高可用能力,但没有混沌工程相关经验,想借此项目在企业中落地混沌工程。客户目的也很明确,要求提供混沌工程技术方法论并教会相关测试人员如何做场景分析、部署混沌工程工具平台并教会测试人员如何基于 ChaosBlade 扩展故障场景、带领落地实施混沌工程,教会测试人员整个混沌工程实施流程。
针对客户的背景和目标,先对客户技术架构、业务架构、部署架构、稳定性保障等现状进行调研,产出稳定性分析报告,提出稳定性问题风险点,提供混沌工程技术培训,分析故障场景分析案例,带领客户基于客户自研的分布式框架做故障场景分析;同时指导客户基于 ChaosBlade 做自研故障场景开发,提供混沌工程整体技术方案和落地实施规划:
在客户侧部署社区版平台,基于已分析出的故障场景提供演练方案并评审,实施故障演练,产出规范化的故障演练报告和组织故障演练复盘,提供混沌工程后续规划建议。
整体的项目交付时间仅用 1 个月,达到指导和自行梳理自研框架故障场景几十个、指导实施故障演练两次,自行实施故障演练多次,发现高可用切换、故障自愈、监控告警等很多稳定性问题项目收益。为企业后续开展混沌工程规模化提供可行性评估。
混沌工程在各大互联网企业中的价值逐渐被大家接受,越来越多的银行、证券及保险金融类企业开始规划并落地混沌工程技术,这些金融类企业在面临分布式架构转型、云化技术升级以及金融信创下复杂的基础设施环境下,使用混沌工程技术治理复杂系统的稳定是,是一种快速且有效技术手段。在面对如何快速有效落地混沌工程实践上,缺乏经验是这些金融企业面临的最大调整,由于混沌工程基础平台本身具备行业无关性,通过创新项目引入成熟的混沌工程企业版本与服务成为越来越多的金融企业的首选。
混沌工程企业版提供丰富的演练场景、一站式演练能力,平台易用、安全可控,保障企业规模化部署实施,发现系统稳定性问题,提升系统韧性,如借助混沌工程平台提升故障应急效率,如故障发现能力、故障定位能力、故障处理能力、故障复盘等。可以帮助客户缩短建设大规模演练实施时间,提升演练执行效率,保障混沌工程实施投入产出比,让客户的精力放在架构风险识别和系统优化上。
某头部证券客户随着业务的发展和创新,系统数量和复杂度不断提升,生产运行面临着功能缺陷、性能容量、单点故障等威胁安全稳定运行的风险,需要从技术上提高系统的高性能和稳定性。通过借助阿里云混沌工程企业版成熟能力进行常态化、规模化演练实践,提前对生产系统中大量的故障场景下进行脆弱性的检验,最大化提前识别和消除技术风险,提升系统运行的可靠性。在为期一个月的稳定性专题保障项目中,通过混沌工程,获得了巨大收益:发现风险共计 23 类,超过 300 个问题点,演练次数 2000 多次,当日最高演练次数高达近 300 次,覆盖核心系统 300 个等;并基于此企业版平台开展混沌工程组织运营,如双随机演练、演练大屏看板、生产质量分析报告、演练数据运营等。
混沌工程企业版提供集成与被集成的能力,借助此能力,可以和客户的监控系统、变更系统、测试系统、应急系统、CMDB 等系统集成,根据行业系统特点,共同共建,如异构系统、国产化系统、网络云系统等,提供行业化混沌工程领域技术创新,如量化评价、场景探索、实验自动化等方面,实现共赢。
通过混沌工程企业版提供的标准化能力与客户已有系统进行适配集成,建设具备行业属性的混沌工程平台能力,满足行业需求,加速了客户在混沌工程领域落地与创新。
阿里巴巴致力于落地混沌工程及行业化解决方案,通过多种实践模式使混沌工程实施更聚焦,多种交付模式服务于各种不同需求的企业。大家可以通过以下链接快速体验阿里云混沌工程服务,或进行混沌工程解决方案咨询。
1)开源项目地址:
https://github.com/chaosblade-io/chaosblade
2)产品体验地址:
https://developer.aliyun.com/adc/scenario/e9b27357ab9c4785bc7f43fb62f872e3
3)解决方案地址:
https://www.aliyun.com/solution/cloudnative/chaosengineering
点击此处,立即上手体验混沌工程!更多混沌工程的讨论,欢迎进群沟通!扫描下方二维码或搜索钉钉群号:23177705 即可入群!