公司 GolfNow 地點 美國佛羅里達州奧蘭多 產業 高爾夫產業技術與服務供應商

挑戰

身為 NBC 體育集團 的一員,GolfNow 是高爾夫產業的技術與服務領導者,管理著 10 種不同的產品,以及全球最大的電子商務開球時間市場。隨著業務開始快速且全球性地擴張,GolfNow 的單體式應用程式開始出現問題。「我們持續垂直而非水平地擴展我們的基礎架構,而營運成本也變得令人困擾,」GolfNow 架構總監 Sheriff Mohamed 說。「我們希望能夠更輕鬆地在全球範圍內擴張。」

解決方案

GolfNow 轉向微服務和容器化,開始將其應用程式和資料庫從第三方服務遷移到在 DockerKubernetes 上運行的自有叢集。

影響

結果立竿見影。在維持相同甚至更高的容量(在尖峰時期)下,GolfNow 發現第一個應用程式的基礎架構成本幾乎減少了一半。

能夠說出您已將營運費用削減一半,並不是每天都能發生的事。

但 Sheriff Mohamed 和 Josh Chandler 確實做到了,他們協助領導他們的公司 GolfNow,從單體式基礎架構轉型為由 Kubernetes 管理的容器化雲原生基礎架構。

GolfNow 是 NBC 體育集團內績效頂尖的企業,是一家技術與服務公司,擁有全球最大的開球時間市場。GolfNow 為 500 萬活躍高爾夫球手提供 10 種不同的產品。近年來,業務成長如此快速,以至於支援其龐大單體式應用程式(以 C#.NET 編寫並由 SQL Server 資料庫管理系統支援)的基礎架構無法跟上。「隨著我們的成長,我們顯然需要擴展我們的基礎架構,而我們持續垂直而非水平地擴展,」GolfNow 架構總監 Sheriff 說。「我們的成本呈指數級增長。最重要的是,我們必須建置災難復原 (DR) 環境,這意味著我們必須將原始資料中心的所有內容完全複製到另一個僅作為備用的資料中心。我們基本上是在浪費錢,並使我們的基礎架構成本翻倍。」

僅僅將 GolfNow 第一個重要應用程式(高爾夫球場的預訂引擎和 B2B 行銷平台)從第三方服務遷移到他們自己的 Kubernetes 環境,「我們的帳單就大幅下降,」Sheriff 說。

這些卓越成果的道路始於 2014 年底。為了支援 GolfNow 的全球成長,團隊決定公司需要有多個資料中心,並且能夠根據需要快速輕鬆地重新路由流量。「從那時起,我們就知道我們需要朝著分解事物、微服務和容器化的方向發展,」Sheriff 說。「當時我們正試圖擺脫 C#.NETSQL Server,因為它在 Linux 上運行得不太好,而所有容器都可以在 Linux 上順利運行。」

為此,團隊轉向使用 Node.js(用於開發工具和應用程式的開放原始碼跨平台 JavaScript 執行環境)和 MongoDB(開放原始碼資料庫程式)。當時,用於在容器中部署應用程式的平台 Docker 仍然很新。但 Sheriff 說,一旦團隊開始嘗試使用它,「我們意識到這是我們想要走的路,特別是因為這也是產業的發展方向。」

GolfNow 的開發團隊運行了一個「內部、低調」的概念驗證,並被說服了。「我們真的很喜歡能夠將容器傳遞給彼此,並讓它們立即啟動並運行的容易程度,就像在我的機器上運行一樣,」Sheriff 說。「因為這始終是維運團隊對開發人員最大的抱怨,對吧?『在我的機器上可以運作!』但隨後我們開始思考,『我們如何確保這些東西持續啟動並運行?』」

這引導團隊尋找適合公司需求的正確協調系統。Sheriff 說,他們嘗試的前幾個選項要么太重,要么「感覺不太對勁」。在 2015 年夏末,他們發現了剛發布的 Kubernetes,Sheriff 立即喜歡它的易用性。「我們做了另一個概念驗證,」他說,「Kubernetes 勝出了,因為它有社群支持,並建立在 Google 已經完成的基礎之上。」

但在他們可以使用 Kubernetes 之前,GolfNow 的母公司 NBC 也要求他們與另一家公司進行比較。Sheriff 和他的團隊喜歡競爭公司的平台使用者介面,但不喜歡其平台不允許容器在本機 Docker 上運行。由於沒有明確的決定,Sheriff 在 GolfNow 的副總裁 Steve McElwee 安排了一項為期三個月的試用,在此期間,GolfNow 團隊(由 Sheriff 和現在擔任開放平台首席架構師的 Josh 組成)將建置 Kubernetes 環境,而一個龐大的 NBC 團隊將使用另一家公司的平台建置一個環境。

「我們啟動了叢集,並試圖讓一切按照我們想要的方式運行,」Sheriff 說。「我們從中獲得的最大收穫是,我們不僅希望我們的應用程式在 Kubernetes 和 Docker 中運行,我們也希望我們的資料庫在那裡運行。我們確實希望我們的整個基礎架構都在 Kubernetes 中運行。」

當時社群中沒有任何東西可以幫助他們在 Kubernetes 和 Docker 環境中運行 Kafka 和 MongoDB 叢集,因此 Sheriff 和 Josh 靠自己想辦法解決,花了一整個月才完成。「一切都從那裡開始順利發展,」Sheriff 說。「我們能夠連接我們所有的應用程式,並且我們提前一個月完成了我們的概念驗證。我的副總裁說,『好吧,結束了。Kubernetes 獲勝。』」

下一步,從 2016 年 1 月開始,是讓一切在生產環境中運作。團隊首先專注於一個已經以 Node.js 和 MongoDB 編寫的應用程式。該應用程式是高爾夫球場的預訂引擎和 B2B 行銷平台,當時已經朝著微服務方向發展,但尚未完全完成。當時,它在 Heroku Compose 和其他第三方服務中運行,導致每月帳單金額龐大。

「目標是將所有這些都移出,並將其放入我們使用 Kubernetes 在 Google Compute Engine (GCE) 上建立的新平台中,」Sheriff 說。「因此,我們最終並行地逐步建置了 Heroku 和 Compose 中的內容,並將其放入我們的 Kubernetes 叢集中。然後,實際上只是在後台切換設定。因此,在 Heroku 中,我們有一個應用程式運行,並連線到 Compose 資料庫。我們會取得設定、變更它,並使其連線到在我們叢集中運行的資料庫。」

透過使用此程序,他們能夠逐步遷移,而不會有任何停機時間。第一次遷移是在非上班時間完成的,但為了測試極限,團隊在一天中的中間時間遷移了第二個資料庫,當時有大量使用者正在運行該應用程式。「我們做到了,」Sheriff 說,「而且再次成功了。沒有人注意到。」

在監控三個星期以確保一切運作穩定後,團隊將其餘的應用程式遷移到他們的 Kubernetes 叢集中。影響是立竿見影的:除了每月成本大幅降低之外,Sheriff 說,「在相同的容量和尖峰時間運行下,我們能夠水平擴展。由於我們使用容器更有效率地使用我們的 VM,我們根本不需要支付額外的費用。」

他們不僅省錢,還節省了時間。「我今天早上開了一個會議,討論將一些應用程式從一個叢集遷移到另一個叢集,」Josh 說。「我花了約 2 個小時解釋這個過程。我實際花在遷移應用程式上的時間不到 30 秒!我們可以在難以置信的時間內移動資料中心。如果您不是來自 Kubernetes 世界,您不會相信我。」Sheriff 用以下方式表達:「在 Kubernetes 之前,我晚上都睡不好覺,真的。我一直被吵醒,因為系統當機了。在 Kubernetes 之後,我晚上都能睡好覺了。」

GolfNow 上只有一小部分應用程式已遷移到 Kubernetes 環境。「我們的核心團隊正在將許多 .NET 應用程式重寫為 .NET Core [與 Linux 和 Docker 相容],以便我們可以在容器中運行它們,」Sheriff 說。

展望未來,Sheriff 和他的團隊希望在 2017 年繼續圍繞 Kubernetes 和 Drone(一個開放原始碼持續交付平台)建構一個完整的平台,使其更以開發人員為中心。「現在他們能夠管理組態,他們能夠管理他們的部署等等,使現在正在建立所有這些微服務的所有子團隊能夠自給自足,」他說。「因此,它可以將我們從應用程式中解放出來,讓我們只需確保叢集運行狀況良好,然後實際上將其遷移到我們的維運團隊。」

從長遠來看,Sheriff 對於讓更多人加入 Kubernetes 陣營有一個更大的目標。「我們實際上正在嘗試使這個平台足夠通用,以便我們的任何姊妹公司都可以隨意使用它,」他說。「我絕對認為它可以作為一個模型。我認為我們遷移到它的方式、我們建置它的方式,都是我認為其他公司可以學習的,並且不應該害怕的。」

GolfNow 團隊也透過開放原始碼 Josh 建置的機器人框架來回饋 Kubernetes 社群。「我們注意到儀表板使用者介面實際上比我們剛開始時進展得更快,」Sheriff 說。「然而,我們意識到我們需要的是更像一個機器人的東西,它可以真正幫助我們透過 Slack 管理整個 Kubernetes。」Josh 解釋說:「透過 Kubernetes-Slack 整合,您基本上可以連接到叢集並發出命令和編輯組態。我們已盡可能簡化安全性組態。我們希望這將成為我們對 Kubernetes 的主要感謝,感謝您給予我們的一切。」

GolfNow 團隊從完全的新手到在三個月內準備好生產環境,渴望鼓勵其他公司效法他們的領導。他們學到的教訓:「您必須獲得老闆的支持,」Sheriff 說。「另一個重要的事情是有兩到三個人專門負責這種類型的努力。您不能讓人員半進半出。」如果您一開始沒有獲得支持,那麼證明它的價值將會讓您獲得支持。

「這就像雲端的《六百萬美元先生》,」Josh 補充說。「試試看,看看它的發生。當您查看這些應用程式堆疊時,我感覺證據就在眼前。它們更快、更具彈性。」