公司 《纽约时报》 地点 纽约州纽约市 行业 新闻媒体

挑战

几年前,当公司决定迁出其数据中心时,其在公有云上的首次部署是一些规模较小、不太关键的应用程序,这些应用程序在虚拟机上进行管理。《纽约时报》工程执行总监 Deep Kapadia 表示:“我们开始构建越来越多的工具,并且在某个时候我们意识到,将亚马逊视为另一个数据中心的做法对我们不利。” Kapadia 被任命领导一个交付工程团队,该团队将“针对云提供商为我们提供的抽象进行设计”。

解决方案

该团队决定使用 谷歌云平台 及其 Kubernetes 即服务产品 GKE

影响

交付速度提高。工程经理 Brian Balser 表示,一些基于虚拟机的旧部署需要 45 分钟;而使用 Kubernetes,“只需几秒到几分钟”。Li 补充道:“过去按周计划部署或必须与基础设施团队协调计划的团队现在可以独立部署更新,并且可以在必要时每天进行部署。” 采用云原生计算基金会技术可以在整个工程人员中实现更统一的部署方法,并为公司提供可移植性。

《纽约时报》成立于 1851 年,被称为“记录的报纸”,是数字领域的先驱:其第一个网站于 1996 年推出,当时谷歌甚至还不存在。几年前,该公司决定迁出其私人数据中心,其中包括位于曼哈顿昂贵房地产中的一个数据中心。最近,它又向前迈进了一步,走向了云原生。

《纽约时报》工程执行总监 Deep Kapadia 表示,起初,基础设施团队“管理亚马逊云中的虚拟机,他们在我们的数据中心部署更关键的应用程序,并在 AWS 上部署不太关键的应用程序作为实验。我们开始构建越来越多的工具,并且在某个时候我们意识到,将亚马逊视为另一个数据中心的做法对我们不利。”

为了充分利用云,Kapadia 被任命领导一个新的交付工程团队,该团队将“针对云提供商为我们提供的抽象进行设计”。2016 年年中,他们开始研究 谷歌云平台 及其 Kubernetes 即服务产品 GKE

网站可靠性工程师、团队成员 Tony Li 表示,当时,“我们有一些内部工具试图完成 Kubernetes 为容器所做的事情,但针对的是虚拟机。我们问,为什么我们要自己构建和维护这些工具?”

2017 年初,第一个生产应用程序(nytimes.com 移动主页)开始在 Kubernetes 上运行,仅服务 1% 的流量。如今,nytimes.com 网站面向最终用户的应用程序几乎 100% 都在 GCP 上运行,其中大部分都在 Kubernetes 上运行。

该团队发现,交付速度立即受到影响。工程经理 Brian Balser 表示:“部署 Docker 镜像与启动虚拟机相比要快得多。” 一些基于虚拟机的旧部署需要 45 分钟;而使用 Kubernetes,“只需几秒到几分钟”。

该计划是尽可能多地(而不仅仅是网站)在 Kubernetes 上运行,并且在此基础上,转向无服务器部署。例如,《纽约时报》填字游戏应用程序是基于 谷歌应用引擎 构建的,该引擎一直是该公司进行无服务器实验的主要平台。首席技术官 Nick Rockwell 最近告诉《首席技术官顾问》:“最困难的部分是让工程师们克服他们几乎不用做什么就能完成任务的障碍。我们的体验非常好。我们在将应用程序部署到容器服务方面投入了大量工作,我非常期待尝试将它们部署到 App Engine Flex 和 AWS Fargate 上,看看效果如何,因为这是一条很棒的迁移路径。”

当然,转向云原生也有一些例外。Kapadia 表示:“我们也有印刷出版业务。其中很多业务肯定不会走云原生路线,因为它们使用的是供应商软件,甚至是印刷纸质报纸的特殊机器。但即使是这些团队,如果可以的话,他们也在考虑使用 App Engine 和 Kubernetes 之类的东西。”

Kapadia 承认,对于一些工程师来说,学习曲线很陡峭,但“我认为,一旦你克服了最初的障碍,事情就会变得容易得多,实际上也会快得多。”

在《纽约时报》,他们做到了。随着团队开始相互分享自己的最佳实践,Kapadia 表示:“我们不再是找出某些事情的瓶颈。过去,大多数基础设施和系统都由一个集中式职能部门管理。我们已经打破了这种局面,部分原因是谷歌和亚马逊提供了让我们能够做到这一点的工具。我们为团队提供对其谷歌云平台项目的完全所有权,并为他们提供一组合理的默认设置或标准。我们让他们知道,‘如果这对你有用,那就太好了!如果没有,请来找我们,我们会想办法让它对你有用。’”

结果,Kapadia 表示:“这确实让团队能够以比过去快得多的速度前进。” Li 补充道:“使用 GKE 意味着每个团队都可以拥有自己的计算集群,从而减少了他们需要关心的单个实例的数量,因为开发人员可以将集群视为一个整体。由于从请求资源和连接的过程中去除了基于票证的工作流程,开发人员只需调用 API 即可获得他们想要的东西。过去按周计划部署或必须与基础设施团队协调计划的团队现在可以独立部署更新,并且可以在必要时每天进行部署。”

采用 Kubernetes 的另一个好处是:允许在整个工程人员中实现更统一的部署方法。Balser 表示:“以前,许多团队都在构建自己的部署工具。” 通过使用 Kubernetes 以及《纽约时报》使用的其他 CNCF 项目(包括用于收集其所有 AWS 服务器日志的 Fluentd、用于其 发布管道 的 gRPC、Prometheus 和 Envoy),“我们可以从这些技术的进步中受益,而不必费力追赶。”

这些开源技术为公司提供了更高的可移植性。Kapadia 表示:“CNCF 使我们能够遵循行业标准。这让我们可以考虑是否要放弃我们当前的服务提供商。我们的大多数应用程序都连接到 Fluentd。如果我们希望将日志记录提供商从提供商 A 切换到提供商 B,我们可以做到。我们今天在 GCP 中运行 Kubernetes,但如果我们想在 Amazon 或 Azure 中运行它,我们也可以考虑这样做。”

Li 将云原生计算基金会的项目称为“我们可以共同仰望和追随的北极星”。在该目标的指引下,该团队期待着在未来一年内让剩下的约 40 个产品工程团队中的 Hälfte 加入进来,以从该技术中挖掘出更多价值。Kapadia 表示:“现在,每个团队都在运行一个小型 Kubernetes 集群,但如果我们都能在一个更大的生态系统中工作,那就太好了。然后,我们就可以利用服务网格代理之类的功能,它们实际上可以在微服务之间进行大量检测,或者进行服务到服务的编排。这些是我们未来想要尝试的新事物。”