建于辽代的应县木塔,是我国现存最高、最古老的全木结构佛塔,被誉为中国古建筑的奇迹之一。在漫漫近千年历史中,它历经了风雨、地震和战火等各种自然和人为灾害,依然屹立不倒。
作为新兴技术产物的云服务,如今要同时为数以百万计的企业提供服务,承载着大量的关键业务系统,其可靠性备受关注。那么,云服务是否可以从应县木塔不倒之谜中学到一些什么呢?
亚马逊云科技大中华区解决方案架构总经理代闻介绍说,亚马逊云科技每天稳定启动的Amazon EC2计算实例就超过1亿,每秒 API请求数高达100万亿。要保证如此高密度的云服务持续运行不中断,构建云韧性是一项最基础的工作。
为此,亚马逊云科技从基础设施、架构设计和运营机制三个层面,来构建可靠的云服务。这与应县木塔的不倒之谜颇有相似之处。
应县木塔建在一个较为平稳和坚固的地基上,这对于多山多地震的山西而言非常重要。建造应县木塔的木材主要是榆木、松木,具有质地坚硬、耐腐蚀、抗虫蛀等特点,并通过蒸煮、干燥等处理增强耐久性。
云服务基础设施层的韧性,则主要针对数据中心、主机、机架、网络导致的系统故障,或者自然灾害导致的损坏。
亚马逊云科技的基础设施采用区域(Region)、可用区(Availablity Zone)、数据中心三层架构,通过地理位置的分散,来避免单点故障带来大范围的影响。
目前,亚马逊云科技在全球有34个区域,包括在中国的北京、宁夏和香港三个区域,以及刚刚推出的马来西亚区域。每个区域都独立运行,区域之间的这种隔离机制确保单个区域发生服务故障时,其他区域不受影响。
每个区域通常由三个左右的可用区构成,目前其全球可用区为108个。每个可用区有独立的电力、制冷和物理安全设施,距离则保持在100公里以内。这样既能够降低多个可用区同时发生故障的风险,又可以保证可用区之间的延迟低至毫秒级。
应县木塔千年不倒的核心要素是结构设计。全塔未使用一颗钉子,而是采用了非常复杂的榫卯结构,通过巧妙的接合方式将木材紧密连接在一起,使整个结构能够灵活应对外部压力。其底层的斗栱和悬挑结构,则形成了一个稳定的框架,带来极强的抗震性。
云服务架构设计层的韧性,则用于防范数据状态、应用程序状态异常、依赖项失效等故障风险。
代闻表示,亚马逊云科技通过四大要素来,来最大程度地减少故障发生时对客户的影响,即区域隔离和多可用区设计、控制面和数据面独立、单元架构、随机分片。
比如,在区域隔离和多可用区设计方面,其通过明确的物理和逻辑故障边界设定,来尽可能地降低故障发生时的“爆炸半径”。IAM属于典型的全球级服务,最近的不少宕机事故正缘于此。亚马逊云科技将Amazon IAM的增删改逻辑和数据存储架构,切分成细小的计算和存储单元。即便在极端情况下,故障影响范围仅限于无法创建新的IAM信息;而每个区域依然可以继续提供本区域的认证授权服务。
在控制面和数据面独立方面,亚马逊云科技服务分为控制平面和数据平面,并进行分离设计,即数据平面不依赖于控制平面而独立运行,在控制平面发生故障的情况下,数据平面仍能继续正常运行。
应县木塔能够保存至今,还得益于历代的保护和修缮。历史上,木塔经历过多次修缮,匠人在修复过程中保留了原有的结构和材料,并采取了适当的加固措施,进一步提升了木塔的稳定性。
云服务运营机制层的韧性,则是用于防范由运维操作、代码部署、配置错误等引起的故障。亚马逊云科技的运营机制分为4个模块:服务责任模型、运营就绪审查、持续安全部署、纠错流程。
比如,工程和产品管理工作由小型多学科团队领导,其对所提供的服务拥有强大的所有权,不仅负责设计和发布服务,还负责在生产过程中运营服务,并在出现问题时随时待命。
再比如,新服务发布之前,需要通过运营就绪性审查流程对所有新服务进行审查。发布团队需要回答一系列关于复原力等最佳实践的问题,并使用标准化的运行手册来确保服务符合标准。服务部署后,则要每周举行运营会议,检查系统的运营性能等问题。
值得注意的是,上述三个层面,是云厂商提升云服务韧性的有效举措。那么,作为云服务使用者的企业,又该如何构建自己的韧性系统呢?
代闻分享了亚马逊的韧性系统建设生命周期框架, 该框架包含五个关键阶段:设定目标、设计和实施、验证和测试、持续运营,以及响应和改进。
他强调说,构建韧性是一个持续的过程,而不是一次性的努力,需要不断重复五个阶段,以应对不断变化的环境和需求。
与此同时,没有100%的可靠性,企业需要在业务需求、可靠性、成本、系统复杂度之间取得均衡,为不同的业务找到最适合的系统韧性。