稳定可信赖的云服务如何构建?不妨看看亚马逊云科技是如何做的
伴随企业数字化转型的不断深入,信息基础设施和业务环境正在发生根本性的变化,这些变化让企业面临着多方面的挑战,维系企业业务安全的难度也与日俱增,这就意味着企业管理风险的方式也要迎来根本性的改变。
近几年来,IT韧性这一词被反复提及,通俗来讲,所谓韧性就是企业抵御风险的能力,是在不断复杂的环境中反弹的能力,特别是在现代企业中,为了确保软件系统的持续可用,IT系统承受着巨大压力,系统宕机不进会给企业造成数百万美元的经济损失,还会对品牌形象以及客户产生负面影响。
当下,几乎所有企业都面临着越来越多的IT系统挑战,例如,持续增加的远程系统调用、日益复杂和分布式的系统,以及系统功能的频繁更新等都会增加系统中断的风险。例如,持续增加的远程系统调用、日益复杂和分布式的系统,以及系统功能的频繁更新等都会增加系统中断的风险。
在此背景之下,越来越多的企业选择将业务迁移到云端以减少风险,云服务提供商规模化的运营方式让其在基础设施韧性方面有着持续的建设,亚马逊云科技就是其中突出的代表。
自从2006年推出首个云计算服务后,亚马逊云科技就一直在引领着云计算产业的发展方向,为全球顶级的大型企业和80%的初创独角兽企业提供安全稳定可信赖的云服务,诸如纳斯达克这样对安全稳定性有极高要求的金融客户也在使用亚马逊云科技,这都得益于亚马逊云科技在服务全球最大规模云计算客户过程中积累的一系列经验。
亚马逊高级副总裁兼杰出工程师James Hamilton是这一领域的专家,他的个人经历也充满了传奇,虽然拥有滑铁卢大学计算机科学硕士学位和维多利亚大学计算机科学荣誉学士学位,但最早的时候他却是一名汽车技师,为包括玛莎拉蒂、法拉利、兰博基尼等品牌在内的豪车服务,然后在IBM和微软工作,在IBM时期,James Hamilton主要领导IBM C++编译器团队,并担任IBMDB2的首席架构师,而在微软时期,他先后担任了微软Exchange托管服务的领导者以及SQL Server WebData团队的总经理,同时负责微软SQL Server的相关工作。
这位传奇工程师认为,有三种方法可以显著帮助企业提高韧性。
第一是尽可能扩大自动化范围,Uptime Insitutde的数据指出,大约70%的数据中心和服务中断是由人为错误造成的,与机器不同的是,手动操作必定蕴藏着风险,为此从备份到测试的流程都要尽可能自动化,这也是创建韧性架构的关键。
第二是持续测试来应对未知。这也是工程师理解系统如何应对未知情况的方法,而实现这个目标的做法之一就是故意搞“破坏”,这种被称之为“混沌工程”的方法最早由Netflix开创。通过这种方法,企业能够执行故障注入实验,从而营造真实世界所需的条件,以发现分布式系统中难以甄别的隐藏错误、盲点和性能瓶颈。
James Hamilton表示,自本世纪初以来,亚马逊就在不会对客户产生影响的精准控制的情况下,有意注入故障。这实际上变相提高了亚马逊的应变能力,确保其能够在最坏的情况下做好准备,一旦触发了罕见时间,可以第一时间调整应对措施。
除了“混沌工程”外,另一种流行的测试方法是韧性“游戏日”,该方法通过模拟一个失败或其他事件来测试系统、流程和团队的响应。企业可以在亚马逊云科技中使用其生产环境的完整副本进行游戏日演练。
第三则是统一可观测性指标。对企业来说,了解系统的运行情况对实现卓越的运营和韧性至关重要。只有不断收集和分析应用数据,才能更快地检测和解决应用可用性和性能方面存在的问题,从而改善最终用户的体验。但随着应用复杂性的日益增加,问题出现时很难快速定位并加以解决。
多年以来,为了构建稳定可靠的云服务,亚马逊云科技一直在持续投入,在服务设计和部署机制中构建保障措施,并将韧性根植于运营文化中。通过这种富有前瞻性的设计,可以保证在业务发生中断时,对客户的影响能够最小化。
亚马逊云科技遍布全球且分散的基础设施实际上成为了其可靠性的核心,实际上,亚马逊云科技的基础设施由分布在33个地理区域的105个可用区组成,这些区域又由一个地理区域内的多个相互独立,且在物理上分隔的可用区组成。每个可用区都有独立的电力、制冷和物理安全设施,可用区之间通过冗余的超低延迟网络连接。同一区域内的可用区之间具有足够的距离,最远可达约100公里,既能防止相关故障,但又能实现单位毫秒级延迟的同步复制。
作为唯一一个在单个区域内提供三个或更多可用区的云服务提供商,亚马逊云科技通过更多冗余和更好的隔离来控制故障的影响面,常见的发电机和冷却设备的故障点不会在可用区之间共享,并且设计为由独立的电力变电站供电。为了获得高可用性的同时可现更大的容错能力,客户可以将他们的应用程序设计为在多个可用区中运行。
即便具体到亚马逊云科技的具体服务,亚马逊云科技在设计之初也将高可用性作为目标,即便云服务的依赖项受到影响,系统也能维持稳定性。这在亚马逊云科技内部被称为静态稳定性,例如EC2实例在启动后就能具备与数据中心中物理服务器相同的可用性。
最后,在用户接触到的层面,亚马逊云科技还提供了一系列专门构建的服务,以增加客户自身的IT韧性。
具体来说,客户可以使用Amazon Resilience Hub设定韧性目标和评估当前状态,并根据Amazon Well-Architected Framework和Amazon Trusted Advisor的建议进行改进,以及通过Amazon Resilience Hub创建和运行Amazon Fault Injection Service实验,以测试应用程序如何响应中断。
而一旦故障真的发生,客户也能通过Amazon Backup、Amazon Elastic Disaster Recovery (Amazon DRS)和Amazon Route53 Application Recovery Controller (Route53 ARC)等服务来快速响应中断并恢复业务,从而确保客户在面对故障时也能保持业务的持续性。
“新技术、新威胁和新的处事之道层出不穷。这就是亚马逊云科技不懈努力改进基础设施、服务设计、运营模式和机制,持续加强与发展云设施韧性的原因。亚马逊云科技将持续为客户提供广泛、深入的架构及运营最佳实践服务、工具和指导,帮助客户在云中构建和运行弹性应用程序。”James Hamilton在最后表示。