[首發]國內某大型銀行的持續整合與交付實踐
隨著架構的不斷演進以及微服務技術在我行的深入應用,應用部署釋出的複雜性大大增加,簡單的程式碼配置管理模式、人工的版本記錄及手工部署等釋出操作和管理的模式,效率低、操作風險較大,因此急需從整體上提升我行軟體持續交付的能力,降低應用部署釋出的操作風險。
透過引入構建自動化及視覺化的軟體交付流水線,整合從開發、構建、測試、部署、釋出、運維等多個環節,加強各職能團隊協助和溝通,全面實現專案構建持續自動化管理。
DevOps是一組能夠幫助軟體開發團隊極大的提高其軟體交付的速度和質量的模式和最佳實踐組成;DevOps的整體架構如圖:
從使用層次主體關聯:開發、測試和運維團隊,配套對應的許可權控制體系。
從交付流程方面:涵蓋從程式碼到應用交付的全流程管理。
DevOps 平臺既包括了專案管理、產品管理、交付中心、組織機構等宏觀維度的各項,同時在也納入了編譯、部署、程式碼管理及pass平臺部分,同時,平臺機制應該支援靈活的擴充套件(如工具整合擴充套件、部署能力擴充套件等),面對複雜的場景或者特殊需求的時候,平臺也可以提供更加靈活的能力。
功能將實現流水線管理、質量管理、告警管理、製品管理、專案資訊管理、系統管理、個人工作臺等模組,達到交付自動化,視覺化的目標。
持續整合模組功能主要有程式碼庫管理、構建定義管理以及構建例項管理等,DevOps平臺中構建任務可以分為以下型別:
n 需求類任務:jira、ones等
n 編譯類任務:Maven、Ant、前端構建等
n 打包類任務:Maven 、ant、gradle、npm、docker等
n 測試類任務:junit、Postman、Jmeter等
n 靜態程式碼掃描:Sonarqube
n 安全掃描:Xray
n 部署類任務:ansible、chef、shell
n 容器類:k8s、mesos
n 日誌類:elk
n 其他工具類任務:shell、製品提交到nexus倉庫、Jfrog製品庫等。
每個構建定義上可選擇若干個需要構建的任務,透過原子步驟編排,組裝成一個完整的構建流程,程式碼提交時觸發構建(支援gitlab、github、svn等常用程式碼庫版本管理工具),結合諸如jenkins、docker等工具,提升編譯速度和增強資源的靈活排程能力,將持續整合的完整鏈路打通,示例如下:
軟體團隊通常需要將釋出後續推送到不同部署環境進行上述討論的不同類別的測試。
例如,常見的情況是將軟體部署到測試環境進行人為的質量檢查測試,然後部署到效能測試環境,進行自動化負載測試。 如果構建透過該測試階段,則應用程式可能稍後部署到用於 UAT 或 beta 測試的獨立環境中。
理想情況下,將任意釋出候選製品以及與之通訊的其他系統可靠地部署到任意環境中的這個過程應儘可能實現自動化。
如果企業希望按照計劃的速度持續交付,那可能需要每天或每週多次執行,因此它的工作速度和可靠性至關重要。
用自動化方式在環境之間移動軟體是作為DevOps的團隊的主要特性之一,因此這也是DevOps的關鍵重點。
示例如下:
5. 技術架構
6. 技術、工具、角色、能力梳理
Devops實施時,涉及到的技術、工具、角色、能力梳理如下:
一期完成了 Jfrog 製品庫採購、上線、高可用建設並圍繞 Jfrog 製品庫進行了工具鏈的打通;實現了持續整合與持續部署功能、製品提升功能、軟體包不同倉庫流轉功能、軟體包依賴關係管理、軟體包後設資料視覺化管理及試點專案的接入;
主要得到的收益如下:
統一製品庫管理:軟體包統一由製品庫管理,改變原來散落在各處,無法跟蹤追溯的問題。
簡化操作步驟:使用前,開發人員部署需要手工操作 7-10 步;使用後,可以一鍵部署到 DEV 、 SIT 、 UAT 等環境。
縮短等待時間:測試人員可按需部署,無需等待。改變了以往測試人員需等待開發人員部署的情況。
1 月7日,20:00 線上課堂:《Netflix,甲骨文的 DevOps 之路》
課堂收益:
1. 介紹甲骨文在進行 DevOps 變革時遇到的困難
2. 解決辦法
3. 落地 DevOps 用到的工具鏈
4. 甲骨文的自助式 CI/CD 平臺
5.Netflix 的持續交付平臺 Spinnaker
6. 完成 DevOps 轉型之後得到的收益
報名連結:
抽獎活動:
課堂結束前五分鐘,進行抽獎活動
第一名:小米藍芽耳機
第二名:JFrog傑蛙新版T恤
第三名:JFrog傑蛙新版T恤
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69954434/viewspace-2672148/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 持續整合持續部署持續交付_持續整合與持續部署之間的真正區別
- 持續交付探索與實踐(一):交付流水線的設計
- 持續整合、持續交付、持續部署簡介
- 持續整合、持續部署、持續交付、持續釋出
- Jenkins與Docker的持續整合實踐JenkinsDocker
- 對持續整合、 持續交付、持續部署和持續釋出的介紹
- 從持續整合到持續交付——DockerCloud概覽DockerCloud
- 淺談持續整合(CI)、持續交付(CD)、持續部署(CD)
- 談談持續整合,持續交付,持續部署之間的區別
- SAP開源的持續整合-持續交付的解決方案
- Flutter web 持續整合實踐FlutterWeb
- 持續整合(三):最佳實踐
- 質量之匙:持續整合工具與實踐
- 京東到家的持續整合實踐之路
- 持續交付探索與實踐(三):指標度量體系搭建指標
- 持續交付體系在高德的實踐歷程
- CI/CD 持續整合部署實踐
- Jenkins & Docker 持續整合實踐JenkinsDocker
- 大象如何跳舞-支付寶持續交付實踐
- 持續交付探索與實踐(二):自動化工具鏈建設
- 個人對持續整合的理解和實踐
- Artifactory & GitLab CI持續整合實踐Gitlab
- Jenkins持續整合 入門實踐Jenkins
- 一個Web 持續整合工作實踐Web
- 持續整合實踐成熟度模型模型
- 微服務、容器與持續交付微服務
- 某小型公司持續整合工具jenkins實踐(JAVA WEB、Android、IOS、html)JenkinsJavaWebAndroidiOSHTML
- 軟體測試持續整合的方法實踐
- 持續交付與傳統敏捷的矛盾敏捷
- Practice - iOS 專案持續整合實踐(一)iOS
- Practice – iOS 專案持續整合實踐(一)iOS
- 關於《在Windows與.NET平臺上的持續交付實踐》的問答錄Windows
- 雲原生下的DevOps與持續交付dev
- 持續交付中的分支管理與版本控制
- 花椒前端基於 Docker 的 SSR 持續開發整合環境實踐前端Docker
- 擁抱變化——持續整合(CI)實踐心得
- 青春不老 - B站的微服務與持續交付實踐|IDCF DevOps案例研究微服務dev
- 持續整合、持續交付和持續部署有什麼區別?0基礎學習linux技能Linux