公司 蒙特利爾市 地點 加拿大魁北克省蒙特利爾 行業 政府

挑戰

像許多政府一樣,蒙特利爾市擁有許多遺留系統,而且“我們有些系統比在這裡工作的一些開發人員年齡還大”,該市的首席技術官 Jean-Martin Thibault 說。“我們有大型機、各種 Windows 版本、各種 Linux 版本、新舊 Oracle 系統、Sun 伺服器、各種資料庫。像所有大公司一樣,一些最重要的系統,例如預算和人力資源,都是在過去 30 年裡內部在大型機上開發的。”總共有 1,000 多個應用程式,其中大部分執行在不同的生態系統中。2015 年,一個新的管理團隊決定打破這些孤島,並投資 IT,以實現該市更整合化的治理。他們需要弄清楚如何現代化架構。

解決方案

第一步是容器化。團隊從一個由四到五臺伺服器組成的小型 Docker 場開始,使用 Rancher 提供對 Docker 容器及其日誌的訪問,並使用 Jenkins 進行部署。解決方案架構師 Marc Khouzam 說:“我們的工作基於新趨勢;我們理解了不變性、不停機部署等帶來的好處。”他們很快意識到也需要編排,並選擇了 Kubernetes。企業架構師 Morgan Martinet 說:“Kubernetes 提供瞭如何為任何型別的應用程式描述架構的概念,並基於這些概念部署執行基礎設施所需的一切。它正在成為事實上的標準。”

影響

上市時間大幅縮短,從幾個月縮短到幾周。部署時間從幾個月縮短到幾小時。Thibault 說:“過去,你必須申請虛擬機器,僅僅這項工作就可能需要幾周時間,很輕鬆。現在你甚至不必申請任何東西。你只需建立你的專案,它就會被部署。”Kubernetes 還提高了該市計算資源的使用效率:Martinet 說:“以前,我們目前在 Kubernetes 上執行的 200 個應用程式元件需要數百臺虛擬機器,而現在,如果我們談論一個單一的生產環境,我們能夠將它們執行在 8 臺機器上,包括 Kubernetes 的主節點。”所有這些都由一個只有 5 人的小團隊操作 Kubernetes 叢集完成。

作為加拿大第二大城市,蒙特利爾擁有大量遺留系統來維持政府運作。儘管這些系統並未追溯到該市於 1642 年建城之時,但“我們有些系統比在這裡工作的一些開發人員年齡還大”,該市首席技術官 Jean-Martin Thibault 開玩笑說。

“我們有大型機、各種 Windows 版本、各種 Linux 版本、新舊 Oracle 系統、Sun 伺服器、各種資料庫。一些最重要的系統,例如預算和人力資源,都是在過去 30 年裡內部在大型機上開發的。”

近年來,這一事實成為了一個巨大的痛點。總共有 1,000 多個應用程式,執行在幾乎同樣多的不同生態系統中。2015 年,一個新的市政府管理團隊決定打破這些孤島,並投資 IT,以實現更整合化的治理。Thibault 說:“組織是孤立的,因此架構也是孤立的。一旦我們整合到一個 IT 團隊中,我們決定重新設計整體企業架構。”

現代化架構的第一步是容器化。解決方案架構師 Marc Khouzam 說:“我們的工作基於新趨勢;我們理解了不變性、不停機部署等帶來的好處。”團隊從一個由四到五臺伺服器組成的小型 Docker 場開始,使用 Rancher 提供對 Docker 容器及其日誌的訪問,並使用 Jenkins 進行部署。

但是這個 Docker 場的設定有一些限制,包括缺乏自愈和基於流量的動態伸縮,以及最佳化伺服器資源和伸縮到相同容器的多個例項所需的工作量。團隊很快意識到也需要編排。Thibault 說:“Kubernetes 應運而生,帶來了所有這些功能,使得管理更容易,併為使用者提供了更多好處。”

團隊評估了幾種編排解決方案,但 Kubernetes 脫穎而出,因為它解決了所有痛點。(他們還受到了雅虎日本案例的啟發,團隊成員認為該案例接近他們的願景。)企業架構師 Morgan Martinet 說:“Kubernetes 提供瞭如何為任何型別的應用程式描述架構的概念,並基於這些概念部署執行基礎設施所需的一切。它正在成為事實上的標準。它還承諾了跨雲提供商的移植性。現在選擇 Kubernetes 為我們提供了許多選項,例如在內部或任何 IaaS 提供商中執行叢集,甚至在任何主要雲提供商中使用 Kubernetes 即服務。”

決策中的另一個重要因素是供應商中立性。Thibault 說:“作為政府實體,我們選擇產品和提供商時保持中立至關重要。Cloud Native Computing Foundation 獨立於任何公司,提供了這一點。”

Kubernetes 的實施始於使用內部 Ansible 劇本部署一個小叢集,該叢集很快被 Kismatic 發行版取代。考慮到他們在操作 Kubernetes 平臺時看到的複雜性,他們決定為開發團隊提供基於 Helm 的自動化 CI/CD 解決方案。Khouzam 說:“Kubernetes 上的整合 CI/CD 解決方案標準化了各個開發團隊設計和部署解決方案的方式,但允許他們保持獨立。”

在重新架構過程中,團隊還添加了 Prometheus 用於監控和警報,Fluentd 用於日誌記錄,Grafana 用於視覺化。Martinet 說:“我們對正在部署的內容有了更清晰的可見性。”Khouzam 補充道:“最大的好處是我們可以跟蹤任何事物,即使是不在 Kubernetes 叢集中執行的事物。這是我們統一監控工作的方式。”

總而言之,雲原生解決方案對速度和管理開銷都產生了積極影響。透過標準化、程式碼生成、自動部署到 Kubernetes 以及透過 Prometheus 進行標準化監控,上市時間大幅縮短,從幾個月縮短到幾周。部署時間從幾個月和幾周的規劃縮短到幾小時。Thibault 說:“過去,你必須申請虛擬機器,僅僅這項工作就可能需要幾周時間才能正確配置。”此外,對於專用系統,通常需要引入專家以其自己的方法進行安裝,這可能需要數週甚至數月。

現在,Khouzam 說:“我們幾乎可以部署任何已經 Docker 化的應用程式,而無需任何人的幫助。在 Kubernetes 中執行一個專案完全取決於你需要程式設計實際軟體的時間。它不再依賴於部署。部署速度如此之快,以至於可以忽略不計。”

Kubernetes 還提高了該市計算資源的使用效率:Martinet 說:“以前,我們目前在 Kubernetes 中執行的 200 個應用程式元件需要數百臺虛擬機器,而現在,如果我們談論一個單一的生產環境,我們能夠將它們執行在 8 臺機器上,包括 Kubernetes 的主節點。”所有這些都由一個只有 5 人的小團隊操作 Kubernetes 叢集完成。Martinet 補充道:“無論你衡量什麼,這都是一個巨大的進步。”

因此,團隊的未來戰略是儘可能地針對 Kubernetes,這不足為奇。Thibault 說:“如果某個東西不能在 Kubernetes 中執行,我們會等它。”這意味著他們尚未將該市的任何 Windows 系統遷移到 Kubernetes,儘管這是他們希望做的事情。Martinet 說:“我們儘可能與市場合作,向我們的供應商施壓,要求他們支援 Kubernetes,因為它是一種更容易管理的解決方案。”

Thibault 預見到在不久的將來,該市 60% 的工作負載將在 Kubernetes 平臺上執行——基本上是他們可以在那裡執行的任何和所有用例。他說:“它比我們過去做事的方式效率高得多。我們不會回頭。”