公司 Nordstrom 地點 華盛頓州西雅圖 行業 零售

挑戰

Nordstrom 希望提高其技術運營的效率和速度,其中包括 Nordstrom.com 電子商務網站。與此同時,Nordstrom Technology 正在尋找方法來削減其技術運營成本。

解決方案

四年前,在採納 DevOps 轉型並啟動持續整合/持續部署 (CI/CD) 專案後,公司將部署時間從三個月縮短到 30 分鐘。但他們希望在不同環境中更快地部署,因此他們開始了雲原生之旅,採用 Docker 容器並使用 Kubernetes 進行編排。

影響

Nordstrom Technology 的高階工程師 Dhawal Patel 表示,使用 Kubernetes 的開發人員現在可以更快地部署,並且“只需專注於編寫應用程式”。Patel 正在為 Nordstrom 構建 Kubernetes 企業平臺。此外,該團隊還提高了運營效率,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 釋出時,他們才進行了切換。Nordstrom Kubernetes 團隊高階經理 Marius Grigoriu 表示:“我們押注 Kubernetes 將會騰飛,這一判斷得益於社群支援和專案速度的早期跡象,因此我們以 Kubernetes 為核心重建了我們的系統。”

雖然 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 上執行數千個虛擬機器,它們的整體平均 CPU 利用率約為 4%,”Patel 說。“有了 Kubernetes,即使我們不刻意提高叢集效率,目前的 CPU 利用率也達到了 40%——增長了 10 倍。我們執行著 2600 多個客戶 Pod,如果它們直接部署到雲端,將需要 2600 多個虛擬機器。現在我們只需 40 個虛擬機器來執行它們,這極大地減少了運營開銷。”

Nordstrom Technology 還在探索在本地裸機上執行 Kubernetes。“如果我們能建立一個本地 Kubernetes 叢集,”Patel 說,“我們就能將雲計算的力量引入本地,快速配置資源。對於開發人員來說,他們的介面是 Kubernetes;他們甚至可能沒有意識到或不關心他們的服務現在部署在本地,因為他們只與 Kubernetes 打交道。”

因此,Patel 正在密切關注 Kubernetes 多叢集功能的開發。“透過叢集聯邦,我們可以將本地叢集作為主叢集,雲作為輔助可伸縮叢集,”他說。“所以,當有周年慶促銷或黑色星期五促銷時,我們需要更多的容器——我們可以轉到雲端。”

正是這種可能性——以及 Grigoriu 和 Patel 團隊已經透過 Kubernetes 帶來的影響——促使 Nordstrom 踏上了雲原生之旅。“以當今的零售環境來看,我們正在努力盡可能地構建響應性和靈活性,”Grigoriu 說。“Kubernetes 使得實現以下目標變得容易:提高開發和運營兩方面的效率。這是一個雙贏的局面。”