大咖風采 | 中國出口信用保險公司的 DevOps 落地之道

image
在本文中,峯會大咖黃金澤將從工具鏈逐步鋪開的角度,講述中國出口信用保險公司IT團隊在交付方面如何從「刀耕火種」發展到 DevOps 落地的快速轉型。api

點擊【這裏】瞭解峯會詳情
關於做者:服務器

黃金澤,香港浸會大學計算機專業碩士研究生,中國出口信用保險公司信息技術部 DevOps高級項目經理,2013年起負責公司業務系統 DevOps 流水線產品的鋪設和搭建、DevOps理念的推廣。帶領公司研發團隊將部署流程從手工到全自動化第一人。期間深度使用Atlassian家族產品,包括JIRA Software,Confluence,Bitbucket,Fisheye/Crucible,Bamboo等,咱們的DevOps 發展之旅與Atlassian產品的使用密不可分。運維

中國出口信用保險公司 DevOps 的發展歷程

中國出口信用保險公司是我國惟一政策性出口信用保險公司,中國信保經過爲對外貿易和對外投資合做提供保險等服務,促進對外經濟貿易發展。模塊化

現階段公司面臨由大到強的總體轉型,總部及分支機構迫切須要IT團隊提供科技賦能,以用戶爲中心,實現科技引領的目標。所以IT團隊面臨很大挑戰,傳統的IT模式向DevOps轉型也成爲必然趨勢。微服務

項目背景:在企業IT部門轉型 DevOps 任務之初,IT團隊生產力工具匱乏,僅有的SVN和QC工具已經沒法繼續與日益增加的需求相匹配,同時,開發、運維間隙愈來愈大,相關技術積累薄弱、新舊文化衝突突顯,轉型困難重重。工具

什麼是 CI/CD 交付通道?

Continuous Integration,持續集成包括:源代碼變動、自動檢測、拉取、構建、單元測試、自動化測試等。單元測試

Continuous Delivery,持續交付包括:源代碼變動、自動檢測、拉取、構建、單元測試、自動化測試、生產交付等測試

在衆多CI/CD交付鏈介紹中,從CI到CD的區別只是最後可否將代碼交付到生產環境。從理論上講,在CI/CD交付鏈所有工具和技術就位並運轉後,可否交付到生產彷佛並非很困難的問題。但在項目落地過程當中,咱們發現仍是「Too Young To Naive(很傻很天真)」!ui

那麼影響從CI到CD的究竟是什麼呢?我總結了如下4點:spa

  1.   當工具鏈支持提交代碼自動觸發編譯,意味着開發團隊每次提交的代碼都是「Build Success」 的版本,而不能再像過去那樣僅僅是「我今天工做幹完了幫我保存一下進度」;
  2.   自動化測試團隊須要更全面地對測試場景進行覆蓋,意味着對自動化測試的進一步依賴和自動化測試團隊重要性的大幅升級;
  3.   團隊敏捷程度更高則考驗着團隊文化的新舊碰撞,一個團隊可以從過去的大瀑布流程裏走出來接受DevOps文化中高頻構建,小步快跑的思想在現實落地的過程當中並不容易;
  4.   最後就是團隊的信心,變革者要帶領團隊大部分甚至所有成員接受敏捷文化以及在DevOps工具鏈上進行交付,這打破了常規交付手段,對交付工具間穩定配合工做的要求極具挑戰。

如何在中國信保落地 DevOps?

接下來就讓咱們看看咱們是如何一步步經過 Atlassian 的全系列工具落地 DevOps 工具鏈的。

過去,IT團隊開發與運維的交付基本靠手工搬運文件形式進行,這種交付方式不只效率低下,甚至常常出現人工失誤,更嚴重的狀況是,交付時很難預知交付後的各類情況,大版本的交付在所不免。

IT團隊在代碼管理方面也沒有有效的版本管理機制,僅有的SVN只是做爲備份和保存的依據。

初步變革發生在Git服務器搭建以後,團隊陸續接受了從SVN向Git的轉變,在Git的推廣中滲透了版本與分支的管理理念,今後爲後續 DevOps 轉型奠基基礎。其中SVN向Git遷移的同時咱們對源碼庫進行了進一步的拆分,以更好地適應分支的管理和後續微服務的推廣。咱們平滑遷移了所有提交歷史和用戶映射,使用了 SVN Mirror for Bitbucket Server工具。

後續,咱們將 Git 與 Jira Software 進行集成,實現了將代碼與開發任務的關聯。

咱們還同時考察和對比了 Bamboo vs. Jenkins,Bitbucket vs. GitHub, 但考慮到與 Jira 和 Confluence 的集成優點,咱們選擇了 Atlassian 的全套工具以及插件做爲公司下一代發展的平臺,後面的實踐也證實了選對工具和插件對人力資源的節約是多麼巨大!

下圖是咱們如今的 DevOps 所使用到的產品和平臺,接下來就讓咱們一塊兒來看看咱們是如何一步步實現 DevOps 全流程的過程。
image
根據業務場景靈活選擇插件:

咱們根據本身的業務需求選購了不少 Atlassian Marketplace 裏的插件來實現需求,而不是盲目的進行二次開發,Marketplace 裏的插件種類很是多,能夠實現咱們的絕大部分需求。這裏,我也把咱們用的比較好的插件推薦給你們:

  • Big Picture 插件:咱們用來實現項目進度甘特圖管理,關鍵項目節點數據經過繪製甘特圖進行展現;

image

  • Structure:從項目管理角度,咱們將項目劃分爲三級項目,依照項目-需求-開發任務進行管理,不一樣項目之間經過不一樣的任務類型以及它們之間的邏輯關係(Jira Links)進行關聯,並經過使用 Structure 插件進行分級,分級後,1個項目對應多個需求,1個需求對應多個開發任務,以上三級任務在JIRA中並行流轉,但在邏輯上存在這上下層關係。開發任務與缺陷之間經過Sub-Task形式硬關聯,造成了具備團隊使用特點的多級項目管理模型;

image

  • ScriptRunner :從工做流角度,咱們使用 Adaptavist ScriptRunner 工具在工做流流轉中進行權限分隔、任務自動分配、自動記錄時間節點和觸發各種事務功能;

image

  • eazyBI  統計報表:從數據統計角度,咱們經過使用 eazyBI Reports 工具將 Jira 數據從後臺導入,加工出各種項目和開發角度的統計數據,並按期在辦公公共區域展現

image

  • ScriptField:從字段角度,咱們經過使用 ScriptField 工具自動統計加班、遲到、項目人天等數據;

image

  • synapseRT 測試工具:從測試角度,咱們使用了 synapseRT 工具管理各種測試用例,將測試菜單項預錄入工具中,測試人員依據測試用例按步驟執行測試操做和查看預期結果;

image

  • Automation Lite:從自動化任務角度,咱們使用 Automation Lite 工具製做了很是多的自動化審批和事項跟蹤功能,如經過結合JIRA收郵件事務,在特定工做流節點,觸發當經辦人爲審批人的任務狀況下,接收到審批人送給 Jira 的郵件和審批關鍵字,就自動審批該流程,實現了與郵件工做機制的平滑對接。

image
image

使用 Bitbucket + Bamboo 打造 DevOps 核心

緊接着,咱們引入了 Atlassian 的 Bitbucket 產品,用來對 Git 分支進行管理。
在 Bitbucket 的功能擴展上,咱們也選擇了兩款很好用的插

  • Smarter Search:對全局代碼進行搜索,結合其餘代碼掃描類工具和api接口爲開發人員360°查找代碼提供了可能,可謂事半功倍;
  • Awesome Graphs:對代碼的分支管理更精細化,分支間的關係和代碼提交記錄盡收眼底。

image
image
同時,咱們還購買了 Fisheye,開發團隊在線實現Code Review. 代碼審覈和提交回溯有據。
image
image
在開發相關的基礎工具逐步完成後,咱們深刻運維方向,引入了持續集成工具 Bamboo。
Bamboo 是 Atlassian 家族成員中作 DevOps 的核心工具,在產品選型時曾對比過Jenkins 和 Bamboo,但考慮到與 Jira Software 和 Bitbucket 的集成優點,首選了Bamboo 做爲下一代發展的工具,Atlassian 產品之間的無縫連接和集成,以及企業級的應用和支持,也爲咱們項目的成功打下堅實基礎。
image
隨着Bamboo構建次數冪等級的增長,咱們搭建 Bamboo Agent,爲編譯提供更多計算資源。今後開始,團隊實現從持續集成到持續交付的轉型,代碼提交後可直接經過 DevOps 通道進入生產環境,多代理模式提供了多個版本和分支的代碼同時build和run一個項目的可能,編譯速度大幅度提升;同時咱們引入 Pipeline 工具,對交付流程進行可視化和模塊化管理。
image
咱們陸續將 Bamboo 與 Jira、Git、Bitbucket 等工具進一步整合,實現了項目、開發任務、缺陷、代碼、環境、測試到生產的無縫關聯,任何一步的操做均可尋蹤覓跡找到源頭,從該階段開始,開發團隊工做效率實現跨越式提高,代碼終於在 DevOps 通道中流動起來了,版本管理理念深刻人心。同時咱們沒有停下腳步,在團隊內部針對不一樣開發組狀況持續開展培訓,並將敏捷和 DevOps 理念貫穿其中,在後續團隊文化建設方面起到了重要做用。
image
接下來,咱們將 Bamboo 與 Nexus 進行集成,對編譯日誌進行了集中管理,獲取編譯涉及代碼的提交人,對其進行通知,並經過 Jira 維護的開發人員與其項目經理列表,對代碼項目經理進行通知。
image
將編譯過程與自動化測試進行集成,自動化測試報告直接在日誌進行打印和通知。image

2019年,咱們搭建了 Sonar 和 CAST 靜態代碼掃描工具,與工具鏈產品進一步集成,補全了 DevOps 交付通道基礎工具上的最後一環。
自此,咱們的 DevOps 通道工具鏈基本鋪設完成,在通道前開發人員交付代碼,在通道後交付war 包給運維,而 DevOps 通道上的工具對開發人員均透明,整個過程所有自動化完成。
不久的未來,咱們的 DevOps 通道將進一步輸出容器到 PaaS 平臺,實現更進一步的敏捷交付。

回顧與總結

2019年8月,Google 發佈了2019年全球 DevOps 發展狀況報告,其中將IT團隊的交付效能分爲低效、中效、高效和精英四個階段,劃分依據主要從部署頻率、代碼提交到交付的時間以及失敗率等因素進行判斷。
image
報告對 2018 至 2019年交付效率對比圖可見,全球交付精英團隊佔整體交付團隊的佔比儘管相比於2018年提升了一倍有餘,但仍僅佔所有團隊的20%。
image
回顧這幾年咱們 DevOps通道工具鏈的發展歷程,IT團隊能從過去手工部署快速轉型到 DevOps 精英團隊,離不開團隊領導的方向指引和大力支持,離不開團隊成員間的精益協做!

同時,在項目之初因爲咱們正確的選擇了全球排名第一的敏捷和團隊協做工具平臺:Jira+Confluence、Bitbucket+Bamboo 等,Atlassian 產品和插件之間的無縫組合讓咱們的 DevOps 工具鏈能夠被快速部署和落地實施,也爲咱們節約了寶貴的時間和人力資源!

相關文章
相關標籤/搜索