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

挑战

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

解决方案

该团队决定使用 Google Cloud Platform 及其 Kubernetes 即服务产品 GKE

影响

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

《纽约时报》创办于 1851 年,被誉为“官方记录报纸”,同时也是数字领域的先驱:其首个网站于 1996 年上线,甚至早于 Google 的成立。几年前,该公司决定迁出其私有数据中心——其中包括一个位于曼哈顿昂贵地段的数据中心。最近,它通过转向云原生,又向前迈进了一步。

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

为了最大限度地利用云,Kapadia 被任命领导一个新的交付工程团队,该团队将“为云提供商提供给我们的抽象设计”。2016 年年中,他们开始考察 Google Cloud Platform 及其 Kubernetes 即服务产品 GKE

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

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

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

计划是将尽可能多的内容,不仅是网站,都运行在 Kubernetes 上,并在此基础上向无服务器部署迈进。例如,《纽约时报》填字游戏应用是基于 Google App Engine 构建的,该平台一直是该公司尝试无服务器技术的主要平台。“最难的部分是让工程师们克服‘他们需要做的事情如此之少’这个障碍,”首席技术官 Nick Rockwell 最近告诉 The CTO Advisor。“我们的经验非常非常好。我们在将应用部署到容器服务方面投入了大量工作,我非常高兴能尝试将这些应用部署到 App Engine Flex 和 AWS Fargate 上,看看感觉如何,因为这是一个很好的迁移路径。”

当然,转向云原生也有一些例外。Kapadia 说:“我们也有纸媒出版业务。” “其中很多肯定不会走云原生之路,因为他们使用的是供应商软件,甚至是印刷实体报纸的专用机器。但即使是这些团队,如果可能的话,也在考虑 App Engine 和 Kubernetes 等技术。”

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

在《纽约时报》,他们做到了。Kapadia 说,随着团队开始相互分享他们的最佳实践,“我们不再是解决某些问题的瓶颈。” “以前,大多数基础设施和系统都是由一个集中式职能部门管理的。我们某种程度上打破了这种模式,部分原因在于 Google 和 Amazon 提供了允许我们这样做的工具。我们赋予团队对其 Google Cloud Platform 项目的完全所有权,并为他们提供一套合理的默认设置或标准。我们会告诉他们,‘如果这样对你适用,太好了!如果不适用,就来找我们,我们会想办法帮你解决。’”

Kapadia 说,因此,“这确实让团队能够以比过去快得多的速度前进。” Li 补充道:“使用 GKE 意味着每个团队都可以拥有自己的计算集群,减少了他们需要关心的单个实例数量,因为开发者可以将集群作为一个整体来对待。由于取消了基于工单的资源和连接申请流程,开发者可以直接调用 API 获取所需。以前按周进行部署或需要与基础设施团队协调排期的团队,现在可以独立部署更新,必要时可以每天部署。”

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

这些开源技术为公司带来了更高的可移植性。Kapadia 说:“CNCF 使我们能够遵循行业标准。” “这让我们思考是否要离开当前的云服务提供商。我们的大多数应用都连接到 Fluentd。如果我们要将日志提供商从提供商 A 切换到提供商 B,我们可以做到。我们今天在 GCP 中运行 Kubernetes,但如果想在 Amazon 或 Azure 中运行,我们也可以研究一下。”

Li 将云原生计算基金会的项目称为“我们可以都仰望并追随的北极星”。在这颗星的指引下,团队正展望在未来一年内,将剩余的大约 40 个产品工程团队的一半也迁移到云平台,以便从技术中榨取更多价值。Kapadia 说:“现在,每个团队都在运行一个小的 Kubernetes 集群,但如果我们都能生活在一个更大的生态系统中,那就太好了。” “这样我们就可以利用诸如服务网格代理之类的强大功能,它们可以在微服务之间进行大量的检测,或者实现服务到服务的编排。这些是我们未来想要尝试的新事物。”