无论是观看电影、利用机器学习分析卫星图像,还是寻找晚餐约会对象,我们都理所当然地期望技术始终完美运行。信息技术(IT)已成为社交、工作、教育及医疗等领域的核心。正如过往经验所示,一旦发生中断,其影响往往是痛苦的。
我们拥有多个开发、测试、预发布和生产环境。这使我们能够建立一套流程,将系统从开发阶段实时推进至后续各阶段,确保服务不间断。
Roustem Karimov
1Password 创始人
与安全性一样,应用程序的可用性和韧性责任也是共享的。AWS 负责构建能抵御各类中断的云基础设施,主要通过在全球 AWS 区域部署多个可用区(AZ)来实现。每个可用区由一个或多个数据中心组成,拥有独立的电力、冷却和物理安全设施,并通过冗余超低延迟网络连接。截至目前,AWS 在全球 30 个地理区域已拥有 96 个可用区。
可用区在设计上既保持足够距离以降低单一事件风险,又不过于分散以确保业务连续性。当客户跨可用区部署工作负载或因突发事件需切换时,AWS 基础设施凭借备份及额外冗余措施,保障服务不受影响。
AWS 客户的责任则是确保在其基础设施上运行的服务在设计之初就充分考虑持续可用性与韧性。Cisco 工程副总裁 Justin Waite 表示,虽然全面韧性难以完全实现,但关键在于优化中断触发时的应对流程。
"在技术领域追求完美非常困难,"韦特指出,"技术迭代极快,完善的功能可能迅速过时。一切终将失效。关键问题是:如何优雅应对失败?如何在故障发生时确保良好的客户体验?"
给工程师留出安全试错的空间
韦特认为,云计算改变了创意转化为产品并快速可靠交付的流程。
"如今决策可在几分钟内做出,灵感迅速迸发。不再需要耗时一年规划如何在特定硬件和网络资源下部署系统。"
据韦特介绍,打造近乎零停机、运行顺畅的产品,关键在于为工程团队提供专属创作空间——让他们能在云工具上安全实验。这些工具如同开放画布,使开发者能探索“如果……会怎样”的场景,而无需担心破坏现有系统或引发核心业务问题。
"这与管理层直接下发带硬件规格的产品路线图截然不同。你会看到开发者通过更多实验来解决问题,"韦特说,"当然会有失败,但关键在于鼓励‘尝试与验证’的心态。想测试拔掉电源或按下按钮的后果?去试试吧。得益于云计算,开发者拥有了更大的工具箱。"
对于密码管理器 1Password 的创始人鲁斯捷姆·卡里莫夫而言,AWS 提供的“更大工具箱”使他与联合创始人得以创建公司,并为客户提供持续稳定的服务。
十多年前,卡里莫夫在与联合创始人戴夫·蒂尔从事其他工作时,将 1Password 作为副业进行原型开发。当时云工具匮乏,该项目尚不可行。但到了 2016 年,凭借 AWS 技术,大规模、实时且安全管理密码的商业模式终于变得可行。
如今,全球超 10 万家企业依赖 1Password 管理密码,并期望系统全天候可用。对 Karimov 及其团队而言,这意味着即使在流量激增、组件故障或遭受攻击时,也必须保持系统运行,否则客户可能被锁定在关键应用之外。
那么,他们是如何针对极端场景进行设计的呢?
"首先,AWS 确保我们没有单点故障,基础设施每个组件都有故障转移选项。此外,只需运行一个脚本,就能构建包含所有组件、数据库、缓存和应用服务器的完整 1Password 环境,"Karimov 表示。
基础设施自动化使 1Password 能快速、可预测且可靠地为新客户开通服务并支持现有客户。
"我们拥有多个开发、测试、预发布和生产环境,"Karimov 说,"这使我们能将系统从开发阶段实时推进至后续阶段,确保服务永不中断。"
1Password 的所有服务均依托 AWS 基础设施和云工具在云端运行,以实现持续可用性。
"若无云计算支持,仅靠手动操作无法实现高可用性,"Karimov 强调。
为事态恶化做好准备:抵御中断的三个建议
亚马逊杰出工程师兼高级副总裁 James Hamilton 提供了三种方法,帮助每家公司争取达到最高级别的可用性。
尽可能实现自动化。据 Uptime Institute 数据,大多数停机由人为错误引起,常出现在测试、备份和代码审查等环节。应尽可能实现自动化,从根本上避免此类错误。
针对已知和未知因素进行测试,主动破坏系统以验证韧性。测试可采取故意破坏系统并观察结果的形式,目的是让系统经受真实场景及极端情况的考验。通过在受控环境下测试极限,可在问题发生时及时修复并避免停机。若在灾难发生前演练应对措施,将做好充分准备。
持续收集并分析应用数据,并将其统一整合。拥有单一事实来源将使开发团队更容易发现并修复问题。若全员基于同一组数据并使用相同分析工具,将大幅减少排查问题和修复错误的时间。
了解更多关于 AWS 基础设施如何为弹性和可用性进行工程设计的详细信息。

