亚马逊云科技的技术思想实际诞生于 20 年前,非常具有前瞻性。当年亚马逊推出的 Prime 服务为用户数量带来了爆发性增长,于是亚马逊开始计划第二个名叫“Merchant.com”的项目,目的是为大型零售客户提供在线体验。
该项目投入了很多工程师,但没能如期交付。因为当时 Amazon.com 采用的是单体应用程序,庞大而且多平台组件交织在一起。为了给客户添加新功能,开发人员必须在这个单体程序上从零编辑和重写大量代码,主要是计算和数据库。此外,每次团队解决问题时,都仅限于解决自己项目中的问题,大家都在做着重复的工作。
为了加快应用程序的迭代过程,亚马逊以非常严格的方式理清业务并重新设计了架构,将单体程序重组为被称为“服务”的更小部分,还拆解了开发人员的职能层次结构,形成众多小型的“两个披萨团队”。每一个小团队都集中在特定的产品、服务或功能集上,赋予他们对应用程序特定部分的更多权限,以加快对自己负责的产品的决策过程。最后,Merchant.com 服务得以成功推出,亚马逊为用户提供了可自己设置价格、标题和可用性的 API,在没有任何推广的情况下,成千上万的开发者涌向这个 API。而这种用来构建 Merchant.com 应用程序的“微服务”思想,延续至今已经彻底改变了现代应用程序的构建方式。
截至 2021 年,亚马逊云科技包含超过 245 种产品和服务,包括计算、存储、网络、数据库、分析、部署、管理、机器学习、开发者工具等。虽然数量众多,但这种模块化、单元化的技术解决方案,作为一个整体在设计上又特别协调和流畅。据媒体报道,有国内知名技术专家参加 2016 re:Invent 时感叹:“看 Amazon Web Services 的架构,有一种感觉仿佛整个 Amazon Web Services 是一个人做的一样,模块定义、复用、互通,看的真是一个赏心悦目。”
重构云底座:构建可进化的系统
EC2 服务副总裁 Dave Brown 曾回忆道:“最初在南非的开普敦建立研发中心时,亚马逊云科技团队只有 8 个人,但我们当时做的事领先于时代。以至于当我们在 2006 年 8 月发布产品时,Reddit 和 Slashdot 上的大多数评论,都表示很难理解我们在做什么。一个世纪前,美国的很多大型制造企业自己发电为工厂供电,随着电网的普及,公司开始关闭自己的发电厂,因为他们可以随时随地获得更经济的电力资源。计算领域也应如此,就像早期电网的转变一样,算力可以在你需要的时候打开和关闭。” 亚马逊最初选择在开源 Xen 上进行修改定制的办法来实现 EC2 架构,通过 Xen hypervisor 虚拟化 CPU、存储和网络,并提供丰富的管理能力,让多个虚拟机 (VM) 在一台物理机器上运行,由管理程序提供虚拟机之间的隔离和多租户功能。 Xen Hypervisor EC2 架构,来源: https://www.allthingsdistributed.com/2020/09/reinventing-virtualization-with-nitro.html 这不是一蹴而就的事情,2013 年,亚马逊发布了 EC2 C3 实例,将网络进程卸载到硬件(将功能从软件转移到硬件)。2014 年,亚马逊云科技与 Annapurna Labs 合作,再次推出了 EC2 C4 实例。C4 将 EBS 存储卸载到硬件中,但仍然依赖英特尔至强芯片作为控制器。据报道,亚马逊云科技在 2015 年斥资 3.5 亿美元收购了 Annapurna,引入 C5 实例,用 Nitro hypervisor 取代了 Xen,将虚拟机与 ASIC 紧密耦合。Werner Vogels 表示,这个里程碑卸载了控制平面和其余 I/O,使用近 100% 的处理来支持客户工作负载,还启用了裸机版本的计算,催生了与 VMware 的合作伙伴关系,以启动 VMware Cloud on AWS。2017 年,亚马逊正式推出完整版 Nitro。 Nitro 是一组自定义硬件和软件,目的是将虚拟机管理程序、网络和存储虚拟化转移到专用硬件,从而释放 CPU 以更高效地运行。 2017 年的 Nitro 系统架构,来源: https://www.allthingsdistributed.com/2020/09/reinventing-virtualization-with-nitro.html
S3 的推出时间实际上比 EC2 还早 6 个月,最初设计时的一个重要原则就是“简单”,所以当时只提供了 GetObject 和 PutObject 功能,核心 API 只有四个 REST 命令(GET、PUT、LIST 和 DELETE)。Werner Vogels 和亚马逊前技术副总裁 Tom Killalea 在谈到 S3 的发展时,两人认为“‘尽可能的简单’是 S3 成功的关键之一,虽然这在当时颇具争议,但一个可进化的架构一开始不可能被设计得很复杂。”
开始时用户主要是用 S3 存储图像和视频数据,但随着时间的推移,越来越多的事务日志、parquet 文件、客户服务记录等数据被放进了 S3。然后用户想要的就不仅仅是“弹性存储”和“低成本”了,他们还希望能够让数百个应用程序使用这些共享数据集,于是亚马逊就添加了“Access Points”功能。这个过程足以说明 S3 的演进原则:用户希望用他们的数据来做什么,亚马逊云科技就添加什么功能或服务。通过技术和商业的服务,亚马逊云科技与用户建立了一个快速的反馈循环,成为一个快速成长的飞轮。
2006 年的时候,S3 只有 8 个服务(Services),到 2019 年,S3 已经拥有 262 个了。而且亚马逊致力让 S3 拥有更高性能、更低成本,推出了七种不同层次的存储产品:Standard、Intelligent Tiering、Infrequent Access、One-Zone Infrequent Access、 Glacier、Glacier Deep Archive,以及 S3 Intelligent Tiering。S3 Intelligent Tiering(智能分层)产品又分为“频繁访问”和“非频繁访问”两个层级,会自动将连续 30 天未访问的对象移动到“非频繁访问”层,降低了运营复杂度。2021 年,智能分层也从2个层级增加到了3个层级,添加了新推出的归档即时访问层,最经典的存储仍在不断进化。
S3 存储本身具备了计算存储分离的特性,在云原生时代,非常适合作为数据湖存储的核心。企业可以基于 Amazon S3 构建数据湖,同时利用原生 Amazon Web Services 服务,来运行人工智能或机器学习服务(SageMaker),从而可以更高效地处理各种结构化和非结构化数据。
S3 持久性设计为“11 个 9”(99.999999999%) ,意味着使用 Amazon S3 存储 10000000 个对象,则预期平均每 10000 年发生一次对象丢失。今年,亚马逊宣布 S3 存储的对象数量已经超过 200 万亿,每秒需要处理数千万个请求。如今,S3 已经演变为了庞大而健壮的分布式存储系统,为保持数据持久性,亚马逊于去年底宣布升级了 S3 的存储后端系统 ShardStore,引入了“自动推理”方法,以保证“崩溃一致性”,即系统崩溃时数据仍能保持“11 个 9”的一致性状态。
在全球化浪潮下,不少大型跨国企业会在全球设置多个站点,在构建全球化网络时,亚马逊云科技的用户可以利用 Amazon VPC 创建多个虚拟网络。传统的做法是利用 VPC Peering 功能,将区域内或者跨区域之间的 VPC 进行连接,利用 Direct Connect 或 VPN 实现非亚马逊云科技基础设施与亚马逊云科技的互联。但如果云上负载增多,管理工作将成倍增加,这时就可以采用集中管理链接的方案,亚马逊在 2018 年 Re:Invent 推出了 Amazon Transit Gateway。使用 Amazon Transit Gateway,可显著简化管理并降低运营成本,因为每个网络只需连接到 Transit Gateway,而不是连接到所有其他网络。
当网络在全球范围内延伸并且还需要混合各种技术时,企业构建、管理和监控它们的复杂度也会明显增加。在 2021 年 re:Invent 大会上,亚马逊云科技宣布了 Cloud WAN 全球网络托管服务。借助这项网络服务,企业可以借助于亚马逊的骨干网,使用 Cloud WAN 图形界面一键创建属于自己的全球网,实现设置中转网关或云连接,监控网络运行状况、安全性和性能等功能。
可持续发展
亚马逊作为世界级科技巨头,引领了“绿色云”改造。亚马逊表示将提前十年达成《巴黎协定》,并在 2025 年实现 100% 可再生能源,而且还设计了一套从基础设施到软件设计的具有前瞻性的解决方案。这些举措也取得了显著的成果,2021 年,亚马逊云科技可持续发展架构副总裁 Adrian Cockcroft 表示:亚马逊云科技的基础设施能源效率比普通美国企业数据中心高出 3.6 倍。同时,亚马逊在执行相同任务时,可以减少 88% 的碳足迹。
虽然如今各云厂商竞争激烈,但亚马逊云科技却始终能处于市场的领先位置。据相关数据显示,亚马逊云科技在云基础设施服务提供商中的份额最大,为 33%,客户也早已超过百万,无论是技术巨头、银行还是政府,不同的组织都在使用 Amazon Web Services 来开发和部署自己的应用程序。
早期的典型用户有 Netflix,从 2009 年就开始采用 Amazon Web Services,2015 年中 Netflix 关闭了自己的最后一个数据中心。纳斯达克从 2014 年就开始使用 Amazon Web Services 在云中存储股票交易所数据,今年再次增加了边缘解决方案的使用,将 Markets 逐步开始迁移到亚马逊云服务上。NASA 于 2000 年开始,利用 Amazon Web Services 服务,提供对照片、视频和音频的在线访问,上周,NASA 再次宣布采用亚马逊云服务为空间站构建“太空物流”基础设施体系......
这样的成绩归功于亚马逊不断地围绕客户业务进行技术创新,有业界专家认为,亚马逊云科技的一大亮点是能非常敏感地发现用户当前紧迫面临的是什么问题,并快速提供解决方案或者产品。这也像 Dave Brown 所说的:“我们可以应对几乎所有需求以及挑战,并且永远不会对客户说不。在亚马逊云科技,我们拥有‘顾客至尚’的文化,不仅满足他们当前需求,而且会预测他们未来的需求。”以客户为中心,不断进行创新,这也正是“第一天(Day one)”理念的一种体现。
面向未来的发展过程中,亚马逊云科技在这 16 年当中无疑有很多技术理念和决策经验值得我们借鉴和思考。