挑戰
Nordstrom 希望提高其技術營運的效率和速度,其中包括 Nordstrom.com 電子商務網站。同時,Nordstrom Technology 也在尋找方法來縮減其技術營運成本。
解決方案
在四年前擁抱 DevOps 轉型並啟動持續整合/持續部署 (CI/CD) 專案後,該公司將其部署時間從三個月縮短到 30 分鐘。但他們希望在跨環境方面更快,因此他們開始了雲原生之旅,採用了由 Kubernetes 協調的 Docker 容器。
影響
Nordstrom Technology 使用 Kubernetes 的開發人員現在部署速度更快,並且可以「專注於編寫應用程式」,為 Nordstrom 建立 Kubernetes 企業平台的團隊資深工程師 Dhawal Patel 說道。此外,該團隊提高了營運效率,根據工作負載將 CPU 使用率從 5 倍提高到 12 倍。「我們運行數千個虛擬機器 (VM),但並未有效利用所有這些資源」,Patel 說。「使用 Kubernetes,即使沒有刻意提高叢集的效率,我們目前的效率也提高了 10 倍。」
Dhawal Patel 五年前以零售商網站的應用程式開發人員身分加入 Nordstrom 時,他意識到有機會幫助加快開發週期。
在早期的 DevOps 時代,Nordstrom Technology 仍然遵循傳統的孤島團隊和職能模式。「作為一名開發人員,我花更多時間在修復環境上,而不是編寫程式碼和為業務增加價值」,Patel 說。「我對此充滿熱情——所以我獲得了幫助解決這個問題的機會。」
公司也很渴望加快速度,並在 2013 年啟動了第一個持續整合/持續部署 (CI/CD) 專案。該專案是 Nordstrom 雲原生之旅的第一步。
開發和營運團隊成員建構了 CI/CD 管道,與公司內部的伺服器合作。該團隊選擇了 Chef,並編寫了自動化虛擬 IP 建立、伺服器和負載平衡的 cookbook。「在我們完成專案後,部署時間從三個月縮短到 30 分鐘」,Patel 說。「我們仍然有多個環境——開發、測試、預演、然後是生產——因此每個環境都運行 Chef cookbook,需要 30 分鐘。在當時,這是一個巨大的成就。」
但是新環境仍然需要太長時間才能啟動,因此下一步是在雲端中工作。今天,Nordstrom Technology 建立了一個企業平台,允許公司 1,500 名開發人員部署在雲端中作為 Docker 容器運行的應用程式,並由 Kubernetes 協調。
「雲端提供了更快的資源存取,因為我們過去需要數週才能在內部部署環境中獲得虛擬機器 (VM)」,Patel 說。「但現在我們只需五分鐘即可完成相同的事情。」
Nordstrom 首次嘗試在叢集上排程容器是基於 CoreOS fleet 的自製系統。他們開始使用該系統進行一些概念驗證專案,直到 Kubernetes 1.0 發布時才進行切換。「我們根據社群支援和專案速度的早期指標判斷,Kubernetes 將會蓬勃發展,因此我們以 Kubernetes 為核心重建了我們的系統」,Nordstrom Kubernetes 團隊資深經理 Marius Grigoriu 說道。
雖然 Kubernetes 通常被認為是微服務平台,但在 Nordstrom 關鍵生產角色中第一個在 Kubernetes 上啟動的應用程式是 Jira。「這並不是我們希望作為第一個應用程式獲得的理想微服務」,Patel 承認,「但從事該應用程式的團隊對 Docker 和 Kubernetes 充滿熱情,他們想嘗試一下。他們的應用程式在內部部署環境中運行,並希望將其遷移到 Kubernetes。」
對於加入的團隊來說,好處是立竿見影的。「在我們的 Kubernetes 叢集上運行的團隊喜歡他們不必擔心更少的問題這個事實。他們不需要管理基礎架構或作業系統」,Grigoriu 說。「早期採用者喜歡 Kubernetes 的宣告式特性。他們喜歡他們必須處理的縮小後的介面。」
為了支援這些早期採用者,Patel 的團隊開始擴展叢集並建構生產級服務。「我們整合了 Prometheus 進行監控,並使用 Grafana 前端;我們使用 Fluentd 將日誌推送到 Elasticsearch,這為我們提供了日誌聚合」,Patel 說。該團隊還添加了數十個開源組件,包括 CNCF 專案,並為 Kubernetes、Terraform 和 kube2iam 做出貢獻。
現在 Nordstrom Technology 中有超過 60 個開發團隊運行 Kubernetes,並且隨著成功案例的出現,越來越多的團隊加入。「我們的初始客戶群,那些願意嘗試的人,現在正在向下一批用戶宣傳」,Patel 說。「一位早期採用者擁有 Docker 容器,但他不確定如何在生產環境中運行它。我們與他坐下來,在 15 分鐘內,我們將其部署到生產環境中。他認為這很棒,並且他組織中的更多人開始加入。」
對於 Nordstrom Technology 來說,轉向雲原生極大地提高了開發和營運效率。使用 Kubernetes 的開發人員現在部署速度更快,並且可以專注於在他們的應用程式中建立價值。其中一個團隊最初透過在雲端中啟動虛擬機器,實現 25 分鐘的合併到部署。切換到 Kubernetes 使他們的流程速度提高了 5 倍,將他們的合併到部署時間縮短到 5 分鐘。
速度很快,而且很容易證明,但更大的影響可能在於營運效率。「我們在 AWS 上運行數千個 VM,它們的整體平均 CPU 使用率約為 4%」,Patel 說。「使用 Kubernetes,即使沒有刻意提高叢集的效率,我們目前的 CPU 使用率也達到了 40%——提高了 10 倍。如果直接遷移到雲端,我們運行的 2600 多個客戶 Pod 將會是 2600 多個 VM。我們現在在 40 個 VM 上運行它們,因此營運開銷大大降低。」
Nordstrom Technology 也在探索在內部部署的裸機上運行 Kubernetes。「如果我們可以建構一個內部部署的 Kubernetes 叢集」,Patel 說,「我們可以將雲端的強大功能帶到內部部署環境中,以快速佈建資源。那麼對於開發人員來說,他們的介面是 Kubernetes;他們甚至可能沒有意識到或不在意他們的服務現在部署在內部部署環境中,因為他們只在使用 Kubernetes。」
因此,Patel 正密切關注 Kubernetes 的多叢集功能開發。「透過叢集聯邦,我們可以將我們的內部部署環境作為主要叢集,將雲端作為次要的可突發叢集」,他說。「因此,當有週年慶或黑色星期五促銷,並且我們需要更多容器時——我們可以轉向雲端。」
這種可能性——以及 Grigoriu 和 Patel 的團隊已經透過使用 Kubernetes 交付的影響——正是 Nordstrom 最初踏上雲原生之旅的原因。「就當今的零售環境而言,我們正試圖在力所能及的地方建立反應性和靈活性」,Grigoriu 說。「Kubernetes 使之易於:為開發和營運方面都帶來效率。這是一個雙贏。」