<th id="0poub"></th>
  1. <th id="0poub"><track id="0poub"><dl id="0poub"></dl></track></th><dd id="0poub"><track id="0poub"></track></dd>

    <dd id="0poub"></dd>
    <dd id="0poub"><pre id="0poub"></pre></dd><th id="0poub"></th>
    <th id="0poub"><track id="0poub"></track></th>
    <tbody id="0poub"><pre id="0poub"></pre></tbody>
    <em id="0poub"><acronym id="0poub"><kbd id="0poub"></kbd></acronym></em>
    logo

    地址:深圳南山區大沖國際中心21樓

    聯系我們 : contact@wise2c.com

    產品支持 : service@wise2c.com

    售前咨詢 : sales@wise2c.com

    電話: +86 (755) 33268246

    粵ICP備16049363號

    聽睿云智合CTO徐年剛暢談金融行業基于容器技術的DevOps

    深圳睿云智合科技有限公司 > 睿云新聞  > 聽睿云智合CTO徐年剛暢談金融行業基于容器技術的DevOps

    聽睿云智合CTO徐年剛暢談金融行業基于容器技術的DevOps

    深圳金融IT界容器技術專題研討會

    9月6日,由深圳金融信息服務協會主辦,我公司(深圳睿云智合科技有限公司)與Rancher Labs聯合協辦的,深圳金融IT界容器技術專題研討會隆重召開并勝利閉幕!會議匯聚了國內外知名的云計算技術大咖,以及招商銀行、平安科技、富德生命人壽、廣發證券等國內金融科技引領企業的容器技術實踐團隊的經驗分享,為150多人的在場嘉賓奉上了一場堪稱金融行業與最前沿容器技術的巔峰碰撞!除了深圳本地的金融行業技術人員,更有來自北京、上海、東北的多家金融機構信息技術團隊積極參與,大家紛紛表示會議干貨多多,收獲頗豐。以下就是小編為大家整理的嘉賓分享內容系列速遞,按照演講順序,今天為大家推出的是來自前Eucalyptus 架構師&中國區技術總監,現睿云智合CTO,國內云計算資深專家徐年剛(Nathan)的分享:《金融行業基于容器技術的DevOps》

    睿云智合CTO,國內云計算資深專家徐年剛(Nathan)的分享:《金融行業基于容器技術的DevOps》

    究竟DevOps是什么?DevOps是如何促進開發、測試、運維一體化?在企業有哪些實踐?以及DevOps和容器技術有什么關系?CI/CD有哪些常見的解決方案?相信Nathan接下來的分享都會給大家一些重要的啟發。

     

    DevOps 介紹和實踐

     

     

     

     

    首先,Nathan簡單的介紹了軟件產品交付變革。在之前的軟件交付中,軟件的設計規劃,占用的時間都比較長,導致交付到客戶手中的時間就較長。隨著互聯網的飛速發展,現在的交付理念是:小步快跑的方式交付產品,收集用戶反饋,持續對產品進行改進。之前我們更多是在講敏捷開發、而現在更多是DevOps開發運維協作一體化,在企業中已經得到了許多實踐應用。

     

    什么是DevOps?

     

     

    A DevOps是英文Development和Operations的組合

    B DevOps是一組過程、方法與系統的統稱:用于促進開發(應用程序/軟件?工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合,這才是DevOps的宗旨。

    DevOps

     

    DevOps企業實踐

     

     

    DevOps在企業中的實踐主要從四個方面來實施:

     

    • 持續部署(CI/CD)
    • 度量和反饋(持續運營)
    • 組織協作(建立全功能團隊)
    • 架構解耦(系統解耦,技術解耦)

     

     

    由于此次研討嘉賓實在大咖,而時間卻有限,所以Nathan這一次先給我們介紹CI/CD。怎么開始CI/CD實踐呢?主要是從以下5個方面。

    持續集成/部署流水線

    這個環節是怎么樣實現的呢?開發者提交代碼觸發代碼更新,然后自動CI構建,在等待構建成功之后,開始部署和執行自動化功能測試。自動化部署成功之后,觸發手動部署UAT或者生產環境上以及非功能性測試。說這么多,流水線內部是怎么樣的呢?如下圖:

     

    基本CI構建

    圖1:基本CI構建

     

    自動化功能、契約測試

    圖2:?自動化功能、契約測試

     

    部署手動測試

    圖3:部署手動測試

     

     

    那怎樣CI/CD流水線設計才算是好的呢?

    CI/CD流水線設計

    • 可視化:流水線的運行和停止,成功與失敗對所有人直觀可見;通過大顯示器投放給整個團隊

     

    • 反饋:流水線通過顯示器,短信,郵件等多種手段及時將失敗信息傳達到相關團隊成員

     

    • 可控制:從構建到生產發布總有一些環節是需要人手動驗證的,比如UAT,發布前的批準等;端到端的流水線需要某些環節可以暫停,等待手動繼續

     

    • 門禁:流水線中任何一個環節失敗應該讓流水線停下來,并通知團隊,比如自動化測試不通過,Schema升級失敗等

     

    • 關注度:當流水線發生失敗時團隊必須立刻有人關注并解決它,否則流水線的反饋對團隊的作用就會大打折扣。Time in “Red”是對流水線關注度的一個重要度量指標

    內建質量

    內建質量即在軟件產生的各個環節中建立固化的、自動化的質量保障體系。

    我們來看下一個比較經典的質量控制體系案例:

    內建質量

    • 靜態程序分析

    利用代碼分析工具,不執行代碼的情況下對其質量進行檢查,包括重復代碼,安全漏洞,及各種代碼壞味道;

     

    • 單元測試

    直接調用應用代碼,對程序的輸入與輸出,以及執行過程是否符合預期進行測試;單元測試不能僅強調覆蓋率,而要進行評審,保證有效性和場景覆蓋的完整性;

     

    • 自動化契約測試

    系統提供的每一個接口(Web服務,MQ或其他)都是與其消費者所達成的契約,都必須要有對應的自動化測試;

     

    • 自動化部署驗證

    在生產環境部署完成后,通過自動化方法對其部署是否成功,應用和服務的運行狀態進行驗證,以判斷該部署的新版本是否能夠向用戶開放;

     

    • 自動化界面測試

    通過模擬真實人在界面上與系統的交互,對系統的完整業務流程進行驗證;這種測試方法更貼近真實,但執行效率也較低;

     

    • 自動化非功能測試

    非功能測試包括性能測試,壓力測試,安全性測試等,也應當集成到端到端的部署流水線中;不過并非每一個故事或特性都需要非功能測試

     

    基礎設施即代碼

    基礎設施即代碼,怎么做呢?腳本化一切可以腳本化的、用版本控制庫管理所有腳本和代碼、禁止人工操作。

    版本控制庫管理

    • 構建

    利用Shell腳本文件(.sh)或自動構建工具來進行應用和服務的依賴管理,編譯,執行測試,和生成安裝包、部署包。

    不同的語言有不同的構建工具,如Java的Maven,Gradle;C/C++/Objective C的gcc, CMake, Ruby的Rake等。

     

    • 環境配置

    利用自動化環境管理工具來進行服務器上的軟件安裝,升級,配置,服務的啟動和停止,權限設置,文件操作等各種任務。

    目前成熟常用的IT自動化管理工具包括Puppet,Chef,Ansible等。

     

    • 數據庫變更

    利用數據庫自動化管理工具進行數據庫Schema的創建,更新,數據初始化,數據遷移等任務。

     

    自動化部署

    自動化部署主張:一次打包,隨處部署。環境配置信息必須從代碼中剝離,剝離的環境配置文件不放進應用軟件包,以文件或獨立jar包的形式單獨部署(WebSphere,Tomcat都支持共享classpath)。且可采用配置模板文件,打包時自動替換環境參數。

    自動化部署

    • 服務器應用部署
    1. 基本步驟是Server shutdown,Package upload and copy,Server startup。
    2. 可以采用Chef,Ansible等自動化工具進行自動部署。
    3. 采用其他商業化的部署工具。

     

    • 客戶端或移動應用
    1. 將應用包上傳到特定的位置供用戶下載;如果是企業應用發布平臺,建議由平臺提供部署服務;或者提供權限進行包文件上傳。
    2. 如果是部署到外部應用商店,如Google Play,由于頻率不高通常手動進行,也可以采用自動化Web測試的方法進行自動form提交部署。

     

    • 數據庫變更

    1.可以采用Flyway進行數據庫自動部署,前提是數據庫基線和所有變更都已腳本形式在版本控制庫中。

    2.數據庫變更前自動備份。

    3.采用NoSQL數據庫,如MongoDB等,免去Schema變更的需要。

     

    運維監控

    ? 系統監控:通過監控工具對包括服務器運行狀態,比如CPU,網絡流量,磁盤,內存等,進行實時監控,并及時告警

    ? 應用和服務監控:對運行中的應用和服務的健康度進行監控,包括Web是否可訪問,服務是否可用,訪問并發數,響應速度等;定期進行檢測以便在用戶報告問題之前及早發現風險

    ? 特性監控:對某些關鍵特性的(業務)正確性進行持續的驗證,監控其數據一致性等。這一類監控完成的,而是個持續的過程,每發布一個新特性,可能就需要增加一些監控手段

     

    DevOps 和容器技術

     

    既然容器技術現在正在以指數的增長趨勢發展,那先來看看大家都是怎么使用容器的吧!

    容器技術

    容器技術

    那容器將如何促進DevOps在企業中落地呢?

     

    用容器打包應用

     

    • 應用交付件標準化:使用鏡像,實現應用的標準化交付。
    • 將應用和依賴環境封裝在一起, 解決環境依賴問題。
    • Build, Ship, Run

    容器打包應用

    用容器來實現自動化部署

     

     

    利用容器,將應用和環境封裝,解決環境部署一致性問題,方便實現應用的自動化部署。

    • 取代過去傳統的用腳本進行配置環境、應用部署的方法。
    • 在部署平臺上實現一整個開發/測試環境的一鍵部署。
    • 在實現自動部署的同時,在平臺提供各種高級部署功能。
    • 滾動更新,藍綠發布。

    開發/測試環境的一鍵部署

    用容器來優化流水線任務

     

    • 將每個流水線任務所依賴的運行環境制作成的容器鏡像
    • 流水線上的任務非常適合在容器中執行,快速啟動,執行完后銷毀,適合大規模,并發的流水線任務
    • 靈活的流水線設計,只需要在執行任務的時候選擇不同的基礎鏡像,就可以使用不同的技術堆棧來完成流水響任務
    • 解決流水線任務的環境沖突,比如可以在同一個構建系統里面同時用JDK8 或者JDK5 來編譯應用

    用容器來優化流水線任務

    CI/CD解決方案

     

    利用開源Jenkins ?配套工具鏈

     

    以Jenkins 核心,結合其他工具鏈來實現持續集成和部署, 包括集成:

    • 代碼管理
    • 質量控制框架
    • 自動化部署工具或者平臺

     

    涌現的其他開源/商業方案

     

    除了Jenkins, 目前也涌現非常多的以持續集成的方案

    • Drone
    • Go-CD
    • TeamCity
    • Travel-CI
    • PAAS 平臺

     

    Jenkins 為核心研發

     

    Jenkins 的集成能力非常強,但功能太多,以Jenkins 為核心,簡化和工具鏈的集成,整合容器技術。

    我們將以睿云智合的實踐來說明。

     

    1. 開箱即用,簡化和正確地打造企業CI/CD 流水線。

     

    • 基于容器的CI/CD集成方案,開箱即用。
    • WiseBuild 簡化CI/CD各種技術棧的集成和實施,以pipeline為核心,整合各種持續部署/集成流水線相關的構建,測試,部署技術。
    • WiseBuild用于開發,測試和運維團隊的提供靈活的CI/CD流失線設計平臺,應到開發,測試和運維團隊正確的設計企業持續集成,持續部署流水線。
    • Rancher是成熟的容器管理平臺,為應用的自動化部署提供成熟的功能支持

     

    1. 集成平臺持續集成&持續部署

    持續集成&持續部署

    1. 以流水線為中心,持續集成

     

    • Pipeline as code!靈活的流水線設計,可以為每個開發應用定義多條流水線,分別用于持續集成和部署,流水線可以包含多個stage。每個stage 用來實現代碼編譯,單元測試,集成測試等。

     

    • 集成各種質量框架,包括代碼檢查,自動化測試框架支持自動生成容器鏡像支持從構建物自動生成面向開發人員的開發測試環境。

     

    • 為開發者的單元測試,集成測試提供服務集成,例如數據庫集成服務支持自動化部署各種驗收測試環境對接持續集成流水線和驗收測試環境的對接,實現驗收測試環境的自動更新和升級。

     

    4.自動部署?&持續部署

     

     

    • 支持從容器管理平臺導入各種運行環境,設計支持CaaS平臺和PaaS平臺目前支持Rancher 平臺,支持Rancher的cattle, swarm, kubernets環境。

     

    • 支持和部署相關的流水線,可以代碼部署分支拉取代碼,編譯,部署和做自動驗證測試。

     

    • 支持在Rancher 環境自動化部署應用,對接應用和部署流水線。
    No Comments

    Post a Comment

    Comment
    Name
    Email
    Website