1. 程式人生 > 其它 >使用Rainbond實現離線環境軟體交付

使用Rainbond實現離線環境軟體交付

一.離線交付的痛點

在傳統行業,如政府、能源、軍工、公安、工業、交通等行業,為了防止資料洩露和執行安全考慮,一般情況下網路會採取內外網隔離的策略,以防範不必要的風險,畢竟在安全防護方面,網路物理隔離是網路安全防禦最有效的手段,而網路隔離在軟體交付過程中,對於外部軟體開發廠商來說將會帶來一系列的交付難題,也增加大量成本投入。例如:

1. 現場安裝部署和驗收測試,效率低下

交付過程中需要將應用程式及依賴的所有資源安裝到離線客戶環境,而客戶環境有可能是物理伺服器、虛擬機器、私有云及K8s容器等各種環境,加上離線環境網路的限制,就會導致離線環境安裝和部署效率低下。由於安裝配置過程繁複,容易出錯,在最終交付環境中需要重新進行驗證測試工作,也需要浪費很多時間。如果部署的是微服務架構的應用系統複雜性更高,工作量還會加倍。

2. 離線環境定製開發和產品升級,成本高

定製開發需要開發人員投入,成本本來就高,在離線環境需要根據客戶反饋持續迭代,迭代過程產品不斷升級,每升級一次就要走一次安裝部署和驗證測試過程,成本很高。如果有些工作必須駐場開發,成本更高。

3. 網路不通,無法遠端運維

交付完成後,應用需要持續運維,保障執行穩定性和功能持續可用,在網路無法聯通的情況下,出任何問題都需要安排人員現場支援,甚至需要安排人員長期駐場。

二.技術選型

上述問題的根本原因是因為,應用系統的多環境適配應用安裝部署應用升級應用運維等操作自動化程度不高,需要大量人員手工操作,所以效率很低,解決問題的重點在解決應用管理的自動化。
當前,雲原生技術已經越來越成熟,而云原生技術主要解決的就是應用管理的自動化問題,具體有兩種開源實現方案 :

1. Rancher+Helm

Rancher是一款K8s管理工具,他提供K8s的管理UI,包管理使用Helm。對應離線交付的問題,Rancher可以安裝在多種執行環境(物理伺服器、虛擬機器、私有云),並且提供部分應用自動化運維功能,它可以解決 多環境適配應用運維問題,而 應用安裝部署應用升級問題可以通過Helm包解決。

2. Rainbond+應用模版

Rainbond是“以應用為中心”的應用管理平臺,應用模版是Rainbond對應用打包的方案,Rainbond提供應用的全生命週期管理(應用開發、應用編排、應用交付和應用運維)。Rainbond可以部署到各種執行環境上(物理伺服器、虛擬機器、私有云),還可以部署到已有K8s叢集和Ranchar上,解決客戶多環境適配

問題;Rainbond提供應用運維面板解決應用運維問題,使用比較簡單,不需要懂容器概念;Rainbond的應用模版是一個亮點,只要在Rainbond上執行起來的應用就可以一鍵釋出成應用模版,簡化了應用模版的製作,而且應用模版可以匯出離線包,特別適合離線環境的 應用安裝部署應用升級

下面分別比較一下兩個方案

Rainbond相比Rancher最大的優點就是易用性,不需要學習K8s和容器相關技術和概念,另外,Rainbond提供的一體化開發環境和模組編排功能,能大幅度提高定製開發的效率。Rancher最大的優點是完全相容K8s體系,如果瞭解K8s能很快上手。

Helm和應用模版比較

對比項 Helm 應用模板
安裝和升級 少量配置 全自動
製作流程 人工編寫 全自動
匯出和匯入離線包 不支援 支援
配置調整 支援預定義的配置調整 支援
模組定製 不支援 支援
相容其他K8s版本 相容 需要預先安裝Rainbond

Rainbond的應用模版 跟 OAM的設計思路完全一致,“以應用為中心”的設計理念,遮蔽掉容器基礎設施的複雜性和差異性,為平臺的使用者帶來低心智負擔的、標準化的、一致的應用管理與交付體驗。

綜合對比,在離線交付場景Rainbond+應用模版的方案優勢明顯,下面我們結合實際例子,來講解Rainbond+應用模版交付離線客戶的整個過程。

三.使用Rainbond應用模版進行離線環境的應用交付

基於Rainbond進行離線環境的應用交付,只需將開發環境已開發好的業務釋出至應用市場,基於應用市場匯出應用模板的離線包,在交付環境中進行匯入操作,匯入後基於應用市場一鍵安裝即可自動執行。

預先準備環境

  • 擁有兩套Rainbond叢集,模擬開發環境及交付環境(開發環境為線上環境,交付環境為離線環境)。
  • 開發環境安裝,參考 線上安裝 文件;
  • 交付環境安裝,參考 離線安裝 文件;
  • 擁有U盤、光碟等離線環境下應用模板離線包傳輸介質。

1.業務部署
整個流程始於開發環境,我們首先需要將業務搬遷至Rainbond之上。在開發環境基於部署自己的業務,可以支援原始碼或是映象。當前以Spring Cloud微服務框架 Pig 為例,部署參考SpringCloud Pig 在Rainbond部署及應用製作

2.應用釋出

將開發測試環境已開發完成的應用釋出至內部元件庫:點選應用左側導航欄 釋出 按鈕,選擇 釋出到元件庫 ,該過程需要 新建應用模板,應用模板定義了以下資訊:

選項名 說明
名稱 定義應用名稱(必填)
釋出範圍 應用模板的可見範圍,當前團隊為當前團隊可見,企業所有團隊可見(必選)
分類標籤 應用標籤,可按照架構、行業、部署方式進行分類
簡介 應用描述,幫助使用者瞭解此應用
Logo 應用的Logo圖片

建立應用模板後定義應用釋出版本:

選項名 說明
版本號 當同應用多次釋出時,如果版本號相同,則會覆蓋已釋出的版本,如果不同,將釋出為新版本,應用升級或回滾時,平臺根據版本判斷(必填)
版本別名 應用別名,例如 高階版,初級版
版本說明 當前釋出版本的說明,可區分不同版本的功能差異等資訊

釋出元件模型配置:

選項名 說明
連線資訊 當連線資訊中出現密碼類的資訊,可選擇每次部署時自動生成隨機值
環境變數 編輯該元件預設的環境變數
伸縮規則 定義該元件可伸縮的最大最小節點數,及節點伸縮步長,最小安裝記憶體限制。

釋出外掛模型資訊:

要釋出的應用中其元件攜帶有外掛時,會進行展示並在釋出過程中跟隨元件釋出。

所有資訊配置完畢後,點選釋出按鈕進行釋出,業務開發過程中定義的元件間依賴關係、環境配置、持久化儲存、外掛、執行環境及上述定義的所有資訊都將會被打包釋出。

3.應用匯出

將應用模板進行本地化匯出,在首頁應用市場中找到已釋出的應用,點選最後方擴充套件按鈕,選擇匯出應用模板,選擇應用版本後點擊應用模板規範下的匯出按鈕,匯出過程完全自動化,待匯出完成後點選下載按鈕即可將應用模板下載至本地,儲存至U盤等移動儲存裝置中,帶到離線交付環境中去。

接下來進入離線交付流程,交付人員攜帶著裝有離線包的U盤等移動儲存裝置,開始匯入應用模版。

4.應用匯入

使用已匯出的應用模板在交付環境中匯入,點選應用市場介面的離線匯入按鈕,選擇本地的應用模板上傳,上傳完畢後選擇匯入範圍: 企業或團隊,企業為當前交付環境所有人可見,團隊為指定團隊下的人員可見;點選確認匯入即進入自動化匯入步驟。

5.一鍵部署

應用匯入後點擊安裝按鈕在當前交付環境即可一鍵部署該業務系統,該環境業務執行環境與開發環境完全一致,到此完成離線環境下的軟體交付。

6.增量升級

軟體在更新迭代過程中需要進行某些模組的升級,進行此類升級時即可使用增量升級來節省釋出及匯入匯出時間。

要達成增量升級的效果,需要重新進行應用釋出操作,選擇之前已建立的應用模板,修改版本號,如之前版本設定為2.9,則此次釋出設定為3.0。

應用釋出步驟選擇需要進行升級的元件進行釋出,而不需要選擇所有元件。釋出完成後,匯出新版本的應用模版離線包,在交付環境中再次匯入。

交付環境匯入後,平臺會對應用模板不同版本進行對比,並通過應用拓撲圖中的待升級選項提示使用者進行升級。展示版本間屬性變更情況,使用者選擇需要升級的版本進行升級即可,平臺將自動執行升級操作,變更元件構建版本。

升級過程中不會變動環境配置類資訊,這類資訊需要人為改動才會生效:

  • 環境變數的值
  • 配置檔案的內容
  • 持久化儲存

7.一鍵回滾

在升級版本上線後出現異常情況需要回滾時,平臺提供了一鍵回滾功能,在升級記錄介面選擇對應記錄點選回滾按鈕即可對升級操作進行回滾。

在回滾的過程中,新增元件並不會被刪除,如需變更,需要人為操作。

8.應用運維功能

軟體產品交付完成以後需要進行長期的運維,在運維層面,交付人員需要考慮服務的可用性、可伸縮性、資源監控,Rainbond提供了諸多運維功能,例如:

  • 服務效能分析

    通過Rainbond外掛機制擴充套件效能分析功能,服務實時效能分析外掛執行在目標分析服務同一個網路空間內,監控網絡卡的流量來統計分析服務的工作效能,對服務本身的工作流程和效能無影響,收集服務的平均響應時間,吞吐率等主要指標。

  • 資源監控報警

    基於 Prometheus 對平臺及業務進行監控,基於 ETCD動態發現 需要監控的 targets,自動配置與管理 Prometheus 服務。

  • 例項伸縮

    對服務元件進行垂直伸縮或水平伸縮,在流量高峰期靈活進行擴容。

  • 閘道器管理

    應用閘道器支援灰度釋出和A/B測試功能。

四.場景拓展

上面的例子主要針對常見的離線軟體交付場景,但在真實的離線交付場景中,還可能存在以下場景,如:

  • 離線模組定製,每個客戶交付的模組不一定,根據需要在客戶現場開啟或關閉模組,或者模組編排。
  • 離線定製開發,在離線場景下進行完整的軟體開發過程,包括原始碼管理、原始碼編譯、開發測試環境管理、團隊協作、版本釋出流程等。

上面兩個功能定製場景,通過Rainbond也可以支援,大家可先自行探索。或者關注公眾號「好雨雲」,後續會發布上述場景的詳細教程。

五.總結

本文我們分析了離線交付場景的問題,對比了可能的技術方案,並使用一個例子完整講解離線交付全過程,整個過程自動化程度很高。使用Rainbond進行離線交付肯定可以提高效率,但到底在哪些方面提高我們的效率,我再總結一下:

  • 離線環境應用系統一鍵匯出和匯入

    交付過程中只需要攜帶基於Rainbond匯出的應用模板離線包在交付環境進行匯入,即可一鍵安裝整套業務系統。

  • 開發環境和離線環境完全一致

    Rainbond遮蔽了底層環境的差異,基於應用模板進行交付,模板對應用的執行環境、依賴關係進行打包,開發環境和離線環境完全一致,不需要進行重複性測試。

  • 一體化客戶定製環境

    軟體交付過程中,不同的客戶會有不同的定製需求,也就意味著需要為不同客戶開發不同的模組,這些定製的模組在不同專案中都不盡相同,通過Rainbond提供的應用編排,就可以針對不同客戶編排和開啟不同功能模組;如果需要定製開發,就可基於交付環境已部署的Rainbond直接進行離線程式碼開發工作,包括原始碼編譯、配置元件執行環境等,在交付環境中完成所有定製工作。

  • 離線環境客戶持續交付

    對於專案實施團隊而言,在實施過程中需要不斷將 新功能、缺陷修復 等快速落實到交付環境或使用者手中,傳統的持續交付過程中,離線環境下需要交付人員駐場,手動執行更新上線操作,該過程不僅增加了交付時間,且長期的手動執行操作會增加部署的風險;而Rainbond的持續交付能力,能夠實現應用後續的增量匯入、匯出和版本升級,能夠帶來以下優勢:

    • 通過自動化方式實現,有效縮短程式碼提交到部署上線的時間。
    • 軟體在整個生命週期內都處於可部署升級的狀態。
    • 簡化升級步驟,使軟體版本更加清晰。
    • 讓交付過程成為可預期的、視覺化的過程。
  • 離線環境下自動化運維

    服務高可用,自容錯和自恢復機制,減少人工運維,提高業務系統穩定性。

六.關於Rainbond

Rainbond是一個開源的雲原生應用管理平臺,使用簡單,不需要懂容器和Kubernetes,支援管理多個Kubernetes叢集,提供企業級應用的全生命週期管理,功能包括應用開發環境、應用市場、微服務架構、應用持續交付、應用運維、應用級多雲管理等。

已有上百家企業使用Rainbond管理關鍵業務場景,涵蓋製造、能源、高校、公安、政府、交通、軍工等十幾個行業。客戶有 京東方、百勝中國、中航信、中公高科等大型企業。