挑戰
AppDirect 為基於雲的產品和服務提供端到端的商務平臺。軟體開發總監 Pierre-Alexandre Lacerte 於 2014 年開始在該公司工作時,公司有一個部署在 “tomcat 基礎設施” 上的單體應用,“整個釋出過程對於它本應的樣子來說太複雜了,” 他說。“其中涉及很多手動步驟,一個工程師構建一個功能,然後另一個團隊接手這個變更。因此,將功能交付到生產環境的流程中存在瓶頸。” 與此同時,工程團隊正在不斷壯大,公司意識到需要一個更好的基礎設施來支援這種增長並提高開發速度。
解決方案
“我的想法是:讓我們建立一個環境,讓團隊可以更快地部署他們的服務,他們會說,‘好吧,我不想再在單體應用中構建了。我想構建一個服務,’” Lacerte 說。他們在 2016 年初決定採用 Kubernetes 之前,考慮並原型化了幾種不同的技術。Lacerte 的團隊還將 Prometheus 監控整合到平臺中;下一步是跟蹤。如今,AppDirect 在生產中有超過 50 個微服務,並在全球範圍內的 AWS 和本地部署了 15 個 Kubernetes 叢集。
影響
Kubernetes 平臺幫助支援了工程團隊在過去幾年中 10 倍的增長。再加上他們不斷新增新功能的事實,Lacerte 說,“我認為如果我們沒有這個新基礎設施,我們的開發速度會慢很多。” 遷移到 Kubernetes 和服務意味著部署變得更快,因為減少了對定製的、脆弱的帶有 SCP 命令的 shell 指令碼的依賴。部署新版本的時間從 4 小時縮短到幾分鐘。此外,公司投入了大量精力為開發人員實現自助服務。“引入一個新服務不需要 Jira 工單或與三個不同的團隊開會,” Lacerte 說。如今,該公司每週部署 1600 次,而之前只有 1-30 次。透過將其市場和計費單體應用從傳統的 EC2 主機遷移到 Kubernetes,以及利用自動擴縮容(因為工作時間的流量更高),公司還實現了成本節約。
當軟體開發總監 Pierre-Alexandre Lacerte 於 2014 年開始在那裡工作時,公司有一個部署在 “tomcat 基礎設施” 上的單體應用,“整個釋出過程對於它本應的樣子來說太複雜了,” 他說。“其中涉及很多手動步驟,一個工程師構建一個功能然後建立一個拉取請求,另一個 QA 或工程師驗證這個功能。然後它被合併,再由其他人負責部署。因此,我們將功能交付到生產環境的流程中存在瓶頸。”
與此同時,這個由 40 人組成的工程團隊正在不斷壯大,公司希望為其產品增加越來越多的功能。作為平臺團隊的一員,Lacerte 開始聽到多個團隊希望使用不同的框架和語言部署應用程式,從 Node.js 到 Spring Boot Java。他很快意識到,為了支援增長並提高速度,公司需要一個更好的基礎設施,以及一個團隊能夠自主、自行部署並對其生產服務負責的系統。
Lacerte 從一開始就說:“我的想法是:讓我們建立一個環境,讓團隊可以更快地部署他們的服務,他們會說,‘好吧,我不想再在單體應用中構建了。我想構建一個服務。’” (Lacerte 於 2019 年離開公司。)
透過與運營團隊合作,Lacerte 的團隊獲得了對公司 AWS 基礎設施 的更多控制權和訪問許可權,並開始對幾種編排技術進行原型設計。“那時候,Kubernetes 還有點地下,不為人知,” 他說。“但我們看了社群、拉取請求的數量、GitHub 上的開發速度,我們看到它正在獲得關注。而且我們發現它比其他技術更容易管理。”
他們使用 Chef 和 Terraform 供應在 Kubernetes 上啟動了最初的幾個服務,隨著更多服務的加入,自動化也隨之增加。“我們在世界各地都有叢集——在韓國、澳大利亞、德國和美國,” Lacerte 說。“自動化對我們至關重要。” 他們現在主要使用 Kops,並且正在考察幾家雲提供商的託管 Kubernetes 產品。
如今,雖然單體應用仍然存在,但提交和功能越來越少。所有團隊都在新的基礎設施上進行部署,服務已成為常態。AppDirect 現在在生產中有超過 50 個微服務,並在全球的 AWS 和本地部署了 15 個 Kubernetes 叢集。
Lacerte 的策略最終奏效,因為 Kubernetes 平臺對部署時間產生了非常實際的影響。由於減少了對定製的、脆弱的帶有 SCP 命令的 shell 指令碼的依賴,部署新版本的時間從 4 小時縮短到幾分鐘。此外,公司投入了大量精力為開發人員實現自助服務。“引入一個新服務不需要 Jira 工單或與三個不同的團隊開會,” Lacerte 說。如今,該公司每週部署 1600 次,而之前只有 1-30 次。
此外,Kubernetes 平臺幫助支援了工程團隊在過去幾年中 10 倍的增長。“所有權是 AppDirect 的核心價值觀,這體現在我們能夠獨立於單體程式碼庫釋出服務的能力上,” 與 Lacerte 共同推動該計劃的資深軟體開發人員 Alexandre Gervais 說。“現在,小團隊擁有我們業務領域模型的關鍵部分,他們在自己解耦的專業領域內運作,對整個程式碼庫的瞭解有限。這減少並隔離了部分複雜性。” 再加上他們不斷新增新功能的事實,Lacerte 說,“我認為如果我們沒有這個新基礎設施,我們的開發速度會慢很多。”
透過將其市場和計費單體應用從傳統的 EC2 主機遷移到 Kubernetes,以及利用自動擴縮容(因為工作時間的流量更高),公司還實現了成本節約。
AppDirect 的雲原生技術棧還包括 gRPC 和 Fluentd,團隊目前正在設定 OpenCensus。平臺已經集成了 Prometheus,所以“當團隊部署他們的服務時,他們就有通知、警報和配置,” Lacerte 說。“例如,在測試環境中,我希望在 Slack 上收到訊息,而在生產環境中,我希望收到 Slack 訊息,並且還希望收到呼叫。我們與 PagerDuty 進行了整合。團隊對他們的服務擁有更多的所有權。”
當然,這也意味著更多的責任。“我們要求工程師們拓寬視野,” Gervais 說。“我們從一種僅限於‘將程式碼推送到分支’的文化,轉變為程式碼庫之外令人興奮的新職責:功能和配置的部署;應用程式和業務指標的監控;以及在發生故障時的待命支援。這是一次巨大的工程文化轉變,但在規模和速度方面的好處是不可否認的。”
隨著工程隊伍的不斷壯大,平臺團隊面臨著新的挑戰,即確保 Kubernetes 平臺對每個人都易於訪問和使用。“我們如何確保當我們團隊增加更多人時,他們是高效、富有成效的,並且知道如何快速上手這個平臺?” Lacerte 說。“所以我們有佈道者、文件、一些專案示例。我們做演示,我們有 AMA(Ask Me Anything)會議。我們正在嘗試不同的策略來吸引大家的注意力。”
在他們 Kubernetes 之旅的三年半後,Gervais 覺得 AppDirect “在正確的時間做出了正確的決定,” 他說。“Kubernetes 和雲原生技術現在被視為事實上的生態系統。我們知道應該將精力集中在哪裡,以應對我們在擴充套件過程中面臨的新一輪挑戰。社群非常活躍和充滿活力,這與我們出色的內部團隊形成了很好的互補。展望未來,我們的重點將真正轉向從生態系統中獲益,透過在我們的日常運營中提供附加的業務價值。”