雲原生賦能傳統行業軟件離線交付

一.離線交付的痛點

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

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管理關鍵業務場景,涵蓋製造、能源、高校、公安、政府、交通、軍工等十幾個行業。客戶有 京東方、百勝中國、中航信、中公高科等大型企業。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章