公司 蒙特婁市 地點 加拿大魁北克省蒙特婁 產業 政府

挑戰

如同許多政府機構,蒙特婁市擁有多個舊有系統。「我們有些系統比這裡的一些開發人員還要老舊,」該市技術長 Jean-Martin Thibault 說。「我們有大型主機、各種版本的 Windows、各種版本的 Linux、新舊 Oracle 系統、Sun 伺服器,以及各種資料庫。如同所有大型企業,一些最重要的系統,例如預算和人力資源,都是在過去 30 年間在內部大型主機上開發的。」總共有超過 1,000 個應用程式,而且大多數都運行在不同的生態系統上。2015 年,新的管理團隊決定打破這些筒倉,並投資於 IT,以便朝向更整合的城市治理邁進。他們需要找出如何將架構現代化。

解決方案

第一步是容器化。該團隊從一個小型 Docker 農場開始,其中包含四到五台伺服器,使用 Rancher 提供對 Docker 容器及其日誌的存取權,並使用 Jenkins 進行部署。「我們的努力是基於新的趨勢;我們了解不可變性和無停機部署等優點,」解決方案架構師 Marc Khouzam 說。他們很快意識到他們也需要協 orchestration,並選擇了 Kubernetes。企業架構師 Morgan Martinet 說:「Kubernetes 提供了關於如何描述任何類型應用程式的架構的概念,並基於這些概念,部署運行基礎架構所需的內容。它正逐漸成為事實上的標準。」

影響

上市時間已大幅縮短,從數個月縮短到幾週。部署時間從數個月縮短到數小時。「過去,您必須要求虛擬機器,光是這樣就可能需要數週的時間,」Thibault 說。「現在您甚至不必要求任何東西。您只需創建您的專案,它就會被部署。」Kubernetes 也提高了該市使用其運算資源的效率:「以前,我們目前在 Kubernetes 上運行的 200 個應用程式組件需要數百台虛擬機器,而現在,如果我們談論的是單一生產環境,我們能夠在 8 台機器上運行它們,包括 Kubernetes 的主節點,」Martinet 說。而這一切都由一個僅有 5 人的小型團隊操作 Kubernetes 叢集完成。

蒙特婁是加拿大第二大城市,擁有大量舊有系統來維持政府運作。雖然它們的歷史並沒有追溯到 1642 年的城市建立之初,「我們有些系統比這裡的一些開發人員還要老舊,」該市技術長 Jean-Martin Thibault 開玩笑說。

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

近年來,這個事實成為一個很大的痛點。總共有超過 1,000 個應用程式,運行在幾乎相同數量的不同生態系統上。2015 年,新的市政府管理團隊決定打破這些筒倉,並投資於 IT,以便朝向更整合的治理邁進。「組織是筒倉式的,因此架構也是筒倉式的,」Thibault 說。「一旦我們整合到一個 IT 團隊中,我們就決定重新制定整體企業架構。」

架構現代化的第一步是容器化。「我們的努力是基於新的趨勢;我們了解不可變性和無停機部署等優點,」解決方案架構師 Marc Khouzam 說。該團隊從一個小型 Docker 農場開始,其中包含四到五台伺服器,使用 Rancher 提供對 Docker 容器及其日誌的存取權,並使用 Jenkins 進行部署。

但是這個 Docker 農場設定有一些限制,包括缺乏自我修復和基於流量的動態擴展,以及優化伺服器資源和擴展到同一容器的多個實例所需的工作。該團隊很快意識到他們也需要 orchestration。「Kubernetes 應運而生,」Thibault 說,「帶來了所有這些功能,使其更容易管理,並為使用者帶來更多好處。」

該團隊評估了幾種 orchestration 解決方案,但 Kubernetes 脫穎而出,因為它解決了所有痛點。(他們也受到 Yahoo! Japan 用例的啟發,團隊成員認為該用例與他們的願景非常接近。)「Kubernetes 提供了關於如何描述任何類型應用程式的架構的概念,並基於這些概念,部署運行基礎架構所需的內容,」企業架構師 Morgan Martinet 說。「它正逐漸成為事實上的標準。它也承諾跨雲端供應商的可移植性。現在選擇 Kubernetes 為我們提供了許多選項,例如在內部或任何 IaaS 供應商中運行叢集,甚至在任何主要雲端供應商中使用 Kubernetes 即服務。」

決策的另一個重要因素是供應商中立性。「作為政府實體,對我們來說,在選擇產品和供應商時保持中立至關重要,」Thibault 說。「雲端原生運算基金會獨立於任何公司,提供了這一點。」

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

在重新設計架構的過程中,該團隊還添加了 Prometheus 用於監控和警報、Fluentd 用於日誌記錄,以及 Grafana 用於視覺化。「我們提高了已部署內容的可見性,」Martinet 說。Khouzam 補充說:「最大的好處是我們可以追蹤任何東西,甚至是不在 Kubernetes 叢集中運行的東西。這是我們統一監控工作的方式。」

總而言之,雲端原生解決方案對速度和管理開銷都產生了積極的影響。透過標準化、程式碼生成、自動部署到 Kubernetes 以及透過 Prometheus 進行標準化監控,上市時間已大幅縮短,從數個月縮短到幾週。部署時間從數個月和數週的規劃縮短到數小時。「過去,您必須要求虛擬機器,光是這樣就可能需要數週才能正確配置,」Thibault 說。此外,對於專用系統,通常必須請專家來使用他們自己的配方安裝它們,這可能需要數週和數個月的時間。

現在,Khouzam 說,「我們可以部署幾乎任何已 Docker 化的應用程式,而無需任何人的幫助。在 Kubernetes 中運行一個專案完全取決於您需要花多少時間來編寫實際的軟體。它不再取決於部署。部署速度非常快,以至於可以忽略不計。」

Kubernetes 也提高了該市使用其運算資源的效率:「以前,我們目前在 Kubernetes 中運行的 200 個應用程式組件需要數百台虛擬機器,而現在,如果我們談論的是單一生產環境,我們能夠在 8 台機器上運行它們,包括 Kubernetes 的主節點,」Martinet 說。而這一切都由一個僅有五人的小型團隊操作 Kubernetes 叢集完成。Martinet 補充說:「無論您衡量什麼,這都是一個顯著的改進。」

因此,該團隊的未來策略是以 Kubernetes 為目標,這應該不足為奇。「如果有些東西無法在 Kubernetes 內部運行,我們會等待它,」Thibault 說。這表示他們尚未將該市的任何 Windows 系統遷移到 Kubernetes 上,儘管這是他們想要做的事情。「我們在可能的情況下與市場合作,向我們的供應商施壓,要求他們支援 Kubernetes,因為它是一種更容易管理的解決方案,」Martinet 說。

Thibault 預見不久的將來,該市 60% 的工作負載將在 Kubernetes 平台上運行——基本上是他們可以使其在那裡運行的所有用例。「這比我們過去做事的方式效率高得多,」他說。「沒有回頭路了。」