云解决方案如何帮助企业更轻松地保护应用,并做到防患于未然

亚马逊高级副总裁兼杰出工程师James Hamilton

现代企业为确保软件系统的持续可用而承受着巨大的压力。系统宕机不仅会给企业造成数百万美元的经济损失,还会对品牌形象以及客户产生负面影响。

所有企业都面临着越来越多的IT系统挑战。例如,持续增加的远程系统调用、日益复杂和分布式的系统,以及系统功能的频繁更新等都会增加系统中断的风险。

企业迁移到云端可以大大降低这种风险。云服务提供商规模化的运营方式,让其在基础设施韧性方面持续深耕。在亚马逊云科技,我们从一开始就在基础设施、服务设计与部署、运营模式和机制中将韧性考虑其中。例如,亚马逊云科技拥有99个可用区(截至2023年3月),由部署在世界各地的数据中心组成,可以承受几乎任何类型或规模的中断冲击。

亚马逊云科技为客户提供了可靠的基础设施,让客户构建和运行他们的应用。但同时客户也需要确保运行在基础设施之上的应用同样具有韧性。下面三种方法可以帮助企业提高韧性。

1.尽可能扩大自动化范围

根据Uptime Institute 的数据,大约70%的数据中心和服务中断是由人为错误造成的。(我预测这个比例会更高,这也是亚马逊云科技如此专注于自动化的原因。)因为手动操作会带来风险,为此从备份到测试需要尽可能地自动化,自动化是创建韧性架构的关键。位于马里兰州农村地区的一家独立医院CalvertHealth, 在将其应用恢复系统迁移到亚马逊云科技后也意识到这一点。

以前,电子健康记录的数据备份是在企业数据中心服务器上手动管理的,这些记录对于患者的护理至关重要。恢复时间目标(RTO)用于衡量中断和恢复服务之间的最大允许时间,这一数值曾为48至72小时。CalvertHealth将其应用恢复系统迁移到亚马逊云科技后,RTO降至两小时以下,缩短了97%。

在部署之前识别和解决代码中的问题,也是构建高可用性、高韧性应用的重要组成部分。手动审查依赖于审查人员的专业知识和识别潜在问题的能力。但是,借助机器学习(ML)加持的代码审查工具,企业可以实现这一过程的自动化,甚至还能优化应用性能。

Cognizant是世界领先的专业服务提供商之一,它使用亚马逊云科技的自动化代码审查功能来帮助开发和运营团队主动识别和解决问题,并确保其部署的性能、安全性和合规性超出了来自不同行业和地区的客户的要求。

2.持续测试来应对未知

持续测试是工程师理解系统如何应对未知情况的方法。实现这个目标的做法之一是故意搞“破坏”。这被称为“混沌工程”,由Netflix开创。

通过这种方法,企业能够执行故障注入实验,帮助团队营造真实世界所需的条件,来发现分布式系统中难以甄别的隐藏错误、盲点和性能瓶颈。

自21世纪初以来,亚马逊一直在不会对客户产生影响的精准控制的情况下,有意注入故障。这提高了我们的应变能力,确保我们为最坏的情况做好了准备。如果我们能触发罕见事件,并更频繁地调整应对措施,那我们就做好了准备。

另一种流行的测试方法是韧性“游戏日”(game days),它通过模拟一个失败或其他事件来测试系统、流程和团队的响应。这种方法的目的是尽可能逼真地演习如果异常事件真的发生,团队会采取的行动。企业可以在亚马逊云科技中使用其生产环境的完整副本进行游戏日演练。

3.统一可观测性指标

了解系统的运行情况对实现卓越的运营和韧性至关重要。企业不断收集和分析应用数据,才能更快地检测和解决应用可用性和性能方面存在的问题,从而改善最终用户的体验。但随着应用复杂性的日益增加,问题出现时很难快速定位并加以解决。

例如,Docebo是一家全球电子学习技术供应商,他们的开发人员在遇到问题时往往会花上几天时间进行故障排除。Docebo使用亚马逊云科技的多种分析服务,将其所有日志记录和跟踪数据进行结合,创建了单一事实来源。为此,公司将故障排除时间缩短了90%,修复错误的时间从70%-80%减少到15%以下。过去需要几天才可以完成的工作现在只需要几分钟。

行而不辍,未来可期

IT韧性是一段无尽之旅。新技术、新威胁和新的处事之道层出不穷。这就是亚马逊云科技不懈努力改进基础设施、服务设计、运营模式和机制,持续加强与发展云设施韧性的原因。亚马逊云科技将持续为客户提供广泛、深入的架构及运营最佳实践服务、工具和指导,为他们的韧性之旅提供支持。