"这很讽刺,因为我们当时试图在互联网上存储数据——并且要做得非常出色——却并不那么简单,"亚马逊首席技术官沃纳·沃格尔博士回忆道,他回想起我们如今所称的云计算的最初阶段。"对客户来说,它必须‘简单’,但设计和构建 S3 的过程却并非如此。"
互联网日益成为许多人生活的重要组成部分,因此,对于技术人员而言(尽管并非所有摆弄电脑的人都如此),在网络上提供一种简便的方式来存储和访问从缩略图、音频文件到电子表格等各类内容的想法显得合情合理。这一理念对初创企业创始人及潜在创业者来说更是意义非凡,因为他们往往需要投入数千美元,在许多情况下甚至数万美元,来建设自己的数据中心,直到他们甚至能看出一个想法是否有发展潜力。
因此,互联网存储的概念是人们所期待甚至热切期盼的。然而,要真正取得成功,它必须在安全性、持久性(即数据永不丢失)、始终可用性和可靠性方面达到均衡,同时还要易于使用且价格实惠。
其他人曾尝试实现所有这些工程目标,并构建自己的互联网存储系统,尤其是在处理大量扫描文档的大型企业中。这些尝试通常没有取得成果,因为最终的系统要么难以使用,要么成本过高而不具可行性。另一个原因是,构建互联网存储系统并非易事,你不能简单地将典型的文件系统结构直接套用到互联网上。
早期的S3团队必须弄清楚互联网存储真正需要什么,然后发明一种构建方案。
当时的设计趋势是在软件套件中尽可能添加更多功能。但在与杰夫·贝佐斯和安迪·贾西进行早期评审,深入探讨如何具体实现其互联网存储构想时,讨论得出了一个相反的结论。与当时所有过度设计的软件不同,S3团队决定反其道而行之。他们将构建一个只需完成必要功能的存储系统,并将其做到极致。
在西雅图 Capitol Hill 区的 Six Arms 酒吧,伴着数日与一杯杯 Hammerhead 啤酒;以及在西雅图会议中心享用贝果,团队勾勒出关键要素为最终成为S3的分布式系统。
在他们制定的 10 项技术设计原则中,他们强调通过去中心化来消除瓶颈和单点故障。他们假设硬件故障是正常运行的一部分,并设计了在系统出现故障时仍能保持稳健运行的机制。预见到这将发展成为一个成熟的云平台,他们在设计时着眼于尚未构建的服务。这意味着 S3 不应试图成为为所有人提供一切功能的单一服务,而应作为一个组件,供其他服务作为构建模块使用。
最终的设计原则——也是整个工作的核心组织原则——带有类似尤达大师般的智慧,让开发人员能够内化并在工作中体现。他们写道:“系统应尽可能简单(但不过于简化)。”请细细体会这句话的深意。
他们最终打造了一个全新的系统,使用“对象”、“存储桶”和“键”来提供安全的互联网存储服务,开发人员可以实际使用且负担得起,价格为每月每吉字节 0.15 美元(如今称为 S3 Standard 存储的价格已降至约每月每吉字节 0.02 美元)。
工作原理
S3 团队利用其对象、存储桶和键系统所构建的内容,可以用经典图书馆来类比。这个类比并不完美,但非常接近。可以这样理解:
- 对象:在我们的 S3 图书馆中,书籍就是对象。对象可以是任何形式的数据:照片、音乐片段、文档、呼叫中心交换数据等。数据本身对 S3 而言是透明的,但对象还包含描述该对象的元数据,例如内容类型和最后修改日期。
- 存储桶:对象存储在存储桶中。在图书馆类比中,存储桶类似于图书馆中的艺术史或地质学专区。存储桶用于分类和组织内部的所有对象。一个存储桶可以包含单个对象,也可以包含数百万个对象或主题。存储桶能容纳的对象数量没有限制。从这个意义上说,存储桶就像我们图书馆中无限可扩展的书架,以对客户有意义的方式指代其内容。
- 键:可以将键视为我们图书馆的卡片目录。键(这些不是您可能听说过的加密密钥)包含每个对象在存储桶内的唯一信息。存储桶中的每个对象都恰好有一个键。由于存储桶和键的组合可以唯一标识每个对象,因此 S3 可以被看作是一个在“存储桶 + 键”与对象本身之间的基本数据映射。您使用键来定位到正确的存储桶并找到正确的对象。
- 图书馆卡:与普通公共图书馆不同,并非任何人都可以随意进入并开始浏览 S3 存储桶。访问受到严格控制,只有在获得授权后,存储桶才能设为公开或对特定人群或其他服务可用。换句话说,您需要正确的“图书馆卡”才能进入。
从一开始,S3 就被设计为可扩展的。尽管 S3 团队预见到人们会对在线存储服务充满热情,但没有人能清晰地预见数据将迎来火箭般的爆炸式增长,以及它将如何成为我们生活诸多方面的一部分。一位早期的 S3 团队成员将其比作人们观看莱特兄弟试飞飞行装置时可能产生的想法:你能够看到飞机和飞行将在我们的世界中存在——莱特兄弟刚刚证明了这是可能的——但你永远无法想象自己会乘坐商业航班出行。
同样,在2006年,对我们大多数人来说,在手机上看流媒体电影的想法简直如同魔法,更不用说与同事实时协作、通过视频与家人和朋友分享故事,或是从3亿英里之外看到火星地表的细节并听到火星的声音。如今,我们生成、收集和分析各类数据的方式,以及我们能够从中得出的见解,已成为我们许多活动的核心。
在过去的15年里,S3一次又一次地实现了数量级上的飞跃。如今,S3存储桶中存放的对象已超过100万亿个。虽然这个数字难以直观理解,但100万亿大致相当于人脑中的突触数量或人体内的细胞数量。而且数据增长并未放缓。目前的估计表明,未来三年内我们所有活动所产生的数据量将超过过去30年产生的数据总量。当然,我们也需要一个地方来存放这些数据。
尽管 S3 的规模可能已超出团队最初的想象,但其设计的核心理念仍然是该服务的基石。它依然基于对象、存储桶和键。它依然高度聚焦于安全性、持久性、可用性和可靠性。即使它仍在不断演进,该系统也始终遵循“尽可能简单(但不过度简化)”的原则。
今年是第15thAWS 的周年纪念日。了解更多关于云的历史。

