作者:王聪彬

《黑神话:悟空》的火爆为众多取景地带了一波流量,其中最具代表性的当属应县木塔,这座历经古代工匠140年建造的木塔,堪称世界上现存最大的纯木结构塔。

木塔抵御了无数次自然灾害和战火洗礼,首先应县的地质结构稳定,奠定了良好的基础,而且木塔设计巧妙,斗拱结构巧妙地将木材之间的力量分散、传导,使建筑更加稳固和耐久,10万多块部件相互咬合,当然持续不断的修缮维护也非常重要,这些都是它千年不倒,伫立在此的秘密。

云计算基础架构的稳固与传统建筑的原理相似。亚马逊云科技2023年Amazon EC2平均每天会稳定的启动1亿个新的EC2平均每秒稳定的响应100万亿次的控制平面API请求,如此庞大的请求规模极大地考验着云基础架构的韧性与可靠性。

亚马逊云科技接住了全球数百万客户的选择与信任,在与客户共同成长的过程中,亚马逊云科技不断丰富自身服务,现已提供超过240种服务,并且韧性已经深入贯彻到每一项服务的设计之中。

“亚马逊云科技已经连续13年蝉联Gartner云基础设施和平台服务魔力象限领导者,这也和韧性密不可分。”亚马逊云科技大中华区解决方案架构总经理代闻说道。

打开网易新闻 查看精彩图片

亚马逊云科技大中华区解决方案架构总经理代闻

想要理解韧性,首先需要从可能引发故障的因素讲起。基础设施、系统架构、运营机制是主要主要出现故障的三个方面。基础设施问题包括数据中心、主机、机架、网络故障或自然灾害导致的损坏;架构设计涵盖数据状态、应用程序状态异常、依赖项失效等;运营机制主要由运维操作、代码部署、配置错误等引起的故障。

正如亚马逊CEO Andy Jassy所说的,“经验没有压缩算法”。亚马逊云科技在基础设施、系统架构和运营机制三个层面进行了业界领先的设计、实践与实施,通过不断的积累保证了韧性与可靠性

基础设施的韧性设计思路

亚马逊云科技在全球建设数据中心,首先会以城市为单元,城市单元叫做一个区域(Region)。在中国大陆有亚马逊云科技(北京)和(宁夏)两个区域。

可用区(AZ)是区域的下一级,亚马逊云科技将每个逻辑数据中心组称为可用区。每个区域由三个或更多可用区组成。比如宁夏区域有三个可用区,每个可用区又由多个或单个超大数据中心连接组成。每个可用区的数据中心都有独立的电力、制冷和物理安全设施。

亚马逊云科技在全球范围内建立了多个骨干网,确保各个区域之间的高速互联,骨干网配备冗余400GbE的网络,能够在不到三秒内传输100GB的文件。代闻指出,Amazon Aurora数据库能够在不到一秒的时间内将写操作从一个区域同步到另一个区域,确保在服务数百万用户时依然能够保持稳定和高效的性能都是骨干网的功劳。

截止目前,亚马逊云科技在全球34个地理区域运营108个可用区,包括刚刚在马亚西亚推出的新区域,这将帮助中国出海企业以更低延迟构建、运行更接近最终用户的应用程序。

系统架构的韧性设计要素

亚马逊云科技总结了自身韧性的四大要素:区域隔离,多可用区;控制面和数据面独立;单元架构;随机分片。

根据故障隔离边界,亚马逊云科技将服务划分为可用区级、区域级和全球级三种不同类别,从而控制故障发生时对客户的影响范围。

可用区级服务Amazon EC2是在单个可用区内运行的虚拟机服务,如果某个可用区发生故障,影响仅限于该可用区,不会波及其他可用区。

区域级别服务Amazon S3是对象存储服务,即使某个可用区出现故障,也不会影响整个区域的服务可用性,确保数据和服务的稳定性。

全球级服务Amazon IAM在全球级别的控制平面,通过将增删改逻辑和数据存储架构切分为分布式的“数据细胞”,IAM实现了高可用性和极小的爆炸半径,确保服务的韧性。即便在极端情况下,全球控制平面和数据下发出现故障,影响仅限于无法创建新的IAM信息,但每个区域的数据平面仍能继续稳定地提供该区域的认证与授权服务。

亚马逊云科技将服务拆分为控制平面和数据平面两个层面。这样设计出于两个原因:第一,确保云服务的数据平面能够独立于控制平面的状态持续稳定运行;第二,独立扩展互不影响。

单元架构设计的核心思想是将整个系统分解为更小的独立单元,这样一旦某个单元发生故障,影响仅限于该单元,不会导致整个系统的瘫痪,从而提高系统的整体稳定性和韧性。同时,随机分片可以进一步提高整个应用和系统的可用性。

运营机制的韧性设计模块

卓越的运营和机制是亚马逊云科技的差异化优势之一,亚马逊云科技的运营机制总结为4个模块:服务责任模型、运营就绪审查、持续安全部署、纠错流程。

服务责任模型:采用服务所有权模型,激励团队不断改进运营。工程和产品管理工作由小型、多学科团队领导,并拥有其服务的所有权。这意味着他们不仅负责设计和启动服务,还要在生产过程中管理运营,遇到问题时需随时响应。

运营就绪性审查:在发布或更新亚马逊云科技服务前,所有新服务都必须通过运营就绪性审查(ORR)。发布团队需回答关于服务复原力及其他最佳实践的问题,并通过标准化操作手册确保符合要求。服务部署后,每周会召开运营会议,检查系统性能及解决任何未决问题。

安全、持续部署:亚马逊云科技进行服务更新或推出新服务时会使用安全、持续部署管道。通过使用广泛的生产前测试、自动回滚和交错生产部署,将自动化部署安全性构建到发布过程中,能够最大限度地减少错误部署对生产造成的潜在影响。例如服务的更新从小处开始,更新首先推出到可用区内的单个服务器,并经过指定的等待期来验证没有出现问题。随后更新部署到整个可用区的其余部分,然后部署到其他可用区,然后部署到单个区域,最后部署到其余区域。

纠错流程:当出现问题时,会使用纠错(CoE)流程等事件管理机制,帮助团队找到根本原因。在问题得到缓解后推动全公司的工程冲刺,确保该问题在所有服务中得到解决,减少了未来类似事件影响另一个服务的可能性。这些学习会被记录,并纳入ORR流程,确保同类问题不再发生。

从Netflix到生成式AI,持续为客户构建韧性

通过高韧性基础架构,亚马逊云科技正在帮助客户实现同样的高韧性。Netflix是最早采用亚马逊云科技的公司之一,它在2008年开始云迁移,之前数据中心的存储硬件故障导致其服务中断三天,促使了Netflix决心将DVD租赁和流媒体服务迁移到云端。如今,Netflix在亚马逊云科技上使用了上百种服务,构建了多主多活的高韧性架构,确保Netflix能够为全球190多个国家和地区的超过2.6亿付费会员提供稳定可靠的视频服务。

亚马逊通过总结客户需求,推出了一系列开箱即用的云服务,帮助之后的初创公司和企业快速获得与Netflix相同的高韧性能力。比如使用Amazon Aurora Global Database服务,只需一键即可启用跨区域数据同步,大幅降低了构建高韧性系统的复杂度。

基于多年与客户和内部团队的合作经验,亚马逊云科技总结了构建系统韧性的四大关键经验:第一,系统韧性的提高是持续的过程,而不是一次性的努力;第二,业务需求、可靠性、成本、系统复杂度之间取得均衡;第三,以标准软件开发生命周期为蓝本,可轻松整合到企业现有流程中;第四,从业务、技术与持续运营等多个维度来帮助企业提高系统韧性。

基于这四条经验,亚马逊开发了韧性系统建设生命周期框架,包含设定目标、设计及实施、验证和测试、持续运营、响应和改进五个关键阶段。代闻强调,韧性是一个持续的生命周期,需要不断重复五个阶段,应对不断变化的环境和需求。

第一,设定目标:在这个阶段,组织需要明确定义韧性的目标和要求,评估现有系统的韧性水平,并制定改进计划。重点环节包括系统风险识别和业务指标识别。

第二,设计及实施:组织应基于韧性最佳实践,构建具有适当韧性控制措施的工作负载和系统。亚马逊云科技提供了许多增强韧性的服务和功能,如自动扩展、负载均衡、备份等。重点环节包括:备用、高可用方案,容灾方案等。

第三,验证和测试:提高通常的测试以及混沌工程,验证已知风险,探索未知风险。重点环节包括可观测性建设、混沌工程等。

第四,持续运营:实施各种运营最佳实践,如自动化、监控、变更管理等,持续提高系统的可观测性和自动化性。

第五,响应和改进:定期回顾韧性策略和措施的有效性,总结发生事故的根因,避免问题的再次发生,不断进行调整和改进。

在韧性系统建设生命周期框架的五个阶段,亚马逊云科技都提供了多种服务和工具,例如使用Amazon Resilience Hub设置目标,根据这些目标评估韧性状况,并根据Amazon Well-Architected Framework和Amazon Trusted Advisor的建议实施改进措施。在Resilience Hub中,客户可以创建和运行Amazon Fault Injection Service实验,这些实验允许客户测试其应用程序将如何响应某些类型的中断。

而且在现在生成式AI时代,韧性更是系统设计的关键。无论是AI模型的能力、日志分析,还是自动代码生成,这些自动化和抽象背后都依赖于坚实的韧性设计。尽管生成式AI增加了系统的复杂性和要求,但通过快速故障分析、自动化探测和智能建议,系统韧性得到了有效增强,使企业能够更从容应对未来挑战。