挑战
几年前,该公司决定将其数据中心迁出。其在公共云上的首批部署是规模较小、不那么关键的应用程序,这些应用程序通过虚拟机进行管理。《纽约时报》工程执行总监 Deep Kapadia 表示:“我们开始构建越来越多的工具,到某个时候我们意识到,将 Amazon 视为另一个数据中心是不利的。” Kapadia 受命领导一个交付工程团队,该团队将“为云提供商提供给我们的抽象层进行设计”。
解决方案
该团队决定使用 Google Cloud Platform 及其 Kubernetes 即服务产品 GKE。
影响
交付速度提高了。一些基于传统虚拟机的部署需要 45 分钟;而使用 Kubernetes,时间“只需几秒钟到几分钟”,工程经理 Brian Balser 说。Li 补充道:“以前按周部署或需要与基础设施团队协调部署时间的团队,现在可以独立部署更新,并且在必要时可以每天部署。” 采用云原生计算基金会技术,可以实现工程人员之间更统一的部署方法,并为公司带来可移植性。
《纽约时报》成立于 1851 年,被称为报业记录,是数字领域的先驱:其首个网站于 1996 年推出,甚至在谷歌诞生之前。几年前,该公司决定迁出其私人数据中心,其中包括位于曼哈顿昂贵地段的一个数据中心。最近,它通过转向云原生又迈向了未来一步。
最初,基础设施团队“管理 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 最近告诉《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 集群,但如果我们都能生活在一个更大的生态系统中,那会很好。” “然后我们可以利用服务网格代理等工具的力量,这些工具可以在微服务之间进行大量的度量,或者进行服务到服务的编排。这些是我们在未来想要尝试的新事物。”