Choerodon豬齒魚實踐之應用生命週期管理

Choerodon平臺中的開發和部署都是圍繞應用來進行的,那Choerodon平臺中的應用有什麼樣的特性?又是怎樣來進行管理的呢?本文旨在深刻地介紹Choerodon平臺中應用的功能特性及其生命週期的管理。前端

微服務架構中應用的特徵

在談起Choerodon平臺中的應用時,就不得不提微服務。正是由於微服務的出現,以前的單體應用架構帶來的問題才得以解決,具體問題以下:git

(1)耦合程度隨時間推移而逐漸提升。github

(2)擴展性差,冗餘能力差後端

(3)模塊劃分不清晰,沒法細化對系統資源的需求微信

(4)維護成本隨着系統的日益臃腫而不斷增長架構

而下圖也更爲直觀地指出了單體應用架構與微服務架構的區別。框架

因而可知,微服務架構中的應用會被分解爲更小、徹底獨立的組件,這使得它們擁有更高的敏捷性、可伸縮性和可用性。換句話說,微服務架構的基本思想就是「圍繞業務領域組件來建立應用,讓應用能夠獨立地開發、管理和加速。微服務

Choerodon平臺中應用生命週期的管理

因爲Choerodon平臺採用的是微服務架構,所以系統內每一個功能模塊均被解耦爲多個應用,其中每一個應用都支持獨立地開發和獨立地部署。而Choerodon平臺中一個應用的生命週期通常從建立或導入應用開始;接着在開發流水線中按照需求對應用進行開發,待提交代碼跑完CI以後,會生成一個應用版本,而以後的部署與發佈操做均是圍繞應用版原本進行的;首先用戶能夠將生成的應用版本部署至對應的環境中;此外,用戶在測試環境中測試無誤後,能夠將此應用版本發佈至應用市場與全平臺或全組織共享。工具

以上即是Choerodon平臺中應用的生命週期與相關功能的大體流程,下面就按照這個流程進行展開,帶你們瞭解Choerodon對於DevOps的實踐。gitlab

應用的建立或導入

在平臺中建立或導入應用時,系統會默認在對應的 gitlab group 中建立一個 project 做爲此應用的初始代碼庫,然後再經過相應的頁面功能實現對此應用的管理。從gitlab或github中導入應用庫時,目前步驟和建立應用步驟相似,在導入的過程當中,依然能夠選擇對應的模板庫,以便於在平臺上進行後續的開發與部署。

在建立或導入應用的過程當中,選擇應用模板與配置應用權限是其中不可或缺的步驟,同時也是應用的重要特性,如下爲這兩個模塊的詳細介紹:

▌應用模板

爲了讓開發者能將更多的精力用於應用的開發之中,在建立應用時,Choerodon平臺提供了全面的預置應用模板供各個項目團隊選擇。其中的應用模板是由同類型應用的代碼庫整理而成的,引用了相應的應用模板後,便可在gitlab中快速地建立初始代碼庫。

目前豬齒魚平臺預置了微服務前端、微服務後端、Javalib(jar庫)、Go語言、SpringBoot等多個開發經常使用的應用模板,此外,還有Mocha與TestNg的測試應用模板。這些應用模板均統一預置於github裏面。而在這些模板中,至少都包含了 Dockerfile 文件、CI 文件以及 Chart 目錄文件。

其中Dockerfile是由一系列命令和參數構成的腳本,這些命令應用於基礎鏡像並最終建立一個新的鏡像,主要用於控制應用容器化的進程。其次是CI文件,模板中的CI文件主要用於設置在提交代碼後,自動集成時要經歷的全部階段。而其中的Chart目錄文件則用於將平臺中的容器打包,統一置於K8S平臺進行管理。

除了可使用平臺提供的預置模板,用戶還能夠根據實際狀況自定義符合本身需求的應用模板。而用戶自定義的模板將會統一置於gitlab中的應用模板庫中,便於用戶進行統一的管理。

▌應用權限

衆所周知,全部的項目團隊均是由不一樣的角色構成的。而在Choerodon平臺的項目層中,先是簡單地將角色分爲項目全部者與項目成員。顧名思義,這裏的項目全部者對應的是項目中項目經理的角色,而項目成員即爲團隊中的其餘角色。項目全部者默認擁有此項目下全部應用的開發權限和部署權限,並能夠對項目成員們進行應用權限的配置(目前平臺內的的應用權限僅限於爲項目成員配置應用的開發權限)。

在使用微服務的團隊中,因爲須要涉及到對多個單元應用的管理、開發與部署,並且不一樣的應用可能還須要不一樣的開發人員,在這種狀況下,對每一個應用進行權限的配置就變得更爲必要了。在平臺內的項目層建立應用或者導入應用時,Choerodon都提供了靈活的權限設置功能,以便項目全部者爲相應的應用配置特定的開發人員。

應用開發

當應用建立成功後,開發人員便可在Choerodon平臺的開發流水線中按照需求進行應用的開發。開發流水線是根據開發人員的平常操做整理而來的,主要經過對gitlab的封裝來實現持續集成與持續交付。

平臺中的開發流程從基於目標應用建立對應的分支開始,而以後的開發操做就在此分支上進行。待開發完成,提交代碼以後,會觸發CI,並依次執行CI文件中定義的各個階段。CI經過後,會依據版本生成規則(詳見應用版本管理部分)生成一個應用版本。此時,就須要在開發流水線中建立合併請求,而指定人員審覈代碼經過後,會將此分支合併至目標分支。在開發的最後過程,用戶可使用標記功能爲這個版本建立一個標記,以便更好地進行版本管理。

下圖爲開發流水線模塊主要流程:

應用版本管理

靈活的版本控制與規範的版本管理是Choerodon平臺的一大特點,由於採用了語義化版本的命名規則,因此Choerodon平臺內經過CI生成的版本,通常格式爲:C7N_COMMIT_TIME-C7N_BRANCH;好比:若分支名爲feature-demo,提交時間爲2019年3月7日20:14:54,那麼獲得的C7N_VERSION值爲:2019.3.7-201454-feature-demo。若經過標記功能建立的標記爲0.15.0,那麼獲得的版本號就是0.15.0。此處的標記功能一般用於對外發布新版本時使用,而此時的版本格式一般爲:主版本號.次版本號.修訂號,版本號遞增規則以下:

  1. 主版本號:當你作了不兼容的 API 修改,

  2. 次版本號:當你作了向下兼容的功能性新增,

  3. 修訂號:當你作了向下兼容的問題修正。

此外,Choerodon還支持將先行版本號及版本編譯信息加到「主版本號.次版本號.修訂號」的後面,使得版本號更加靈活易懂,例如:0.15.0-alpha.1。而具體的規則能夠至語義化規則進行詳細瞭解。

應用發佈與應用市場

不少時候,在開發完某個應用後,可能剛好另外一個項目或者另外一個組織也正好須要這個應用。在Choerodon平臺內,只需將此應用對應的應用版本發佈至全組織或全平臺,便能實現組織內或者平臺內的應用共享,同時,還可對應用的具體版本進行控制,可選的將目標應用版本發佈到應用市場,而將應用的流水版本保留下來。

而應用市場則集合了本項目下可訪問的已發佈應用,並能將所需應用的對應版本部署至此項目下的環境中使用。此外,應用市場還提供了應用的導入與導出功能(目前支持zip格式的導入與導出)。

應用部署

應用部署是部署流水線中的主要功能,應用部署的過程就是實現應用容器化的過程。

在生成應用版本以後,咱們能夠將其部署到對應的環境中去進行測試驗收或投入使用(此處的環境能夠理解爲咱們平時使用的Staging環境、UAT環境和生產環境)。而部署應用成功後,會生成一個實例,咱們經過管理這個實例及其相關的資源來管理容器中的應用(具體的原理和步驟將在後續的部署流水線模塊相關的文章中進行詳細介紹)。

如下爲部署流水線模塊的流程示意圖:

應用維度的指標監控

管理大師彼得德魯克:若是你不能度量它,你就沒法改進它。

正如彼得德魯克所說,若是想改進某個東西,首先得有一個明確的指標。Choerodon平臺內的DevOps指標均能以應用爲維度進行查看,即可知道每一個應用的開發與部署的狀況。

(1)首先能夠經過代碼提交圖瞭解到某個應用的代碼提交狀況,以此實時反應出該應用的開發狀況。

(2)在Choerodon平臺中,還能夠從應用的維度瞭解到某個應用的全部構建狀況,包括了構建的時長與構建的次數。

(3)最後能夠經過平臺從應用的維度瞭解到某個應用在某個或是全部環境中的部署狀況,包括部署時長圖與部署次數圖。

寫在最後

在微服務架構的基礎上,Choerodon平臺內的功能模塊被解耦爲多個獨立的應用。所以管理好這些應用及其對應的代碼庫頗有必要,而Choerodon平臺中提供了完善的功能來幫助用戶更好的實現多應用的管理與共享。以應用爲中心進行開發和部署是Choerodon平臺實踐DevOps的重要步驟,因此應用管理做爲實踐DevOps的基礎,也應該受到重視。

關於Choerodon豬齒魚

Choerodon豬齒魚做爲開源多雲應用平臺,是基於Kubernetes的容器編排和管理能力,整合DevOps工具鏈、微服務和移動應用框架,來幫助企業實現敏捷化的應用交付和自動化的運營管理,同時提供IoT、支付、數據、智能洞察、企業應用市場等業務組件,致力幫助企業聚焦於業務,加速數字化轉型。

你們也能夠經過如下社區途徑瞭解豬齒魚的最新動態、產品特性,以及參與社區貢獻:

歡迎加入Choerodon豬齒魚社區,共同爲企業數字化服務打造一個開放的生態平臺。

相關文章
相關標籤/搜索