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

挑战

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

解决方案

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

影响

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

《纽约时报》创立于 1851 年,被誉为报纸的标杆,也是数字领域的先驱:它的第一个网站于 1996 年推出,甚至早于谷歌存在。几年前,该公司决定迁出其私人数据中心,包括位于曼哈顿昂贵房地产中的一个数据中心。最近,它通过走向云原生,向未来迈出了新的一步。

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

为了充分利用云,Kapadia 被任命领导一个新的交付工程团队,该团队将“为云提供商提供给我们的抽象概念进行设计”。2016 年年中,他们开始关注 Google Cloud Platform 及其 Kubernetes 即服务产品 GKE

当时,团队成员、站点可靠性工程师 Tony Li 说,“我们有一些内部工具试图为 VM 做 Kubernetes 为容器做的事情。我们问为什么我们要自己构建和维护这些工具?”

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

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

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

当然,向云原生迁移也有一些例外。“我们也有印刷出版业务,”Kapadia 说。“其中很多肯定不会走云原生路线,因为他们使用的是供应商软件,甚至用于打印实物报纸的专用机器。但即使是这些团队也在考虑像 App Engine 和 Kubernetes 这样的东西,如果他们可以使用的话。”

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

在《纽约时报》,他们做到了。随着团队开始彼此分享自己的最佳实践,“我们不再是解决某些问题的瓶颈,”Kapadia 说。“大多数基础设施和系统都是由集中化的职能部门管理的。我们已经有点打破了这种模式,部分原因是谷歌和亚马逊有工具可以让我们做到这一点。我们为团队提供对其 Google Cloud Platform 项目的完全所有权,并为他们提供一套合理的默认设置或标准。我们会告诉他们,‘如果这对你来说没问题,那就太好了!如果不行,请来和我们谈谈,我们会想办法让它适合你。’”

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

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

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

Li 称云原生计算基金会的项目为“我们可以仰望和追随的北极星”。在北极星的指引下,该团队正在展望未来一年,将剩余的 40 个左右的产品工程团队中的一半加入进来,以从这项技术中提取更多价值。“目前,每个团队都在运行一个小型 Kubernetes 集群,但如果我们都能生活在一个更大的生态系统中,那就太好了,”Kapadia 说。“然后,我们可以利用诸如服务网格代理之类的功能,这些代理实际上可以在微服务之间进行大量检测,或者进行服务到服务的编排。这些是我们希望在未来进行实验的新事物。”