挑戰
Northwestern Mutual 客戶體驗工程總監 Brad Williams 表示,在 2015 年春季,Northwestern Mutual 收購了金融科技新創公司 LearnVest,並決定將「Northwestern Mutual 領先的產品和服務與 LearnVest 的數位體驗和創新金融規劃平台結合」。公司現有的基礎架構已針對內部部署網路上的批次工作流程進行了最佳化;部署非常傳統,著重於遵循流程而不是提供部署敏捷性。「我們必須建立一個可彈性擴展的平台,同時也要更靈敏,以便我們可以快速將資料傳送到客戶網站,讓我們的終端客戶獲得他們期望的體驗。」Williams 說道。
解決方案
平台團隊提出了一個計畫,使用公有雲 (AWS)、Docker 容器和 Kubernetes 進行協作。「Kubernetes 為我們提供了基礎框架,讓團隊可以在他們建構的內容中非常自主,並快速且頻繁地交付。」Northwestern Mutual 雲原生工程師 Frank Greco Jr. 說道。該團隊還建構並開源了 Kanali,這是一個 Kubernetes 原生 API 管理工具,使用 OpenTracing、Jaeger 和 gRPC。
影響
過去,基礎架構部署可能需要數週時間;現在,只需幾分鐘即可完成。部署次數大幅增加,從每年約 24 次增加到 2017 年前 10 個月就超過 500 次。可用性也提高了:過去每週日早上都有一個六小時的提交控制時段,以及其他一般維護時段,在此期間可能會發生停機。「現在我們已經消除了計畫性的停機時段。」Northwestern Mutual 應用程式平台團隊經理 Bryan Pfremmer 說道。Kanali 對於利潤產生了影響。Pfremmer 說,公司先前使用的供應商 API 管理產品需要 23 台伺服器,「專門用於 API 管理」。 「現在它都整合到現有的堆疊中,並作為 Kubernetes 上的另一個部署執行。而這只是一個環境。在我們擁有的三個環境加上測試環境之間,這就是實實在在的成本節省。」
多年來,公司在技術管理方面也採取了類似的方法,並且最近進行了數位轉型,以推進公司的數位策略,包括在雲原生領域 громко заявить о себе (這裡的原文意思比較模糊,我理解為 to make a lot of noise in the cloud-native world 是指在這個領域發聲,所以用比較明確的語意表達).
在 2015 年春季,這家保險和金融服務公司收購了金融科技新創公司 LearnVest,並決定將「Northwestern Mutual 領先的產品和服務與 LearnVest 的數位體驗和創新金融規劃平台結合」,Northwestern Mutual 客戶體驗工程總監 Brad Williams 說道。公司現有的基礎架構已針對內部部署資料中心託管的批次工作流程進行了最佳化;部署非常傳統,並且有許多容易出錯的手動步驟。
Williams 說,為了給公司 450 萬客戶提供他們期望的數位體驗,「我們必須建立一個可彈性擴展的平台,同時也要更靈敏,以便我們可以快速將資料傳送到客戶網站。我們基本上說,『您建構您認為支援新的、面向現代化的系統所必需的系統。』這就是我們擺脫任何舊系統的原因。」
Williams 和平台團隊的其他成員認為,第一步是開始從私有資料中心轉移到 AWS。考慮到新的微服務架構,以及實施最適合組織的架構的自由,他們開始使用 Docker 容器。在研究了各種容器協作選項後,他們選擇了 Kubernetes,即使當時它仍處於 Beta 測試階段。「當時有一些爭論,我們應該自己建構一些東西,還是只是利用該產品並隨著它一起發展。」Northwestern Mutual 雲原生工程師 Frank Greco Jr. 說道,「Kubernetes 絕對是我們的正確選擇。它為我們提供了基礎框架,讓團隊可以在他們建構的內容中自主,並快速且頻繁地交付。」
作為早期採用者,團隊必須使用 Ansible 腳本進行大量工作才能建立叢集。「鑑於我們業務的性質,我們有很多嚴格的安全要求。」Northwestern Mutual 應用程式平台團隊經理 Bryan Pfremmer 解釋道。「我們發現自己運行的配置是極少數其他人嘗試過的。」客戶體驗團隊是第一個使用新平台的團隊;如今,公司 1,500 名工程師中有數百人正在使用它,而且有更多人渴望加入。
結果是戲劇性的。過去,基礎架構部署可能需要兩週時間;現在,只需幾分鐘即可完成。現在,隨著對基礎架構自動化和自助服務的關注,「如果您願意,您可以在同一天將應用程式投入生產。」Pfremmer 說道。
過去的流程非常繁瑣,以至於次要錯誤修復版本會與功能版本捆綁在一起。借助 Kubernetes 啟用的新簡化系統,部署次數已從每年約 24 次增加到 2017 年前 10 個月就超過 500 次。可用性也得到了提高:過去每週日清晨都有一個六小時的提交控制時段,以及其他一般維護時段,在此期間可能會發生停機。「現在沒有計畫性的停機時段。」Pfremmer 指出。
Northwestern Mutual 建構了該 API 管理工具(名為 Kanali),並在 2017 年夏季將其開源。該團隊承擔這個專案是因為它是他們正在建構的關鍵功能,而且之前的解決方案以「反雲原生」的方式運作,這與我們正在做的其他一切都不同。」Greco 說道。現在,API 管理只是部署到 Kubernetes 的另一個容器,以及一個單獨的 Jaeger 部署。
現在,使用 Kubernetes 部署平台的工程師們額外獲得了生產環境中的可見性和自主權的好處。以前,需要一個集中式團隊來執行追蹤。「現在,開發人員擁有自主權,他們可以隨時隨地以任何方式使用它。隨著我們在其中不斷成熟,下游發生的儀器化越多,它就變得越有價值。」Greco 說道。
但團隊並沒有就此止步。「在大型企業中,您會有人使用 Kubernetes,但您也會有人使用 WAS 和 .NET。」Greco 說道。「您可能還沒有達到整個堆疊都可以雲原生的程度。如果您可以採用您的 API 管理工具並使其成為雲原生,但仍然代理到舊系統呢?使用不同的雲原生、開源和 Kubernetes 原生組件,您可以做很多創新的事情。」
隨著團隊不斷改進其堆疊並分享其 Kubernetes 最佳實務,它感覺 Northwestern Mutual 作為一家技術優先公司的聲譽也在不斷發展。「沒有人會想到一家擁有 160 多年歷史的公司會如此深入地涉足雲端和基礎架構堆疊。」Pfremmer 說道。他們希望這意味著他們將能夠吸引新的人才。「我們正試圖讓大家知道我們正在做的事情,以便我們可以找到那些會說,『是啊,這很有趣。我想來做!』的人。」