挑戰
Prowise 是一家生產教育裝置和軟體的荷蘭公司,其產品在全球範圍內使用。該公司原有基於 Linux 服務的架構,在歐洲、澳大利亞和美國設有多個可用區。“過去幾年我們發展迅速,但開始遇到版本管理和靈活擴充套件的問題,”高階 DevOps 工程師 Victor van den Bosch 表示,“這不僅是需求方面的擴充套件,還包括部署多個產品,這些產品都有自己的版本、自己的開發團隊,以及他們各自正在解決的問題。我們希望能夠將所有這些都放在同一個平臺上,而不會遇到太多阻力。我們希望讓基礎設施面向未來,並解決僅僅執行一個普通 Linux 服務所帶來的一些問題。”
解決方案
Prowise 團隊採用了容器化技術,投入時間改進其 CI/CD 管道,並選擇了 Microsoft Azure 的託管 Kubernetes 服務 AKS 進行編排。“Kubernetes 很好地解決了網路等問題,其方式符合我們的商業模式,”van den Bosch 說,“我們希望專注於核心產品,也就是執行在基礎設施上的軟體,而不是基礎設施本身。”
影響
Prowise 的 Kubernetes 平臺上首批基於 Web 的應用程式現已進入 Beta 測試階段,團隊正在體驗快速、流暢部署帶來的好處。“以前的部署方式需要半小時的準備時間和半小時的部署時間。有了 Kubernetes,只需幾秒鐘。”高階開發人員 Bart Haalstra 說。因此,van den Bosch 補充道:“我們已經從每季度釋出一次變為每月釋出一次。我們基本上每小時都會部署,或者只要發現某個功能已準備好投入生產就會部署;以前,我們的釋出大多在非工作時間進行,以免影響客戶,因為我們對流程本身的信心相對較低。Kubernetes 還使我們能夠快速響應錯誤,併為使用者實施調整,版本之間實現零停機。對於某些錯誤,我們甚至在檢測到後幾分鐘內就將程式碼修復推送到生產環境。”最近,團隊為內部應用程式推出了一項新的單點登入解決方案。“得益於 Kubernetes 平臺基於資源的架構,我們能夠在不到一天的時間內將該應用程式引入一個全新的生產環境,其中大部分時間用於在將已知資源定義從暫存環境應用到新環境後進行測試。”van den Bosch 說,“在傳統的虛擬機器上,這可能需要一兩天,然後還需要幾周時間來解決我們在應用更新時配置指令碼中的問題。”
荷蘭公司 Prowise 是該領域的領導者之一,提供軟硬體一體化解決方案,幫助教育工作者建立更具吸引力的學習環境。
近年來,隨著公司將其產品擴充套件到荷蘭以外地區——在歐洲、澳大利亞和美國建立了多個可用區,每個可用區最多有九臺伺服器——其基於 Linux 服務的現有基礎設施難以跟上。“過去幾年我們發展迅速,但開始遇到版本管理和靈活擴充套件的問題,”高階 DevOps 工程師 Victor van den Bosch 說,他於 2017 年底受僱於該公司,負責構建新平臺。
Prowise 的產品支援十種語言,所以問題不僅僅是需求方面的擴充套件,他補充道,“還包括部署多個產品,這些產品都有自己的版本、自己的開發團隊,以及他們各自正在解決的問題。我們希望能夠將所有這些都放在同一個平臺上,而不會遇到太多阻力。我們希望讓基礎設施面向未來,並解決僅僅執行一個普通 Linux 服務所帶來的一些問題。”
該公司在 Microsoft Azure Cloud 上的現有基礎設施全部基於虛擬機器,“一個相當傳統的設定,”van den Bosch 說。“我們決定在軟體中加入一些功能,這些功能要求能夠快速擴充套件,能夠快速部署新的應用程式和不同程式語言的不同版本。我們真的不想費力去維護這些伺服器的特定狀態。”
在研究了可能的解決方案後,他選擇了容器化和 Kubernetes 編排。“容器化是未來,”van den Bosch 說,“Kubernetes 很好地解決了網路等問題,其方式符合我們的商業模式。我們希望專注於核心產品,也就是執行在基礎設施上的軟體,而不是基礎設施本身。”此外,Prowise 團隊喜歡它沒有供應商鎖定。“我們不想侷限於一個平臺,”他說,“我們儘量不觸碰那些專有且難以移植到其他供應商的產品。”
使用 Kubernetes 的上市時間非常短:平臺上的首批基於 Web 的應用程式在幾個月內就進入了 Beta 測試階段。這主要得益於 van den Bosch 決定使用 Azure 的託管 Kubernetes 服務 AKS。然後團隊必須確定哪些元件需要保留,哪些需要替換。New Relic 等監控工具被移除了,“因為當你將其擴充套件到不同的可用區時,它們往往會變得非常昂貴,而且維護起來也不是很方便,”他說。
Prowise 還在改進 CI/CD 管道方面投入了大量工作。“我們希望確保管道自動化且易於使用,”他說,“我們已經為管道設定了許多設定和配置,從現在開始,只需將這些指令碼和配置應用於新專案即可。”
Prowise 的 Kubernetes 平臺上首批基於 Web 的應用程式現已進入 Beta 測試階段,團隊正在體驗快速、流暢部署帶來的好處。“以前的部署方式需要半小時的準備時間和半小時的部署時間。有了 Kubernetes,只需幾秒鐘。”高階開發人員 Bart Haalstra 說。因此,van den Bosch 補充道:“我們已經從每季度釋出一次變為每月釋出一次。我們基本上每小時都會部署,或者只要發現某個功能已準備好投入生產就會部署。以前,我們的釋出大多在非工作時間進行,以免影響客戶,因為我們對流程本身的信心相對較低。有了 Kubernetes,我們敢於在繁忙的工作日部署,並且對部署成功充滿信心。”
此外,van den Bosch 說,“Kubernetes 使我們能夠快速響應錯誤,併為使用者實施調整,版本之間實現零停機。對於某些錯誤,我們甚至在檢測到後幾分鐘內就將程式碼修復推送到生產環境。”
最近,團隊為內部應用程式推出了一項新的單點登入解決方案。“得益於 Kubernetes 平臺基於資源的架構,我們能夠在不到一天的時間內將該應用程式引入一個全新的生產環境,其中大部分時間用於在將已知資源定義從暫存環境應用到新環境後進行測試。”van den Bosch 說,“在傳統的虛擬機器上,這可能需要一兩天,然後還需要幾周時間來解決我們在應用更新時配置指令碼中的問題。”
舊版應用程式也在向 Kubernetes 遷移。不久前,團隊需要設定一個基於 Java 的應用程式來編譯和執行前端。“在傳統的虛擬機器上,設定和保持更新需要相當長的時間,更不用說日後的維護了,”van den Bosch 說。相反,容器化並在 Kubernetes 上執行它用了不到半天的時間。“這容易得多,我們也節省了成本,因為我們不必為此專門啟動新的虛擬機器。”
van den Bosch 說,也許最重要的是,“Kubernetes 讓我們能夠真正考慮解決問題的最佳工具,並充分利用微服務架構。有一個 Node.js 庫非常擅長解決某個特定問題?使用它。想要擁有由第三方開發、完全適合您用例的成熟分析應用程式嗎?執行它。正在涉足機器學習和人工智慧演算法,但厭倦了等待數天才能完成訓練?只需幾秒鐘即可擴充套件它。有一位固執的開發人員想要使用一種聞所未聞的程式語言?讓他用,當然前提是它能在容器中執行。所有這些,您的運營團隊/DevOps 都能在晚上睡個好覺。”
展望未來,Prowise 的所有新 Web 開發、平臺和 API 都將基於 Kubernetes。一個重要的新建專案是針對教師和學生的平臺,該平臺將於 9 月返校季啟動。使用者將能夠登入並訪問各種教育應用程式。透過最近收購軟體公司 Oefenweb,Prowise 計劃提供自適應軟體,讓教師能夠準確瞭解學生的進步和薄弱點,並自動調整作業難度以適應個別學生。van den Bosch 說:“我們將利用 Kubernetes 的強大功能來整合、補充和支援我們的組合應用程式產品組合,並將我們的解決方案帶到更多教室。”
協作軟體也是一個優先事項。透過單點登入軟體,使用者的設定和憑據都儲存在雲端,可以在世界任何螢幕上使用。van den Bosch 說:“我們正在努力提供硬體和軟體一體化解決方案,讓使用者儘可能方便地使用和協作。”Haalstra 補充道:“沒有 Kubernetes,我們做不到這一點。”