无论我们是在手机上播放电影,还是用机器学习模型分析卫星图像,或者只是寻找晚餐约会,我们只是希望我们所依赖的技术每次都能完美地工作。信息技术(IT)越来越多地成为我们社会生活、工作、学校、医疗保健系统等的中心。正如我们都经历过的那样,当中断发生时,其影响可能是痛苦的。

对于构建我们使用的数字产品和服务的公司来说,满足我们日益增长的期望意味着确保这些服务始终可用,没有停机时间,即使在需求激增、自然灾害、网络攻击或人为错误的情况下也是如此。这种一致性被称为99.999%的正常运行时间,用工程术语来说就是“五个9”,而亚马逊网络服务(AWS)工具正使越来越多的客户实现五个9的可用性。

我们有多个开发环境、测试环境、登台环境和生产环境。这允许我们有一个过程,实时地将系统从开发移动到测试、登台和生产,并且从不错过任何一刻的服务。
Roustem卡里莫夫
1Password创始人

与在云中运行的应用程序的安全性一样,这些应用程序的可用性和弹性的责任是共同的。AWS的部分交易是建立一个云基础设施,可以承受几乎任何类型或规模的中断。AWS在很大程度上首先通过在世界各地的AWS区域中构建多个可用性区域(AZ)来实现这一点。每个可用性区域由一个或多个数据中心组成,这些数据中心具有自己的电源、冷却和物理安全性。AWS区域内的az通过冗余的超低延迟网络连接。根据最新统计,AWS在全球30个地理区域内拥有96个可用性区域。

从支持公共卫生组织应对大流行,到帮助体育迷更近距离地了解比赛,亚马逊网络服务数据科学家的生活从来都不乏味。

可用性区域设计为在地理上相隔足够远,以降低任何事件可能影响AWS区域内另一个数据中心的风险。但是,对于客户来说,如果他们在多个可用分区中有工作负载(许多都是这样),或者由于任何原因(无论是由于需求大幅上升还是地震)不得不切换到另一个可用分区,那么业务连续性就不是一个问题。AWS基础设施有用于备份的备份,还有其他备份。

AWS客户一方的责任方程是确保他们在AWS基础设施上运行的服务在设计时考虑了相同的持续可用性和弹性。思科工程副总裁贾斯汀·韦特(Justin Waite)表示,虽然这种完全的弹性可能并不总是可以实现,但关键在于优化出现中断时启动的流程。

韦特说:“在技术领域很难做到完美。“起起伏伏、滴答滴答发生得如此之快,以至于你可以努力完善某件事,然后有人可能会发明一种工具,让它完全过时。一切都会在某一时刻失败。问题是,“我们如何优雅地失败,以及当失败发生时如何确保正确的客户体验?”

给工程师安全实验的空间

韦特说,云已经改变了将一个想法转化为一种可以快速可靠地提供给客户的产品的等式。

灯泡的插图。

“现在,可以在几分钟内做出决定,灯泡可以亮起来。它不需要花一年的时间来计划和思考我们如何在特定的地区、数据中心或托管地,以及特定的硬件、网络等方面把所有这些都运转起来。”

根据Waite的说法,构建“像魔法一样”工作的产品(基本上没有停机时间)的一个关键因素是给工程团队自己的创作空间——一个他们可以自由安全地修补云工具的地方。这些工具的功能就像开放的画布,允许开发人员向前推进产品,并开始制定“假设”场景,而不必担心会破坏任何东西,并在核心业务中引起问题。

“这与管理层分发带有硬件规格的产品路线图有很大不同。你开始看到开发人员解决问题——不一定是用更聪明的方法,而是通过更多的实验。”“当然,会有一些失败,但这是为了鼓励‘试后再买’的心态。想知道当有人拔下插头或用户按下按钮时会发生什么吗?很好,就是这样。尝试物联网(IoT)设备或服务?酷,就是这样。因为云,开发者有了更大的工具箱。”

terrformation结合了本地专业知识和AWS云计算工具来重新种植植物。

鲁斯坦·卡里莫夫,密码管理器的创始人1密码在美国,AWS云提供的“更大的工具箱”使他和他的联合创始人能够创建他的公司,并为客户提供持续的服务。

十多年前,当Karimov与联合创始人Dave Teare一起首次创建1Password原型时,作为他们其他工作的一个副项目,他和他的团队现在还没有可用的云工具。他说,因此,1Password还不可能实现。但在2016年,随着AWS技术触手可及,他说这种安全、大规模、实时管理密码的商业模式终于有了意义。

如今,全球有超过10万家企业依靠1Password来管理他们的密码,他们希望在任何时候都可以使用1Password (1Password也为个人和家庭提供服务)。对于卡里莫夫和他的团队来说,这意味着即使在流量异常高、代码的某个组件出现故障或黑客试图攻击他们的系统时,也要保持系统运行。否则,员工、经理和高管(1password的客户)可能会突然被锁在他们的关键应用程序之外。

那么,他们是如何应对世界末日的呢?

“首先,AWS使我们能够确保没有单点故障。基础设施的每个组件都有一个故障转移选项。除此之外,我们实际上可以通过运行一个脚本来构建一个完整的1Password服务——整个环境——包括所有组件、数据库、缓存和应用服务器。”

基础设施的自动化使1Password能够快速、可预测和可靠地为新客户提供服务。

“我们有多个开发环境、测试环境、登台环境和生产环境,”Karimov说。“这使我们能够实时地将系统从开发转移到测试、登台和生产,并且不会错过任何一刻的服务。”

1Password通过云运行其所有服务,依靠AWS基础设施和云工具来实现这种持续可用性。

“如果我们试图手动操作,没有云,我们的正常运行时间是不可能的,”卡里莫夫说。

为事态恶化做好准备:抵御干扰的三个建议

亚马逊杰出工程师和高级副总裁James Hamilton提供三种方法为每家公司提供最高水平的可用性的最佳机会。

亚马逊杰出工程师、高级副总裁詹姆斯·汉密尔顿的照片。

尽可能实现自动化。根据正常运行时间研究所(Uptime Institute)的说法,大多数宕机都是人为错误造成的,通常在测试、备份和代码检查等任务中引入。尽可能地实现自动化,这样就不会出现人为错误。

测试已知和未知的东西,在它们真正坏掉之前把它们打碎。测试可以采取有目的地破坏某些东西并观察发生什么情况的形式。重点是让您的系统适应您可以预见的现实场景以及那些似乎不可能的场景。通过在受控环境下测试系统的限制,您可以准备好修复问题,并在问题发生时避免停机。如果你练习你在灾难发生前会采取的行动和步骤,那么你就会做好准备。

持续收集和分析来自应用程序的数据,同样重要的是——统一数据。拥有单一的真相来源将使您的开发团队更容易发现问题并修复它们。如果每个人都从相同的数据集读取数据并使用相同的分析工具,那么您可以大大减少故障排除和修复错误所花费的时间。

了解AWS基础设施是如何设计的弹性和可用性