与Werner Vogels进行了第二次对话

2021-03-08 05:02:25

受到ACM的CACM员工通信,2021年3月,Vol。 64号第3页,第50-57页10.1145 / 3434232评论当我加入亚马逊1998年时,该公司拥有一个基于单一的网站,只销售书籍并在五台服务器上运行单片C应用,少数伯克利DBS用于钥匙/值数据和关系数据库。那个数据库被称为#34; acb"哪个站在" amazon.com书籍,"一个未能反映我们抱负范围的名称。 2006年,Acmqueue在Jim Grey和Werner Vogels,亚马逊' S CTO之间发表了一次谈话,其中Vogel解释说,亚马逊应该被视为在线书店,而是作为技术公司。在介入14年中,亚马逊' S分布式系统,以及用于构建和操作它们的模式,已经影响力。在这种后续谈话中,Vogel和我特别注意从单个分布式系统的演变中学到的教训 - Simple Storage Service(S3) - 在2006年对话的时间内公开推出。 -tom Killalea.

Tom Killalea:在AWS RE的主题:2019年12月发明会议上,您表示,2006年3月在推出时,S3由八项服务组成,到2019年,最多262个服务。当我坐在那里,我想到了一个令人叹为观止的数字,而且它袭击了我很少写的关于如何在很长一段时间内出现大规模的。这是我们的软件从业者社区对我们感兴趣的旅程。这是一个看不见的等级的演变,并且肯定地讨论了' t经过广泛讨论。

Werner Vogels:我绝对同意这是无与伦比的规模。即使今天有互联网服务已经达到了令人难以置信的规模 - 我的意思是看缩放,例如为什么?因为我们早些时候开始;它'只是一个时间问题,同时与您的客户持续发展的严格反馈循环,连续地发展服务。相信我,当我们设计它时,当我们建立它时,我认为任何人都认为任何人都会最终预期了它的复杂性。我认为我们确实意识到的是,我们不会在六个月后或一年后运行相同的架构。

所以,我认为前面的一个原则是不要把自己锁定在你的体系结构中,因为两三个规模的秩序,你将不得不重新思考它。我们早期思考的一些事情难以追求一种不可改变的建筑,我们可以在将来建立在未来的东西,当我们将功能添加到S3 - 是革命性的时。我们以前从未这样做过。

即使与澳门州亚马逊一样,我们也有我们想要提供的独特功能,但我们总是完全确定我们想去的地方。通过S3,没有人在之前做过,并记住我们在设计它的房间时,[AWS杰出的工程师] AI vermeulen在董事会上放了一个数字:我们将在六个月内存储的物体数量。

Vogels:我们在它结束时放了两个额外的零,只是为了安全。我们在前两个月里吹过它。

S3周围的一些事情是独一无二的。我们在新闻稿中用一组十个分布式系统网站推出。 (见侧边栏,"分布式系统设计原理。")

这是非常独特的,建立一个根本声音的服务,以便你可以在它之上发展。我想我们有点惊讶。

八个服务真的只是获得,放置和管理传入的流量的根本作品。最重要的是,有这么多不同的宗旨,S3,但耐用,当然,胜过一切。 11 9年9月(99.999999999%)我们承诺通过三个可用区域复制客户是独一无二的。我们的大多数客户,如果他们拥有本地系统 - 如果他们'重新幸运 - 可以将两个对象存储在同一数据中心中,这为它们提供了四个9。如果他们真的很好,他们可能有两个数据中心,实际上知道如何复制两个数据中心,并为他们提供五个9。但在耐用性方面,119'是无与伦比的。它胜过一切。耐久性的需求也意味着例如,八个微服务中的一个是连续检查所有对象的一个​​CRC(循环冗余校验),以及现在有数万亿的对象。 '围绕持续检查的工人,以防一个物体有点腐烂或类似的东西。

我们在早期学到的最大的东西之一 - 和#39;这引用我使用 - "一切都失败了。"真的,一切都失败了,一直在意想不到的方式,我从未知道的事情。位在内存中翻转,是的。您需要使用CRC或校验和来保护各个数据结构,因为您可以在其上信任其中的数据。 TCP(传输控制协议)应该是可靠的,而不是位点的翻转,但事实证明它并非如此。

killalea:用分布式系统发射的宗旨是独一无二的。十四年后,原则会有所不同吗?这个期望原则应该是常青树的期望;是否会有物质改变?

Vogels:不是这些;这些是我们在分布式系统中使用的真正基本概念。十个原则与S3分开,说明这就是您希望在规模构建分布式系统的方式。我们刚刚证明了S3是应用这些技能的一个非常好的例子。

一些正在缩放的​​其他科技公司,同时进行搜索引擎等,通常只有一项任务,例如搜索真的很好。在亚马逊零售商的情况下,我们不得不做所有的一切:机器人,机器学习,大批量交易处理,摇滚固体传递网页,你叫做它。在计算机科学教科书中没有,在Amazon.com上被推到了边缘的计算机科学教科书中,'我们以无与伦比的规模运作,拥有真正的工程师 - 但他们是实用的工程师 - 我们在建造S3之前进行了变化,以便回到基本面,以确保我们建造的是根本声音,因为我们不知道它是什么一年都在看起来像。为此,我们需要拥有一个非常坚实的基础。

killalea:S3成功的钥匙之一是,在发射时,它可以像它一样简单,不仅仅是GetObject和Putobject。在很有争议的时候,因为提供的似乎太赤裸了。凭借后敏感的好处,您如何反思这一争议,并从那时起,这将如何设置S3来演变?你提到了不断的建筑。

Vogels:它有点矛盾,因为当时的大多数技术公司都在提供一切和厨房水槽,它会带来非常厚的书籍和10个不同的合作伙伴,可以告诉你如何使用该技术。我们走了一条路,杰夫[贝佐斯]以前描述的年份,作为建筑工具而不是平台。平台是大型软件平台公司在提供技术的旧式方向。

如果你会从Win32到.NET,很明显,供应商会告诉你如何做到这一点,它会带来一切,厨房水槽 - 不是小的建筑物,而不是#34;这是如何你应该构建软件。"

在我们开始S3之前,我们开始意识到我们所做的可能性地改变了软件正在建造的方式和使用服务。但我们不知道这是如何发展的,所以建立客户可以建立的小,灵活的工具更重要(或我们可以在自己身上建造)而不是在那个特定的时刻准备好一切和厨房水槽。这不一定是一个时间问题;我们相信我们要添加到S3的界面,到S3的界面,应该由我们的客户推动 - 以及下一代客户如何开始构建其系统。

如果您将所有内容和厨房水槽作为一个大平台构建,您可以使用前五年的技术构建,因为它的设计和构建需要多长时间并将其所有人提供给您的客户。我们希望与我们的客户提高更快,并与我们的客户有一个非常快速的反馈周期,"您如何为2025年开发?"

发展在过去的五到十年里发生了根本性的变化。我们需要建立合适的工具,以支持您构建软件的激进变化率。而且,你可以预测,你可以'您必须与您的客户合作,等待他们如何使用工具 - 特别是如果这些是从未建成的工具 - 并查看他们所做的操作。所以,我们坐下来问,"什么是最小集合?"

在那里'我要指出的另一件事。亚马逊与技术方面的Amaxon之间的差异之一是在零售中,您可以尝试出地球,以及客户不喜欢它,您可以将其关闭。在AWS中,你可以' t做到了。客户将在您身上构建业务,您可以' T'因为你不再喜欢它,或者认为别的东西更好。

您必须真正认识到API设计。 API是永远的。一旦你把API放在那里,也许你可以版本它,但是你可以'一旦你&#39就把它带走了它。在API设计中保守和简约有助于您构建您可以添加更多功能的基本工具,或者哪些合作伙伴可以在顶部构建图层,或者您可以在其中开始将不同的构建块放在一起。从一开始就是这样的想法:我们可以让我们的客户驾驶&#39,而不是我们坐在后面的房间思考,而#34;这就是世界应该看的东西喜欢。"

killalea:在定义MVP(最低可行产品)时非常简单的想法现在已经获得了广泛的采用,但S3在发射时将其推向极端。在那些早期的日子里,AWS团队应该先持有持久性服务的讨论:一个对象商店或钥匙价值商店或块商店。有一种感觉,最终每个人都会在那里,但是在一支小团队中有必要的测序。首先发射S3是非常有意的,例如,EBS(弹性块商店),例如,在2008年8月。您可以与我们分享理由吗?

Vogels:相当有点是从我们如何建造自己的系统,其中一个钥匙值商店是最重要的。我们和#34; Mishap"在2004年12月,我们的数据库供应商之一,我们决定深入了解我们如何使用存储,结果证明我们对存储的70%是钥匙值。其中一些价值观很大,有些值得很小。其中一个驱动了Dynamo的方向,就小键,表界面,类似的东西,另一个成为S3,S3更像是一个Blob和更大的价值存储,具有一些不同的属性。

S3早期的大奖赛之一是直接的HTTP访问对象。这就是每个人都是一个赢家,因为现在突然在每个网页,应用程序或其他任何东西上,你可以通过使用HTTP来拉开对象。这是闻所未闻的。也许在开始时有些东西我们认为更受欢迎,并没有结果是案例 - 例如,Bittorrent接口。它被使用了吗?是的,它确实被使用了。但它是否会批量使用?不,但我们推出了FTP访问,这是人们真正想要的。

所以,有时它似乎不是很性感的事情,但它真的我们的客户习惯了什么。再次,您可以构建一个简约的界面,您可以以强大而坚实的方式构建,如果您从第一天开始增加复杂性,即使您了解您,也可以在某种程度上更加困难。'重新添加客户想。

有些东西我们在第一天知道,但这里有一个更好的例子是当我们推出DynamoDB并采取类似的最小方法。我们在推出的那天知道客户已经想要次要指数,但我们决定在没有它的情况下启动。事实证明,客户回来说他们希望在数据库中的各个字段上进行IAM(Identity和Access Management) - 比他们想要的二级指标更多。我们的方法使我们能够重新定位路线图并弄清楚客户最重要的事情。在DynamoDB的情况下,它结果与我们的想法非常不同。

killalea:我认为大部分谈话将是关于不扩张性的。正如我在RE所说的那样:发明,我的思绪转向胆量,并在第39条法律:"一个复杂的系统,这些系统总是被发现从一个工作的简单系统中发展出来。从头开始设计的复杂系统永远不会有效,无法修补以使其工作。你必须用一个工作简单的系统开始。"您认为这适用于S3如何发展的情况如何?

Vogels:这是S3后面的基本思维。我们可以建立一个复杂的系统吗?大概。但是,如果你建造一个复杂的系统,它就更难发展和变化,因为你在复杂的系统中做了很多长期决策。如果您在非常简单的界面上做出长期决定,那就不会受到这么多的影响。因为你可以在其中构建。复杂的系统更难发展。

让我给你举个例子。添加到S3的一个服务是审计能力 - 审计您的物体是否仍然是新鲜和活力的,并且没有触及或任何东西。这是我们所做的第一个审计版本。然后我们开始开发CloudTrail(于2013年11月推出),必须将其整合到S3中。如果你' ve建造了一个复杂的系统,其中包含了一件巨大的所有这些东西,或者可能在五个巨石中,那种集成将是一个噩梦,它绝对不会导致您对随着时间的推移而发展的设计。

Mai-Lan Tomsen Bukovec [副总裁,AWS Storage]谈到了耐用性文化。例如,在S3之内,耐用性胜过一切,甚至可用性。想象一下,如果服务是下降:你不能丢失对象。您的数据不能消失;也许它需要你五分钟才能再次访问它,但是你的对象应该永远在那里。 Mai-Lan' S团队具有耐用性的文化,这意味着他们使用TLA +等工具来评估他们的代码,看看其算法是否正恰好他们'重申应该做的事情。

现在让&#39说,要简单,你有一个2,000线算法。与正式验证工具一起评估的东西,'有50,000行,忘了它。简单的构建块允许您拥有一种文化,它完全关注您想要做的事情,无论是审计还是在使用TLA +或耐用审查或其他任何内容时审计或#39;'我们在S3中改变的一切都经历了耐用的审查,确保这些算法中的任何一个都没有以外的方式做任何事情。

Vogels:这里的一个很好的例子,在S3的上下文中。如果您查看Libssl,它有一个荒谬的代码行数,其中有70,000种参与处理TLS的代码。如果要创建漏洞,请写出数十万行代码。它'我们系统中最脆弱的接入点之一。

Vogels:是的,所以我们写了S2N,它代表了5,000行中的信号 - 噪声。对这5,000行的正式验证可以究竟可以介绍它的所作所为。现在,S3上的一切都在S2N上运行,因为我们对该库有更多的信心 - 不仅仅是因为我们建立了自己,而是因为我们使用所有这些额外的技术来确保我们可以保护我们的客户。每次转移都有端到端加密。在如何使用加密存储中,您希望我们创建键吗?你想把钥匙带给我们吗?你想带上钥匙并将它们放在KMS中(关键管理服务)吗?或者你想完全管理你的钥匙吗?我很确定我们开始与一个人开始,客户开始说,"但那的是那个。"你也需要那些。

如果您将其作为具有小微服务的可不断变化的架构,您仍然可以在休息时允许加密只是为了执行其工作,然后您可以考虑如何开始添加其他可以从S3执行其他类似事件的服务。到冰川。如果此对象已在30天内触摸,请将其移动到缩小实例存储;如果它然后曾经触及过两个月,那么它就被触动了两个月,自动将其移到冰川。

Killalea:您在2010年2月推出了S3对象版本。这是如何适应服务的不断发展的期望,客户想要使用它以及提出的建筑需求?

Vogels:它主要是我们的客户群,关于什么是最好的界面 - 真正倾听人们的要求' S要求。诚实地,不可动提器是比拥有分布式锁经理的规模更大,这是难以建立和运作的。它需要在不同的合作伙伴之间进行很多协调,并且失败模式并不总是很好地理解。

所以,我们决定采取更简单的解决方案:Object版本控制,正式称为S3对象锁定。您可以在锁定对象中完成两件事。首先,一旦你创建它,你只能改变它,在区块链的世界中,这是一个非常有趣的概念。您还可以在其中设置两个属性:一个是保留期(例如,未来30天内无法删除这一点);另一个是合法权,它与保留期无关,基本上表明,直到授权用户明确地对其采取动作,无法删除此对象。

事实证明,对象版本控制在监管要求的背景下非常重要。您可能需要能够告诉您的医院或监管审查员,该目的在未来六个月内保存在现场存储中,然后在30年后它被移动到冷库。但能够向监管机构证明您实际使用的技术仍然在30年内仍然存在是一个挑战,以及我们在那里建造了所有这些额外的能力。

Killalea:没有传统的显式锁定对开发人员的责任转移到他们的代码中或使用版本控制。这是一个非常有意的决定。

Vogels:它是我们在20世纪80年代和1990年代自动使用的这些技术之一,也许在2000年代初 - 具有数据库和类似的东西的分布式锁管理器。您可能已经使用了关系数据库,因为这是您拥有的唯一工具,它随附交易,因此您使用的事务,无论您需要还是不需要的交易。我们希望以不同的方式思考对象商店,了解其要求;事实证明,我们的方法给客户提供了做正确的工具,以便做他们想做的事情,除非他们真的想要锁定和解锁,而是没有什么可以轻易扩大的东西,而且它难以扩展客户了解。我们走了这种不同的方式,我没有听到很多

......