公司 ricardo.ch 地點 瑞士蘇黎世 產業 電子商務

挑戰

瑞士線上市場 ricardo.ch 在速度方面遇到問題,開發部門和維運部門之間也存在「典型的隔閡」,雙方難以良好合作。「他們想要合作,但他們沒有共同點,」平台工程主管 Cedric Meury 說。「這是拖慢我們速度的根本原因之一。」公司開始將舊有的單體式架構分解為微服務,並且需要協作來支援其自身資料中心內的新架構,以及整合開發和維運部門。

解決方案

公司採用 Kubernetes 進行叢集管理、Prometheus 進行監控,以及 Fluentd 進行日誌記錄。第一個叢集於 2016 年 12 月在內部部署,第一項服務在三個月後投入生產環境。遷移工作已完成約一半,公司計劃在 2018 年底前完全轉移到 Google Cloud Platform

影響

Meury 說,將單體式架構拆分為微服務「提升了速度,而 Kubernetes 對於支援這一點至關重要」。生產環境的部署次數已從每週不到 10 次增加到每天 30-60 次。以前,「當生產環境中的某些東西出現問題時,工單或投訴會像丟過牆一樣丟給維運部門,這是典型的問題。現在,人們有機會自行查看維運狀況並進行故障排除,因為所有東西都以標準化的方式部署,」Meury 說。他在日常互動中看到了這種影響:「幾週前,我看到一位產品經理針對一個包含一些變數的 JSON 檔案發起了提取請求,而其他人接受了它。並且它在幾分鐘甚至幾秒鐘後就部署了,這在以前是不可思議的。過去需要發生一連串的事情,整個單體式架構難以理解,即使對於工程師來說也是如此。因此,以前請求會進入大型、效率低下的看板,希望有人能在幾週或幾個月後完成變更。」以前,與基礎架構和平台相關的專案需要數月或數年才能完成;現在開發人員和維運人員可以共同協作,在幾週甚至幾天內透過 Kubernetes 部署基礎架構組件。從長遠來看,公司還期望從客製化資料中心和虛擬機器轉向容器化基礎架構和雲端服務,從而節省 50% 的成本。

當 Cedric Meury 在 2016 年加入 ricardo.ch 時,他看到了維運部門和開發部門之間明顯的隔閡。事實上,他們之間存在字面意義上的距離:工程團隊在法國工作,而組織的其他部門則位於瑞士。

「這是這些部門之間典型的隔閡,甚至在某些地方還存在憤怒和挫折感,」Meury 說。「他們想要合作,但他們沒有共同點。這是拖慢我們速度的根本原因之一。」

這種隔閡正在損害瑞士線上市場 ricardo.ch 的速度。該網站每天在高峰期處理來自網路和行動應用程式的多達 260 萬次搜尋,為 320 萬會員提供即時拍賣服務。技術團隊的主要挑戰是確保「商品的競標以正確的順序進來,並且在拍賣結束之前,並確保這以公平的方式運作,」Meury 說。「我們有即時需求。我們也提供自動競標系統,它需要準確且正確。對於分散式系統,您面臨的挑戰是確保排序正確。而這正是我們目前正在處理的事情之一。」

為了應對速度問題,ricardo.ch 技術長 Jeremy Seitz 建立了一個名為 EPD 的新軟體工廠,由 65 位工程師、7 位產品經理和 2 位設計師組成。「我們將這三個部門聚集在一起,以便他們可以簡化流程並更緊密地相互溝通,」Meury 說。

公司也開始將舊有的單體式架構分解為 100 多個微服務,並且需要協作來支援其自身資料中心內的新架構。「拆分單體式架構提升了速度,而 Kubernetes 對於支援這一點至關重要,」Meury 說。「Kubernetes 的容器化和協作幫助我們大幅減少了開發部門和維運部門之間的衝突,也讓我們能夠在雙方之間使用相同的語言。」

Meury 組建了一個平台工程團隊來選擇工具,包括用於日誌記錄的 Fluentd 和用於監控的 Prometheus(搭配 Grafana 可視化),並為第一個 Kubernetes 叢集奠定基礎,該叢集於 2016 年 12 月在內部部署。在幾週內,新平台即可供團隊使用,並為他們提供了培訓課程和文件。然後,平台工程團隊與工程師合作,協助他們在新平台上部署應用程式。生產環境中的第一項服務是 ricardo.ch 職位頁面。「這是前端開發的練習,因此開發人員可以試驗新的技術堆疊,」Meury 說。

Meury 估計,一半的應用程式已遷移到 Kubernetes。並且計劃在 2018 年底前將所有內容遷移到 Google Cloud Platform。「我們仍然在自己的資料中心中運行一些伺服器,但所有容器化工作以及將我們的服務描述為 Kubernetes 資訊清單將使我們能夠非常輕鬆地進行這種轉移,」Meury 說。

影響非常巨大。從客製化資料中心和虛擬機器轉向容器化基礎架構和雲端服務,預計將為公司節省 50% 的成本。生產環境的部署次數已從每週不到 10 次增加到每天 30-60 次。以前,「當生產環境中的某些東西出現問題時,工單或投訴會像丟過牆一樣丟給維運部門,這是典型的問題,」Meury 說。「現在,人們有機會自行查看維運狀況並進行故障排除,因為所有東西都以標準化的方式部署。這減少了時間和不確定性。」

Meury 在日常互動中也看到了這種影響:「幾週前,我看到一位產品經理針對一個包含一些變數的 JSON 檔案發起了提取請求,而其他人接受了它。並且它在幾分鐘甚至幾秒鐘後就部署了,這在以前是不可思議的。過去需要發生一連串的事情,整個單體式架構難以理解,即使對於工程師來說也是如此。因此,以前請求會進入大型、效率低下的看板,希望有人能在幾週或幾個月後完成變更。」

開發部門和維運部門之間的隔閡也減少了。「幾個月後,我收到人們的請求,說,『嘿,你能幫我安裝 Kubernetes 用戶端嗎?我想實際看看發生了什麼事,』」Meury 說。「人們直接查看系統的狀態,使他們更接近維運。」以前,與基礎架構和平台相關的專案需要數月或數年才能完成;現在開發人員和維運人員可以共同協作,在幾週甚至幾天內透過 Kubernetes 部署基礎架構組件。

對系統的洞察能力也擴展到公司的其他部門。「我發現我們的一位客戶支援代表會查看 Grafana 指標,以了解系統是否運行良好,這真是太棒了,」Meury 說。「Prometheus 直接與客戶服務部門連結。」

ricardo.ch 的雲端原生之旅可能對維運團隊產生了最大的影響。「我們有一個來自硬體背景的維運團隊,而現在他們正在重新學習如何在更加虛擬化和雲端原生的世界中運作,到目前為止取得了巨大的成功,」Meury 說。「因此,除了仍然在現場資料中心操作防火牆之外,他們還學習用 Go 語言編碼或同時進行一些 Python 腳本編寫。以前的網路管理員正在編寫 Go 程式碼。這真的很酷。

對於 Meury 來說,這次旅程歸結為這一點。「我的一位同事正在聽 KubeCon 的所有演講,他被我們平台上目前缺乏的所有工具、技術、框架所淹沒,」Meury 說。「但同時,他很高興知道未來我們還有很多東西可以探索,我們可以改進,我們可以努力。我們正在從到處看到問題的狀態轉變——例如,『這個壞了』或『這個當機了,我們必須修復它』——更多地轉變為,『我們實際上可以如何改進和自動化更多,並使其對開發人員和最終使用者來說更友好?』」