軟件發布終點:Docker 和 CaaS

| 雷劍文 | 29-06-2017 11:50 |
軟件發布終點:Docker 和 CaaS

沒有企業軟件是單獨運行,必定會有作業系統和第三方組件等配合,所以發布軟件時,相關組件包、平台版本和參數設定均需要跟蹤。這並非甚麼高難度的工作,但也很費時的,先分享 3 個實例:

  • (1)1996 年,香港百佳超市內部開發的系統要發布到上海百佳運行,為了確保零風險,新購伺服器先運到香港公司安裝和測試系統,然後再把伺服器轉到上海 — 可否有更快捷的方法?
  • (2)2011 年,評估一個科研項目的風險。該項目是把《維基百科》內容轉為認知數據庫作為智能搜尋,開發者沒有明確記錄安裝步驟和版本,項目採用太多開源組件, 新版本組件的設定可能有出入, 使得每次從新安裝都有很多「小」問題。可否有一個檔案記錄步驟和版本,還可以自動執行?
  • (3)2015 年某個政府資助項目,主要是培訓業界使用不同測試流動應用程式(app),從而提高他們開發高質 app。培訓軟件中,以 Distributed JMeter 環境設定為複雜,在 1 台實體電腦模擬 1 個多台電腦的網絡。我們採用虛擬機器(VM),雖然每個 VM 的影像(image)是一樣,但當運行 5 個 VM,便需 5 個獨立影像。有更省資源的方法嗎?

軟件發布方法有否終點站? 2016年,國外開發者關注 1 項成熟的技術:Docker。它有點類似虛擬機器,但技術概念不同。下面解說 Docker 運作:

首先,我們的編程員電腦和生產環境伺服器皆已安裝 Docker。編程員開發了自家 ERP(企業資源規劃)系統,並發布到伺服器裏。編程員建立 1 個安裝步驟和設定的檔案(Dockerfile), Docker 便會自動按這檔案生成 1 個有層次(layer)結構的唯讀影像。層次結構概念很重要,當 Docker 運行這個影像時,會在唯讀影像之上再建立 1 個可讀寫的層,使得數據、參數和檔案更新等均記錄在可讀寫的層;而運行起來的 ERP 系統,在 Docker 術語叫「Container(容器)」。

如果我們要在伺服器上運行 3 個獨立 ERP 系統,分別用作培訓、實習和日常運作;我們要建立 3 個 Container,Docker 會設立 3 個獨立讀寫層在相同唯讀影像上,所以我們是用 1 個唯讀影像運行多個 Container。

還有 Docker 影像比虛擬機影像小,更快上傳到雲端,常用的雲是 Docker Hub。在生產環境伺服器上,從 Docker Hub 下載我們的 Docker 影像,便可即時運行,毋須再測試。假如生產環境伺服器不是實體機,而是租用雲端虛擬機(IaaS),只要能安裝 Docker 便沒問題。

重點來了,我們可否直截了當租用 Docker 呢?這不就更簡單。沒錯,這就是 CaaS(Container-as-a-Service),費用也比 IaaS 低幾倍,因而成為目前大趨勢。

以上內容純屬作者個人意見,並不代表本網立場。

雷劍文是香港電腦學會軟件及系統過程改善專題小組委員。

Photo:Docker.com
Source:ezone.hk

Page 1 of 8