亚马逊AWS官方博客

AWS 为什么要为开源做贡献? 以 Firecracker 为例

长期以来,开源社区坚持的信条是:“好软件作品始于抓破开发人员的个人之痒。” 而在 AWS,我们不满足于编写好软件:我们要编写满足客户需求的软件。我们 90% 以上的构建工作都受客户需求驱动,剩下的来自直觉发现的客户需求以及代表客户的创新。在开源领域同样如此,这意味着我们在开源领域的投资方式和对象都具有极高的针对性,Firecracker 就是一个典型的例子。

为什么选择 Firecracker?

为响应客户希望停止管理服务器,转为将基础设施作为服务来购买的愿望,AWS 不断推动云市场的发展。最近,为了进一步实现这一客户价值,我们创新了无服务器的概念,让客户不再需要预置基础设施,同时也能获得更好的安全性。正如 Amazon 首席技术官 Werner Vogels 最近写道

我们预计很快将出现完整的一代开发人员,他们完全没有接触过服务器,仅编写业务逻辑。原因非常简单。不论是构建全新的应用程序,还是迁移旧程序,将无服务器原语用于计算、数据和集成,可让您受益于云服务所具有的最大敏捷性。

Firecracker 就是帮助实现这一客户创新的一种方式。在 Firecracker 推出前,客户告诉我们,当所有的容器都必须使用某个共享的操作系统内核时,现有的容器安全性边界不能在应用程序之间提供充分的隔离。我们开始研究 Firecracker,以在提供优异安全性的同时,提高客户容器应用程序的性能和资源效率。

开源化的 Firecracker 至少在两个方面令客户感到极有吸引力。

首先,在 Linux 等开源技术背景下代表客户进行创新时,如果我们也保持开源,将会更容易实现这一目标。Linux 内核在 Firecracker 内部运行。为确保持续有效满足客户的需求,我们需要 Linux 内核开发人员完全了解 Firecracker 的运行机制,包括它提供的特殊虚拟设备以及它有点独特的环境(例如没有 BIOS、没有 ACPI 表、只有一个按钮的特殊“键盘”)。Firecracker 的开源化减少了提交补丁时的冲突,此外还有许多其他优势。这有功于社区,也有利于客户。

其次,为了提高为客户进行创新的速度,我们相信开源可让我们更高效地与社区协作,不断从客户贡献中收获成倍的产品增益。当然,我并不相信开源在什么情况下都可以做到这一点。但对于 Firecracker,以及为了填补容器生态系统的一个巨大空白,开源是满足客户需求的最好方式。

更多贡献即将推出

开源始终是 AWS 战略的关键组成部分。事实上,正如资深开源拥趸(和 AWS 高级工程师)Wilson 强调的那样,AWS 一直是“构建和运行开源软件的自然之选。” 这始于 AWS 的始祖客户 Amazon.com。正如 Wilson 所指出,“可以说 2006 年 AWS 第一次推出的服务雏形,受 Amazon 自己在使用开源软件进行构建方面的经验影响极深。开源之所以会在云中风生水起,正是因为:云就是为运行开源而生!”

换句话说? “AWS 是自由和开源软件的福音,它让许多投资开源的公司和社区的存在成为可能。” 从 2002 年以来我为多家开源公司工作过,从它们那里我很清晰地看到了这一点,MongoDB、Alfresco 和 Nodeable 等公司的部分或全部业务都在 AWS 上经营。

未来展望?

在服务 AWS 客户方面,开源将占据越来越重要的地位。正如 AWS 开源主管 Adrian Cockcroft 所指出,“与几年前相比,客户使用的开源更多,也更加关注贡献,这正是 AWS 构建更多基于开源的产品并进行更多贡献的根本原因。” 当然,我们参与开源不是为了获得分析师或评论家的印象分。正如 Wilson 总结的那样,“[Firecracker] 开源化的基础是因为它最终会令客户受益。”

这正是我们一直致力于实现的初衷。也是您可以预期 AWS 会有更多而不是更少开源的原因。这不是因为它流行,而是因为它越来越有利于 AWS 服务我们的客户。

要了解更多有关 Firecracker 的信息,请参阅发布公告以及最近的 Firecracker 开源更新。很感兴趣? 请通过在 GitHub 上提交 Pull 请求进行贡献。