简单。第一个亚马逊网络服务(AWS)服务的名称Amazon S3以“简单存储服务”开头。
亚马逊首席技术官沃纳·沃格尔斯博士回忆起我们现在所说的云技术的早期,他说:“这很讽刺,因为我们试图做的是在互联网上存储数据——而且做得非常非常好——并不是那么简单。”“对于客户来说,它必须是‘简单的’,但设计和构建S3却不是。”
今天,我们在云端储存和访问各种各样的数据,很少付出努力或考虑它是如何发生的。人们很容易忘记15年前的情况。当时iPhone还没有上市。玛丽亚·凯莉(Mariah Carey)再次登上了美国流行音乐排行榜的榜首。喜剧大热《我为喜剧狂》首播。Facebook刚刚将业务拓展到大学生群体之外。
互联网在许多人的生活中越来越重要,因此,应该有一种简单的方法来在线存储和访问从缩略图到音频文件和电子表格的一切内容,即使不是对每个摆弄电脑的人来说,对技术人员来说也是有意义的。对于所有的创业者和想要创业的人来说,这更有意义,因为他们必须花费相当于数千美元,在很多情况下是数万美元,在他们自己的数据中心之前甚至能看到一个想法是否有脚.
因此,互联网存储的概念是人们所期待的,甚至是强烈要求的。然而,要想真正成功,它必须具有同等的安全性、持久性(从数据从未丢失的意义上讲)、始终可用性和可靠性。所有这些,也相当容易使用和负担得起。
另一些人则试图解决所有这些工程问题,建立自己的互联网存储,尤其是在处理大量扫描文档的大企业内。它通常不会成功,因为系统最终要么太难使用,要么太贵而没有意义。构建互联网存储系统不是轻而易举的另一个原因是,你不能直接拿出一个典型的文件系统结构,然后把它放到互联网上。
早期的S3团队必须弄清楚互联网上存储真正需要什么,然后发明一种方法来构建它。
当时的设计趋势是在软件套件中添加尽可能多的功能。但在与杰夫·贝佐斯(Jeff Bezos)和安迪·雅西(Andy Jassy)早期讨论如何从他们的互联网存储想法中剥离这一想法时,讨论得出了一个相反的结论。与那个时代所有过度工程化的软件相比,S3团队决定走相反的方向。他们会建立一个存储系统,做它需要做的事情,而且做得非常非常好。
几天来,我在西雅图国会山附近的Six Arms酒吧喝了几品脱锤头啤酒,在西雅图会议中心吃了百吉饼,该团队勾勒出关键要素用于分布式系统,也就是S3。
在他们创造的10个技术设计原则中,他们强调了通过去中心化消除瓶颈和单点故障。他们认为硬件会作为一种正常的操作模式而损坏,他们设计了一些方法来保持系统的健康,即使出现故障。他们预见到什么会成为一个成熟的云平台,在设计时就把目光放在了尚未建立的服务上。这意味着S3不应该试图成为一个为每个人做所有事情的单一服务,而是一个可以用作其他服务的构建块的组件。
最终的设计原则(实际上是整个工作的组织原则)具有尤达式的天赋,开发人员可以将其内化并在工作中表达出来。他们写道:“系统应该尽可能简单(但不是更简单)。”让我们稍微理解一下。
他们找到的是一个全新的系统,使用“对象”、“桶”和“密钥”来提供安全的互联网存储,开发人员可以实际使用,并负担得起每月每gb 0.15美元的存储费用(现在被称为S3标准存储的价格已经下降到每月每gig 0.02美元)。
它是如何工作的
S3团队使用对象、存储桶和键系统构建的一个类比是经典库。这不是一个完美的类比,但也差不多了。你可以这样想:
对象.在我们的S3库中,书籍是对象。对象可以是任何形式的数据:一张照片、一段音乐、一份文档、一次呼叫中心交换。数据本身对于S3是不透明的,但是对象也包含描述对象的元数据,比如内容类型和最后修改的日期。
桶.对象存储在桶中。在图书馆的类比中,桶的存在就像图书馆中的艺术史或地质部分一样。桶是你如何分类和组织里面的所有对象。桶可以包含单个对象,也可以包含数百万个对象或主题。一个桶可以容纳的对象数量没有限制。从这个意义上说,桶是我们图书馆中无限扩展的架子,以任何对客户有意义的方式引用里面的东西。
钥匙。把钥匙想象成我们图书馆的卡片目录。密钥(这些不是您可能听说过的加密密钥)包含bucket中每个对象的一些惟一信息。bucket中的每个对象都只有一个键。因为存储桶和键一起唯一地标识每个对象,所以S3可以看作是“存储桶+键”和对象本身之间的基本数据映射。您使用键前往正确的桶并找到正确的对象。
借书证.与普通的公共图书馆不同,它不是任何人都可以随意进入并开始在S3存储桶中翻找。访问受到严格控制,只有在授予权限后,某个bucket才能被公开,或对特定的一组人或另一种服务可用。换句话说,你需要正确的借书证才能进去。
从一开始,S3就被设计为可伸缩的。虽然S3团队预计人们会热衷于在线存储服务,但没有人清楚地看到即将发生的数据火箭般的增长,以及它将如何成为我们生活的方方面面的一部分。一位早期的S3团队成员将其比作人们在观看莱特兄弟试验他们的飞行器时的想法。你可以看到飞机和飞行将存在于我们的世界——莱特刚刚证明了这是可能的——但你永远无法想象乘坐商业航空公司的航班。
同样,在2006年,对我们大多数人来说,在手机上流媒体电影的想法似乎很神奇,更不用说与同事即时合作,通过视频与家人和朋友交换故事,或者看到火星景观的细节,听到3亿英里外火星的声音。我们如何生成、收集和分析各种数据,以及我们能够从中得出的见解,已经成为我们大部分工作的中心。
S3在这中间的15年里一次又一次地实现了数量级的飞跃。今天,S3存储桶中驻留了超过100万亿个对象。虽然这并不容易让我们理解,但100万亿大约相当于人脑中的突触或人体细胞的数量。数据增长并没有放缓。目前的估计表明,未来三年我们所有活动产生的数据量将超过过去30年产生的数据量。当然,我们需要一个地方来放置它。
虽然S3可能已经超出了团队最初的想象,但他们设计的基本方法仍然是服务的核心。它仍然基于对象、桶和键。它仍然专注于安全性、持久性、可用性和可靠性。即使它在继续发展,系统仍然尽可能地简单(但不是更简单)。
今年是第15届thAWS周年纪念。了解更多关于云的历史。