挑戰
AppDirect 為雲端產品與服務提供端對端的商務平台。軟體開發總監 Pierre-Alexandre Lacerte 於 2014 年加入時,公司採用的是部署在「Tomcat 架構」上的單體式應用程式,他說:「整個發布流程比應有的複雜許多。其中涉及大量手動步驟,通常是一名工程師建立功能,然後由另一個團隊處理變更。因此,要將功能交付到生產環境的流程中存在瓶頸。」同時,工程團隊正在不斷成長,公司意識到需要更好的基礎架構來支援這種成長並提升開發速度。
解決方案
Lacerte 表示:「我的想法是:讓我們建立一個團隊可以更快部署服務的環境,這樣他們就會說:『好吧,我不想再在單體架構中開發了。我想建立一個微服務。』」在決定於 2016 年初採用 Kubernetes 之前,他們評估並製作了幾種不同技術的原型。Lacerte 的團隊還將 Prometheus 監控整合到了平台中;接下來是追蹤系統。如今,AppDirect 在全球的 AWS 和地端環境中已部署了超過 50 個微服務和 15 個 Kubernetes 叢集。
成果
Kubernetes 平台成功支援了工程團隊在過去幾年中實現 10 倍的成長。加上他們不斷增加新功能,Lacerte 說:「我認為如果沒有這種新的基礎架構,我們的速度會慢很多。」轉向 Kubernetes 和服務導向架構意味著部署變得更加快速,因為不再依賴自訂且脆弱、使用 SCP 指令的 Shell 指令碼。部署新版本的時間從 4 小時縮短至幾分鐘。此外,公司投入大量精力為開發人員打造自助服務環境。Lacerte 說:「導入新服務不再需要提交 Jira 工單或與三個不同的團隊開會。」如今,該公司每週進行 1,600 次部署,而之前僅為 1-30 次。公司還透過將其市集和帳務處理單體應用從傳統 EC2 主機遷移至 Kubernetes,以及利用自動擴展機制(因為辦公時間流量更高)節省了成本。
當軟體開發總監 Pierre-Alexandre Lacerte 於 2014 年開始在那裡工作時,公司擁有一個部署在「Tomcat 架構」上的單體式應用程式,他說:「整個發布流程比應有的複雜許多。其中涉及大量手動步驟,一名工程師建立一個功能,然後建立一個 Pull Request,接著由 QA 或另一名工程師驗證該功能。然後它被合併,並由其他人負責部署。因此,我們在將功能交付到生產環境的管線中存在瓶頸。」
同時,該工程團隊人數從 40 人持續成長,且公司希望為其產品增加越來越多的功能。作為平台團隊的一員,Lacerte 開始聽到多個團隊表示希望使用不同的框架和語言來部署應用程式,從 Node.js 到 Spring Boot Java。他很快意識到,為了同時支援成長並提高開發速度,公司需要更好的基礎架構,以及一個讓團隊能夠自主、執行自己的部署並對其在生產環境中的服務負責的系統。
Lacerte 說,從一開始:「我的想法是:建立一個讓團隊可以更快部署服務的環境,讓他們說:『好的,我不想再在單體架構中開發了。我想建一個服務。』」(Lacerte 於 2019 年離開了公司。)
透過與營運團隊合作,Lacerte 的團隊獲得了對公司 AWS 基礎架構 的更多控制權和存取權,並開始對幾種協作技術進行原型設計。「當時,Kubernetes 還比較邊緣、鮮為人知,」他說。「但我們觀察了社群、Pull Request 的數量以及 GitHub 上的活躍度,我們看到它正在獲得關注。並且我們發現它比其他技術更容易管理。」
他們開始使用 Chef 和 Terraform 供應工具在 Kubernetes 上啟動最初的幾個服務,隨著服務增加,自動化程度也隨之提高。「我們在世界各地都有叢集——在韓國、澳洲、德國和美國,」Lacerte 說。「自動化對我們來說至關重要。」他們現在主要使用 Kops,並正在評估多家雲端供應商的託管 Kubernetes 服務。
如今,儘管單體應用仍然存在,但提交內容和新功能越來越少。所有團隊都在新基礎架構上進行部署,服務導向架構已成為常態。AppDirect 現在在全球 AWS 和地端環境中部署了超過 50 個微服務和 15 個 Kubernetes 叢集。
Lacerte 的策略最終成功了,因為 Kubernetes 平台對部署時間產生了非常實際的影響。由於不再依賴自訂且脆弱、使用 SCP 指令的 Shell 指令碼,部署新版本的時間從 4 小時縮短至幾分鐘。此外,公司投入大量精力為開發人員打造自助服務環境。「導入新服務不再需要提交 Jira 工單或與三個不同的團隊開會,」Lacerte 說。如今,該公司每週進行 1,600 次部署,而之前僅為 1-30 次。
此外,Kubernetes 平台成功支援了工程團隊在過去幾年中實現 10 倍的成長。「擁有權(Ownership)作為 AppDirect 的核心價值之一,反映在我們能夠獨立於單體程式碼庫交付服務的能力上,」與 Lacerte 共同推動該計畫的資深軟體開發人員 Alexandre Gervais 說。「現在,小團隊擁有我們業務領域模型中的關鍵部分,他們在各自解耦的專業領域中運作,而無需了解整個程式碼庫。這減少並隔離了部分複雜性。」加上他們不斷增加新功能,Lacerte 說:「我認為如果沒有這種新的基礎架構,我們的速度會慢很多。」
公司還透過將其市集和帳務處理單體應用從傳統 EC2 主機遷移至 Kubernetes,以及利用自動擴展機制(因為辦公時間流量更高)節省了成本。
AppDirect 的雲端原生堆疊還包括 gRPC 和 Fluentd,團隊目前正致力於建置 OpenCensus。該平台已經整合了 Prometheus,因此「當團隊部署他們的服務時,他們已經有了通知、警示和配置,」Lacerte 說。「例如,在測試環境中,我希望在 Slack 上收到訊息;而在生產環境中,我希望收到 Slack 訊息,並且希望接到電話通知。我們整合了 PagerDuty。團隊對自己的服務擁有更多的擁有權。」
這當然也意味著更多的責任。「我們要求工程師擴展他們的視野,」Gervais 說。「我們從僅限於『推入程式碼到分支』的文化,轉向了程式碼庫之外令人興奮的新責任:功能與配置的部署;應用程式與業務指標的監控;以及發生中斷時的隨叫隨到支援。這是一次巨大的工程文化轉變,但在規模與速度方面的效益是無庸置疑的。」
隨著工程隊伍持續擴大,平台團隊面臨一項新挑戰:確保 Kubernetes 平台能夠被所有人輕鬆存取和利用。「我們如何確保當我們增加團隊人員時,他們能高效、多產,並且知道如何快速上手該平台?」Lacerte 說。「所以我們有推廣人員、文件說明和一些專案範例。我們做演示,進行 AMA(問我任何事)會議。我們正在嘗試各種策略來吸引每個人的注意力。」
在 Kubernetes 之旅走過三年半後,Gervais 認為 AppDirect「在正確的時間做出了正確的決定」,他說。「Kubernetes 和雲端原生技術現在被視為事實上的生態系統。我們知道在面對擴展時所遇到的新挑戰,該將心力集中在何處。社群非常活躍且充滿活力,這對我們優秀的內部團隊來說是很好的互補。展望未來,我們將真正致力於透過在日常營運中提供附加的業務價值,從該生態系統中獲益。」
