挑戰
作為最大的女性和兒童服裝線上寄售商店,ThredUp 於 2009 年成立,當時採用在 Amazon Web Services 上運行的單體式應用程式。 雖然公司在幾年前開始將單體式應用程式分解為微服務,但基礎架構團隊仍在處理手工打造的伺服器,這阻礙了生產力。「我們配置它們只是為了盡快推出,但沒有標準化,而且隨著我們不斷成長,管理變得越來越繁瑣,」共同創辦人兼技術長 Chris Homer 說道。 他們意識到,基礎架構需要現代化,以實現公司所需的速度。「對於像我們這樣正在顛覆零售業的公司來說,確保我們在構建軟體並將其推向使用者面前時,能夠以快速的週期進行並從實驗中學習大量知識,這非常重要,」Homer 補充道。「我們希望確保我們的工程師在構建軟體時能夠擁抱 DevOps 的思維模式。 對我們來說,他們可以從頭到尾地掌握生命週期,從設計概念到交付並在生產環境中運行,從行銷到電子商務、使用者體驗和我們的內部配送中心營運,這一點非常重要。」
解決方案
2017 年初,公司採用 Kubernetes 進行容器協調,並在一年內將整個基礎架構遷移到 Kubernetes。
影響
基礎架構工程師 Oleksandr Snagovskyi 表示,在過去,「即使考慮到我們已經在雲端、資料庫和服務中擁有所有基礎架構以及所有這些優勢,」設定新服務也意味著需要等待 2-4 週才能獲得環境。 借助 Kubernetes,新應用程式的推出時間已從數天或數週縮短到幾分鐘或幾小時。 基礎架構工程師 Oleksii Asiutin 表示,現在,「我們的開發人員可以試驗現有應用程式並創建新服務,而且所有操作都非常快速。」 實際上,關鍵服務的部署時間平均減少了約 50%。 所有應用程式的「前置時間」都少於 20 分鐘,使工程師能夠每天多次部署。 此外,超過 3200 個 ansible 腳本已被棄用,轉而使用 Helm 圖表。 令人印象深刻的是,硬體成本降低了 56%,而 ThredUP 運行的服務數量卻增加了一倍。
但在過去幾年中,ThredUP 於 2009 年成立,當時採用在 Amazon Web Services 上運行的單體式應用程式,隨著使用者群突破 2 千萬大關,ThredUP 感受到成長的痛苦。 雖然公司已開始將單體式應用程式分解為微服務,但基礎架構團隊仍在處理手工打造的伺服器,這阻礙了生產力。「我們配置它們只是為了盡快推出,但沒有標準化,而且隨著我們不斷成長,管理變得越來越繁瑣,」Homer 說道。 Homer 意識到,基礎架構需要現代化,以實現公司想要的速度和文化。
「我們希望確保我們的工程師在構建軟體時能夠擁抱 DevOps 的思維模式,」Homer 說道。「對我們來說,他們可以從頭到尾地掌握生命週期,從設計概念到交付並在生產環境中運行,從行銷到電子商務、使用者體驗和我們的內部配送中心營運,這一點非常重要。」
2017 年初,Homer 透過 Kubernetes 容器協調找到了解決方案。 在一年內,公司將其整個基礎架構遷移到 Kubernetes,首先從其網站應用程式開始,最後到其營運後端。 團隊現在也使用 Fluentd 和 Helm。「最初,有人懷疑轉向雲原生技術會帶來價值,但隨著我們完成這個過程,人們很快開始意識到擁有無縫升級和輕鬆回滾的好處,而無需擔心會發生什麼,」Homer 說道。「它釋放了開發人員快速部署、學習的信心,如果犯了錯誤,您可以毫無問題地回滾。」
基礎架構團隊表示,關鍵的改進是 Kubernetes 為開發人員實現的一致體驗。「它讓開發人員可以在與其應用程式在生產環境中運行的相同環境中工作,」基礎架構工程師 Oleksandr Snagovskyi 說道。 此外,「它變得更容易測試、更容易改進和更容易部署,因為一切都是自動完成的,」基礎架構工程師 Oleksii Asiutin 說道。「我們團隊的主要目標之一是讓開發人員的生活更舒適,而我們正在透過 Kubernetes 實現這一目標。 他們可以試驗現有應用程式並創建新服務,而且所有操作都非常快速。」
Snagovskyi 表示,在過去,「即使考慮到我們已經在雲端、資料庫和服務中擁有所有基礎架構以及所有這些優勢,」設定新服務也意味著需要等待 2-4 週才能獲得環境。 借助 Kubernetes,由於配置簡單且對基礎架構團隊的依賴性最小,新應用程式的推出時間已從數天或數週縮短到幾分鐘或幾小時。
實際上,關鍵服務的部署時間平均減少了約 50%。 基礎架構總監 Roman Chepurnyi 表示,「Kubernetes 中的快速部署和並行測試執行使所有應用程式的『前置時間』保持在 20 分鐘以內」,從而使工程師能夠每天多次發布。 他補充說,基礎架構團隊的工作也變得不那麼繁重:「我們可以頻繁執行無縫升級,並保持叢集效能和安全性處於最新狀態,因為 Kubernetes 叢集的作業系統級強化和升級對於生產營運來說是非阻塞活動,並且不需要與多個工程團隊協調。」
超過 3,200 個 ansible 腳本已被棄用,轉而使用 Helm 圖表。 令人印象深刻的是,硬體成本降低了 56%,而 ThredUP 運行的服務數量卻增加了一倍。
也許影響在零售業最繁忙的日子裡最為明顯。「Kubernetes 在黑色星期五等日子實現了無縫且易於管理的自動擴展,」Homer 說道。「我們不再需要坐在那裡添加實例、監控流量、進行大量手動工作。 這些都為我們處理好了,相反,我們實際上可以吃些火雞、喝點酒,享受與家人共處的時光。」
對於 ThredUP 而言,Kubernetes 完全符合公司對其如何改變零售業的願景。 ThredUP 所做的一些事情仍然非常手動:「當我們的客戶將成袋的物品送到我們的配送中心時,它們會被拍照、檢查、標記,並在當天上線,」Homer 說道。
但在其他各個方面,「我們使用不同的技術形式來驅動我們所做的一切,」Homer 說道。「我們有機器學習演算法來幫助預測商品的銷售可能性,這驅動了我們的定價演算法。 我們有個人化演算法,可以查看圖像並嘗試確定風格,並在我們的系統中匹配使用者的偏好。」
將 Kubernetes 視為這些驅動因素之一。「我們的未來完全是關於自動化,」Homer 說道,「在自動化背後,雲原生技術將釋放我們擁抱自動化並全力以赴邁向未來的能力。」