- 金融級IT架構與運維:云原生、分布式與安全
- 魏新宇等
- 4254字
- 2022-01-14 14:23:01
3.2 S公司容器云建設案例
S公司計劃由研發部門牽頭構建容器云平臺以承載敏態業務,最終實現打造數字銀行的目標。
3.2.1 S公司業務需求
S公司希望通過引入持續交付的思想、工具、流程、規范,提升數字銀行在代碼質量管理、版本管理、構建、測試、部署、驗證等交付環節的效率和質量,實現項目任務統一管理、應用自動化構建、自動化部署以及量化各個交付環節指標,提高開發效率,構建可靠的發布版本,改善產品質量,加速產品推向市場。
S公司的項目需求具體包括如下幾個方面。
1. 持續交付咨詢
持續交付咨詢通過現狀調研、方案制定等活動,提供持續交付所需的各項內容咨詢服務。
1)數字銀行軟件交付過程咨詢(包括交付組織架構和交付模型現狀調研、需求過程、軟件設計過程、軟件編碼與單元測試過程、代碼審查過程、軟件測試過程、軟件發布過程),并依據以往實施方法論和數字銀行現狀制訂軟件交付過程、流程轉換細節及流轉與檢驗標準。
2)持續集成系統功能咨詢(包括持續集成系統的功能、工具、集成方法、部署架構、持續集成SLA服務體系及標準、主要用戶視圖、過程基礎數據留存等)。
3)持續發布系統功能咨詢(包括持續發布系統的功能、工具、集成方法、部署架構、持續發布SLA服務體系及標準、主要用戶視圖、過程基礎數據留存等)。
4)容器化咨詢(包括容器選型、容器化落地的應用轉換方案、容器管理及后續運營方案等)。
5)統計分析咨詢(包括與IT領導和關鍵崗位負責人溝通確認軟件交付度量指標、如何在交付過程收集保存各指標、針對不同的軟件提供的統計視圖等)。
6)培訓咨詢(包括人員技能調研、人員技能與持續交付要求差距分析、針對性的培訓課程內容及培訓計劃)。
2. 項目交付全生命周期管理
持續發布平臺管理涵蓋軟件項目的全生命周期管理,要求該平臺具備與行內現有的項目跟蹤管理、需求管理、代碼倉庫、統一在線接口管理、代碼構建、測試用例、基于接口的自動化測試、測試缺陷管理、軟件發布、上線審批等支撐系統進行集成,并提供項目交付全生命周期的管理和跟蹤頁面,以便直觀查看和檢視項目進展和健康狀況。
3. 持續集成
通過Jenkins或其他自動化構建工具實現自定義腳本、流水線等交付過程的統一管理,具體包括如下幾個方面。
1)支持多種編譯語言:支持Java、Python、JS、Android、iOS等多種編譯語言的構建環境。
2)支持多代碼管理系統:支持行內現有的SVN和GitLab版本管理系統,支持代碼管理與項目生命周期管理解決方案對接,實現從需求到編碼的跟蹤。
3)支持代碼權限精細化管理:支持線上權限申請、審批、分配等;代碼根據分支策略制定不同權限管理規范模板。
4)支持多種構建方法:支持MVN、Gradle、Xcode、NPM、靜態File類型等多種構建方法。
5)構建集成:通過Jenkins等自動化構建工具進行代碼構建,并將構建結果集成到項目交付周期管理中,實現從需求、編碼到構建的全過程跟蹤;通過各種檢查規范確保從源碼到交付物的一致性,實現可持續性交付并降低整個項目的風險。
6)支持編譯參數:支持默認構建參數,允許自定義配置構建參數,滿足個性化構建需求。
7)構建工件倉庫:支持與行內Nexus構建工件倉庫的集成及與提供構建工件倉庫的遷移,實現代碼二進制包的統一管理,包括(但不限于)二進制包的保存、包依賴分析等。
8)交付物安全管理:提供Java代碼編碼規范檢查功能,支持靜態代碼掃描、技術債管理,提供代碼審查工具或插件,支持漏洞掃描。
9)支持自動化測試:提供接口測試自動化、UI測試自動化、性能測試自動化執行及測試報告統一展現功能,支持自動化測試案例庫的管理和維護。
10)構建日志展示:提供構建日志的實時同步界面并支持問題下鉆,可以及時了解編譯過程和定位問題。
11)支持Android和iOS的持續集成。
4. 持續發布
通過Jenkins或其他自動工具實現發布流水線的配置并保存流轉指標數據,提供統一頁面對發布過程進行可視化的展示,具體體現在如下幾個方面。
1)支持應用配置管理:通過應用配置管理對代碼和環境進行隔離,實現一次發布多個環境,提供基于ConfigMap的容器方案配置中心或獨立的分布式應用配置中心方案。
2)依賴分析:支持基于二進制文件的依賴分析(如Jar或項目調用依賴),并提供交付二進制文件的版本管理(如版本列表和版本追溯)。
3)支持多種發布方式:支持基于二級制文件(WAR或Jar包)的發布或基于Docker容器的發布,支持藍綠發布、灰度發布。
4)發布過程定制:支持自動化發布,支持配置人工審批環節的自動化發布,支持人工跳過某些步驟直接發布應對緊急發布流程。
5)發布日志及記錄展示:提供構建日志的實時同步界面并支持問題下鉆,可以及時了解編譯過程和定位問題。
6)提供內網的類似fir、蒲公英的App發布系統,支持賬號和權限管理、新建包、新建發布渠道,支持通過API或頁面表單上傳包,支持與Jekins集成或通過定制開發滿足類似需求場景。
5. 容器化
容器是提供不可變環境的基礎,基于容器可以解決持續發布環境自動化的問題,進而提升持續發布的效率。容器化具體體現在如下幾個方面。
1)鏡像庫:支持高可靠、高可用鏡像中心部署,如開發測試和生產環境的鏡像同步,支持鏡像管理,包括鏡像信息、鏡像搜索、鏡像歷史版本查詢、鏡像下載歷史列表等,支持鏡像倉庫可用鏡像的安全漏洞掃描。
2)支持多環境:基于容器技術實現開發環境、SIT測試環境、UAT測試環境、準生產環境的容器化基礎平臺,支持多個隔離的鏡像中心之間的鏡像同步。
3)集群管理:可以動態擴容、縮容;支持集群級別的彈性伸縮,支持集群操作和管控對接用戶權限管理,所有操作可回溯。
4)網絡管理:支持對接不同的網絡方案,支持Docker原生host、bridge模式和擴展模式,支持集群內網絡資源管理,如創建網絡子網、網絡IP管理,支持查看網絡資源使用情況;應用發布時支持實例IP不變,也支持動態分配IP。
5)部署管理:支持應用基于容器的分批、分次、灰度等發布動作和自定義發布動作,支持應用回滾,支持部署過程跟蹤、結果上報、應用狀態守護等功能,支持對應用的配置文件進行管理。
6)需要乙方協助甲方完成完整項目的CI/CD及容器化改造。
7)應用商店(應用模板):支持常用公共組件的應用商店及不同版本的選擇,包括Nginx、Oracle、Tomcat、WebLogic、MySQL、Jenkins、MongoDB、ELK、Redis、RocketMQ等,提供應用商店上下架、權限控制、使用情況統計等功能。
6. 統計分析
量化和可視化是持續改進的基礎,具體體現在如下幾個方面。
1)項目生命周期統計:支持項目進度、需求質量、開發質量、測試質量、發布質量、項目生產運行質量統計分析。
2)持續集成統計:支持基于部門、項目、人員的多維度的開發編碼規范,Bug質量,構建次數,構建成功率,構建次數等統計分析。
3)持續發布統計:支持基于部門、項目、人員的多維度的發布成功率,發布持續時長,發布次數統計等統計分析。
4)容器統計:支持容器個數、容器類型、容器運行情況、系統資源使用情況等統計分析。
5)研發效率統計:支持研發人員代碼提交總量、有效代碼占比、項目生命周期耗時、項目投入人員數等統計分析。
3.2.2 項目實施內容與效果
S公司項目經過公開招標,最終選擇紅帽OpenShift作為容器云平臺,并成功上線。需要指出的是,S公司在構建容器云之前就已經基于虛擬化環境構建了持續交付平臺,其自身的IT水平也很高。因此在項目實施過程中,很大一部分工作是完善現有的持續交付平臺,并將工具鏈容器化。
本項目整體實施進度如圖3-3所示,可以看到實施周期大致為5個月。

圖3-3 項目整體實施進度
我們將項目實施內容分為如下四類,具體實施目標和項目實施后的效果如表3-4所示。
表3-4 項目實施目標及實施后的效果

接下來,我們針對這四類實施內容進行說明。
1. 工作流程設計
在工作流程設計階段,經過與各個負責人多輪的整體、單獨討論,確定流程及子流程場景,具體分為以下8個流程。
1)平臺及系統創建流程:該流程為項目級流程,描述項目及項目整體計劃的創建過程。
2)新增及變更流程:該流程描述了由業務發起的任務流程。
3)生產缺陷流程:該流程描述了系統上線后發現并處理生產缺陷的流程場景。
4)IT技術優化流程:該流程描述了由IT部門內部發起的任務流程。
5)報表、提數流程:該流程描述了數據報表相關需求的流程場景。
6)測試缺陷子流程:該流程描述了標準流程在SIT測試環節發現并處理測試缺陷的流程場景。
7)終止、暫停流程:該流程適用于各個流程各個節點出現終止、暫停的流程場景。
8)會議管理流程:該流程適用于各種會議的流程場景。
與8個流程相對應的是8個流程角色,角色定義如表3-5所示。在后續工作中,流程角色將與工具中的用戶組和用戶進行權限對應。

由于篇幅有限,我們選取部分流程圖為例進行說明。
平臺及系統創建流程如圖3-4所示,其中涉及如下幾個方面。
- 階段:規劃階段。
- 角色:項目負責人、配置管理員。
- 問題類型:項目整體計劃。

圖3-4 平臺及系統創建流程示意圖
報表、提數流程如圖3-5所示,具體涉及如下幾個方面。
- 階段:需求階段、設計階段、開發階段、UAT測試階段、投產階段。
- 角色:需求申請人、開發專員。
- 問題類型:報表、提數需求。

圖3-5 報表、提數流程示意圖
終止、暫停流程如圖3-6所示,具體涉及如下幾個方面。
- 階段:所有階段。
- 角色:項目負責人。
- 問題類型:所有問題類型。

圖3-6 終止、暫停流程示意圖
會議管理流程如圖3-7所示,具體涉及如下幾個方面。
- 階段:提交階段、準備階段、召開階段、整理階段、關閉階段。
- 角色:所有角色。
- 問題類型:會議管理。

圖3-7 會議管理流程示意圖
2. PaaS平臺及容器化
S公司使用紅帽OpenShift容器云平臺,其PaaS平臺構建工作內容如表3-6所示。
表3-6 PaaS平臺構建工作內容說明

3. 統計指標分析
項目內共設計了3個統計維度、7個角色展示目錄,共實現42個儀表板,合計220張展示圖表。這里我們僅選取幾個統計指標為例進行展示。
統計指標展示實例1是重點項目情況表,它是從項目視角分析需求數量,如圖3-8所示。

圖3-8 重點項目情況表
統計指標展示實例2展示了項目負責人儀表板,從儀表板中我們可以看到項目組中每個人的工作時長,如圖3-9所示。

圖3-9 項目負責人儀表板
統計指標展示實例3是任務晴雨表,從表中我們可以看到某個項目的某個產品發布過程中每個環節的耗時,如圖3-10所示。

圖3-10 任務晴雨表
4. 持續交付
持續交付包含兩部分工作:持續交付咨詢和CI/CD的技術落地。具體工作內容如表3-7所示。
表3-7 持續交付工作內容



持續交付實施后,通過持續交付咨詢生成持續交付全流程,并將CI/CD工具鏈在OpenShift上落地,如圖3-11所示。

圖3-11 CI/CD工具鏈在OpenShift上落地
通過容器云項目,S公司實現了整套DevOps工具鏈的容器化,大幅提升了應用發布的速度,有力地支撐了B客戶的業務擴展。項目前后具體效果對比如表3-8所示。
表3-8 S公司容器云項目前后效果

至此,S公司的容器化實施案例就介紹完了。讀者可以根據上述內容,對自身的項目進行評估。