公司 紐約時報 地點 紐約州,紐約市 產業 新聞媒體

挑戰

幾年前,當紐約時報公司決定遷出其資料中心時,他們在公有雲上的首次部署規模較小,重要性較低,應用程式也是在虛擬機器上管理的。「我們開始建置越來越多的工具,而在某個時間點,我們意識到將 Amazon 視為另一個資料中心是一種傷害,」紐約時報工程執行總監 Deep Kapadia 說道。Kapadia 受命領導交付工程團隊,該團隊將「針對雲端供應商為我們提供的抽象概念進行設計」。

解決方案

該團隊決定使用 Google Cloud Platform 及其 Kubernetes 即服務產品 GKE

影響

交付速度提升。工程經理 Brian Balser 表示,一些舊有的基於 VM 的部署需要 45 分鐘;而使用 Kubernetes,時間「只需幾秒到幾分鐘」。Li 補充說:「過去習慣每週排程部署或必須與基礎架構團隊協調排程的團隊,現在可以獨立部署更新,並可以在必要時每天執行。」採用雲原生運算基金會技術,讓整個工程團隊能夠以更統一的方式進行部署,並為公司帶來可移植性。

《紐約時報》創立於 1851 年,以「紀錄報紙」著稱,也是數位先驅:其第一個網站於 1996 年推出,甚至早於 Google 的存在。幾年前,公司決定遷出其私人資料中心(包括位於曼哈頓昂貴房地產區的資料中心)。最近,他們又邁出了雲原生的下一步。

紐約時報工程執行總監 Deep Kapadia 說:「起初,基礎架構團隊『管理 Amazon 雲端中的虛擬機器,他們將更關鍵的應用程式部署在我們的資料中心中,而將不太重要的應用程式作為實驗部署在 AWS 上。』」「我們開始建置越來越多的工具,而在某個時間點,我們意識到將 Amazon 視為另一個資料中心是一種傷害。」

為了充分利用雲端,Kapadia 受命領導一個新的交付工程團隊,該團隊將「針對雲端供應商為我們提供的抽象概念進行設計」。2016 年年中,他們開始研究 Google Cloud Platform 及其 Kubernetes 即服務產品 GKE

團隊成員,網站可靠性工程師 Tony Li 說:「當時,我們有一些內部工具試圖為 VM 實現 Kubernetes 為容器所做的事情。我們問自己,為什麼我們要自己建置和維護這些工具?」

2017 年初,第一個生產應用程式 - nytimes.com 行動版首頁 - 開始在 Kubernetes 上運行,僅服務 1% 的流量。如今,nytimes.com 網站幾乎 100% 的終端使用者面向應用程式都在 GCP 上運行,其中大多數在 Kubernetes 上運行。

團隊發現交付速度立即受到影響。工程經理 Brian Balser 說:「部署 Docker 映像檔比啟動 VM 快得多。」一些舊有的基於 VM 的部署需要 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,「我們可以從這些技術的每一次進步中受益,而不是試圖追趕。」

這些開源技術為公司帶來了更高的可移植性。「CNCF 使我們能夠遵循行業標準,」Kapadia 說。「這讓我們可以考慮是否要從目前的服務供應商那裡遷移出來。我們的大多數應用程式都連接到 Fluentd。如果我們希望將我們的日誌記錄供應商從供應商 A 切換到供應商 B,我們可以做到這一點。我們今天在 GCP 中運行 Kubernetes,但如果我們想在 Amazon 或 Azure 中運行它,我們也可以潛在地考慮一下。」

Li 將雲原生運算基金會的專案稱為「我們可以共同仰望和追隨的北極星」。在北極星的引領下,該團隊正在展望未來一年,讓其餘約一半的 40 個產品工程團隊加入,以從該技術中提取更多價值。「目前,每個團隊都在運行一個小的 Kubernetes 叢集,但如果我們都能生活在一個更大的生態系統中,那就太好了,」Kapadia 說。「那樣我們就可以利用服務網格代理之類的東西的力量,這些代理實際上可以在微服務之間或服務到服務的協調之間進行大量檢測。這些是我們希望在未來嘗試的新事物。」