1. 程式人生 > >Choerodon豬齒魚實踐之應用生命週期管理

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

開發十年,就只剩下這套架構體系了! >>>   

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

微服務架構中應用的特徵

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

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

(2)擴充套件性差,冗餘能力差

(3)模組劃分不清晰,無法細化對系統資源的需求

(4)維護成本隨著系統的日益臃腫而不斷增加

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

由此可見,微服務架構中的應用會被分解為更小、完全獨立的元件,這使得它們擁有更高的敏捷性、可伸縮性和可用性。換句話說,微服務架構的基本思想就是“圍繞業務領域元件來建立應用,讓應用可以獨立地開發、管理和加速。

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

由於Choerodon平臺採用的是微服務架構,因此係統內每個功能模組均被解耦為多個應用,其中每個應用都支援獨立地開發和獨立地部署。而Choerodon平臺中一個應用的生命週期一般從建立或匯入應用開始;接著在開發流水線中按照需求對應用進行開發,待提交程式碼跑完CI之後,會生成一個應用版本,而之後的部署與釋出操作均是圍繞應用版本來進行的;首先使用者可以將生成的應用版本部署至對應的環境中;此外,使用者在測試環境中測試無誤後,可以將此應用版本釋出至應用市場與全平臺或全組織共享。

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

應用的建立或匯入

在平臺中建立或匯入應用時,系統會預設在對應的 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豬齒魚社群,共同為企業數字化服務打造一個開