随着分布式架构成为主流的系统架构设计方案,业务系统的迭代速度越来越快,后端系统架构越来越复杂,单一节点问题可能被无限放大,大规模分布式系统的稳定性保障能力越来越成为业界关注的重点。与此同时,伴随着技术角色分工越来越细、技术专业化程度越来越深,分布式系统的架构特性为其稳定性建设中的架构设计、组织设计等也带来了新的挑战。很多企业缺乏解决分布式架构下的系统稳定性、服务高可用建设相关问题的经验。
如何全局、精准、高效地进行分布式系统的稳定性建设工作?为此,中国信息通信研究院在以“云赋新生,精益求精”为主题的首届“精益软件工程大会”上,发布了《分布式系统稳定性建设指南》蓝皮书(以下简称《指南》)。《指南》由中国信通院云计算与大数据研究所牵头,联合来自混沌工程实验室的 37 家企业共同完成(完整企业名单请参考文末附件)。作为一份总体性的稳定性建设指南,《指南》在业界首次从全局角度出发对分布式系统稳定性建设工作进行拆解和分析,务实、有效地输出有价值的观点,能够比较全面地帮助中国企业在分布式系统建设、配套组织、运营机制设计层面进行指导落地,实现国内软件发展向更高目标迈进。
指南核心观点
在技术变更、业务挑战加剧以及良好政策引导的背景下,系统稳定性能力建设成为企业等机构组织提升业务连续性能力的核心关注点。
来源:中国信息通信研究院
分布式系统稳定性建设总体视图
系统稳定性是对产品能力的基本要求,保障产品的稳定性,就需要开展稳定性能力建设。稳定性能力建设是一个系统化工程,从硬件到软件,从人员到机制,内容涉及组织内多部门协作、稳定性流程规范制定、体系化技术实现、稳定性文化建设等一系列工作集合。
《指南》在明确提出分布式系统稳定性建设总体视图的同时,给出了通过评价指标实现量化的稳定性建设目标——“降发生”和“降影响”。
在贯穿软件生命周期全过程的稳定性工作中,从故障的视角来看,稳定性建设的最终目标是“降发生”和“降影响”。
来源:中国信息通信研究院
稳定性建设目标视图
“降发生”,即降低故障发生的概率。支持应用建设“三高能力”,即高可用、高性能、高质量,从方案设计阶段即采用面向失败的理念来设计系统架构,并通过一系列技术手段验证系统“三高能力”是否符合预期。
“降影响”,即降低故障发生后的影响范围。要实现该目标,系统需要具备早感知、快定位、急止损、优改进四大能力。其中,由于故障感知最基础和重要的原则就是完善监控告警,因此可以通过可视化的监控告警能力,感知系统的异常变化,从而尽早发现甚至预测系统故障,实现早感知。
为了实现量化评价,《指南》根据企业规模和发展阶段从三个维度提出稳定性评价指标,分别是业务可用程度、用户影响程度以及资金损失程度。业务可用程度是最通常使用的系统稳定性评价指标,即 SLA。通常情况下,SLA 有两种计算方式:一种是通过时间维度计算,一种是通过用户请求状态计算。除 SLA 之外,还可以配合使用 RTO、RPO 等指标,监测数据的完整性。用户影响程度主要是指受影响的用户数量;资产损失程度主要从应用方的角度出发,评价故障发生后对组织产生的影响。
脱离实际业务需求的技术往往于业务产生不了最大实用性价值,只有在服务业务保障业务持续可用过程中沉淀下来的技术才是最有价值的技术。“从业务来,到业务去”无疑是稳定性保障设计的关键原则。正因为如此,《指南》从软件生命周期、运行周期逐步分解稳定性保障的要点及相关建设思路,供从业者根据自身实际情况选择、规划。
在稳定性建设目标的指导下,《指南》提出系统稳定性建设思路的四大建设模式:良好的系统架构和实现、完备的容量规划设计、优秀的运维方案设计以及规范的安全设计。《指南》给出了会影响稳定性的架构设计要点,在提升核心业务稳定性的同时带来成本节约的容量设计要素,满足持续迭代发布以及线上运维诉求的变更可控、系统可观、演练到位的运维方案设计要点等。
其中在架构设计这部分内容中,根据不同的系统业务特点和系统规模,总结了诸多设计要点,并且对每种设计思路中可能出现的问题进行了全面的总结考虑。例如,去除单点方面,总结了多达 10 种可能存在的单点类型,以及它们的对应的解决方案;在依赖设计方面,首先给出不同依赖程度的判断标准,指出高等级服务如果强依赖于低等级服务或资源,可能会出现的重大隐患,接着分析了可能存在的依赖关系,如基础软件不应依赖于底层操作系统、应用服务不应依赖于特定的硬件设施,等等。
类似于这种全面清晰的梳理总结还有很多。在容量设计章节,从数据增长预测、网络流量、消息量、内部资源使用情况等多个方面给出切实可行的资源分配建议,有助于分布式系统的降本增效。在安全设计章节,《指南》列举了常见的安全漏洞类型,以及其所产生的原因,并给出对应的防范措施,从系统设计安全、部署和操作系统安全、数据安全、网络安全这 4 个方面筑牢分布式系统的安全防线。
分布式系统稳定性建设路径的确立,需要在完成稳定性建设需求分析、稳定性建设实现分析的基础上,确立一系列具体的建设活动来进行推进和落地。《指南》第五章首先阐明进行稳定性建设需求分析的方法,即如何确认分析对象主体,然后怎么确定被分析对象的稳定性需求;接着从 4 个维度给出稳定性建设分析的主要内容;然后从机制和能力两个大方面助力分布式系统的稳定性建设活动;最终从全局视角利用故障预防工具、故障止损工具等稳定性建设工具来构建各项关键能力。
值得注意的是,稳定性保障能力建设是项体系化工程,庞大而复杂,非一朝一夕可以完成。故障总会发生,“没有任何一项技术或者平台能够绝对规避风险”,因此需要通过不断补全完善体系中需要的能力来最大限度降低故障发生概率或者提升故障应对速度。对于稳定性保障从业者而言,《指南》建议结合业务发展不同阶段所面临的关键风险形势进行规划,拟定合适的建设优先级及实施路径。
不同行业, 在推进分布式稳定性建设过程中会呈现出不同的特点。《指南》分析了互联网业、银行业、证券业、通信业、云服务业、零售业、能源业七大行业的不同特点,从其面临的稳定性挑战出发,一一给出了定制化的解决方法,从而为不同行业的分布式系统稳定性能力建设提供有价值的参考。
以互联网业为例,其受益于云原生的 DevOps、Kubernetes、微服务、服务网格等技术红利,实现了运营效率和用户价值的交付效率的双提升。但是,复杂的架构也为系统稳定性保障带来了新的挑战:微服务间调用关系错综复杂,给服务性能瓶颈分析、快速定位影响评估范围和根因分析等方面带来了诸多挑战;在复杂的分布式系统中,不仅无法阻止故障的发生,而且由于分布式系统日益庞大,也很难评估单个故障对整个系统的影响;此外,容量评估不准确也对稳定性保障有着较大影响。
如何针对互联网业的痛点打造定制化系统稳定性解决方案?《指南》在架构设计方案中提出:所有的架构都是不完美的,因此在做业务架构设计时都必须要考虑服务稳定性保障,如消除单点、依赖设计、弹性设计、应用多活等,同时搭配建设可观测性能力、混沌工程平台、全链路压测等工具平台并建立故障应急机制。
当前,分布式系统稳定性建设迎来快速发展的窗口期,需要在人才、生态、标准多个领域发力,采取多重措施来提升总体发展水平,推动稳定性建设迈入新阶段。
国内分布式系统稳定性建设尚处于起步阶段,需要在人才、生态和标准三大领域及早布局。首先,专业化人才稀缺,急需拓宽技术交流平台,国内 IT 系统稳定性保障服务领域蕴藏巨大商机。其次,稳定性生态协同低效,急需赋能产业协同创新。第三,标准体系研制滞后,只有规圆矩方才能行稳致远,因此行业标准研究、建设工作,以及围绕系统稳定性保障相关技术完善标准体系需要格外关注。
可以预见,分布式系统稳定性建设将开辟全新的赛道,市场参与者顺应时代发展需求有望大有可为。第一,稳定性建设能力发展不均,传统行业需求蓄势待发,正逐步丰富系统稳定性建设赛道的商机。第二,企业架构阻碍稳定性建设,组织观念正逐步进化,建设稳定性保障组织的重要性凸显。第三,过度依赖开源将致“懒”,企业应创新采纳开源技术,推进开源协作模式在行业中的应用,提高对开源技术的应用水平和自主可控能力。
👇下载完整版蓝皮书