DevOps 落地實踐及案例分享

銀行業爲了應對業務的快速變化、互聯網層面不窮的業務形態和交易壓力,IT“雙態(或雙模)化” 無可避免,開始探索部分業務參考互聯網的方式引入分佈式架構,但對於銀行業獨特的強監管、高安全、強一致性的行業要求前提下,如何在業務發展、合規、IT 革新之間找到平衡?

而 DevOps 被越來越多的金融企業所採用,來支撐軟件生產過程的數字化轉型,本文主要和大家分享在金融行業落地 DevOps 的一些坑,如何填坑以及一些心得體會!希望大家能夠在自己企業中,找到適合自己企業的 DevOps 實踐之路!

目錄:

一、關於 DevOps 實踐的一些問題

二、DevOps 在金融行業落地都有哪些姿勢

三、DevOps 在金融行業落地的套路

四、DevOps 將軟件生產線數字化

五、總結一些 DevOps 最佳實踐

六、DevOps 項目落地過程中一些心得體會

  1. 關於 DevOps 實踐的一些問題

我們從國際信息科學考試學會(EXIN)關於 DevOps 認證體系來分析,DevOps Pre-Master(DOPM)中包含了敏捷、精益、ITSM 和測試相關的內容,也就是說這四項其實是作爲了 DevOps 知識體系的基礎,其中敏捷、精益和測試是和軟件生產、開發工作 Dev 強相關,ITSM 則與 Ops 運維工作強相關。所以 DevOps 知識體系更像是對於以往 IT 知識的再次提煉和融合,不是一門新的技術。

DevOps 是什麼?又不是什麼?

DevOps 是自動化運維吧?不是做運維的爲什麼要學 DevOps?

講 DevOps 還是在講理論,會不會太虛了?

2.DevOps 在金融行業落地都有哪些姿勢

我們先看看我們對於 CICD 的定義:

總結來看,項目結果不同,或者接入 DevOps 應用系統也有可能處於不同的階段,這造成了,CI/CD 的過程隨項目實際情況會有些差異。

DevOps 項目在售前、招標或前期階段,我們通常看到是小圈裏面的內容:CI/CD、自動化部署及回滾、與現有云平臺的接口、流程的圖形化編排調度等,但這些只是 DevOps 的內核,真正去落地一個 DevOps 項目的時候,其實你會看到外面大圈的這些內容,換句話講,需要梳理組織整個軟件生產的全過程!

姿勢一:小範圍 CI+CD,再全公司推廣

先看看 Capital one 的案例,美國第一資本金融公司,美國排名前十的銀行。

痛點:

2014 年當時,Capital One 的軟件開發實踐和很多傳統做法沒有什麼不同:大量外包,瀑布模型,季度發佈,手工流程,變更請求。在某次代碼檢查會上,大家發現一個測試失敗是由於某個 XML 文件裏的 tag 不配對造成的。按理說,這麼小的問題改了再提交就可以了。但是:開發工作是由另外一家公司負責,他們需要發起漫長的變更請求;代碼修改後的構建流程(編譯、測試、部署等)就需要至少 2 天時間。這個小小的問題讓 Capital One 的技術團隊開始反思他們的構建流程,並決定從這裏下手。他們從一個小的團隊開始實踐 DevOps,最終把時間從 2 天縮短到幾分鐘。於是,這個實踐逐漸在 Capital One 蔓延開來,所謂星星之火,可以燎原。

2015 年的成績:

  1. 代碼提交頻率:從之前的不固定到每天 100 多次的提交

  2. 代碼集成頻率:從每月 1 次到每 15 分鐘一次

  3. 部署流程:手工變成自動化

  4. 部署到 QA 和 Perf(性能)環境頻率:從每月 1 次到每天 4 次

  5. 部署到生產環境頻率:從每月或每個季度 1 次到每個迭代 1 次

  6. 單元測試覆蓋:從沒概念到 > 90%

2016 年的成績:

  1. 發佈到產品環境的頻率:從每個迭代一次到每天至少 1 次

  2. 自動發佈的應用軟件數量達 20 個

  3. 一個應用軟件每天最多可以發佈 34 次

總結 DevOps 在 Capital one 的落地姿勢:先小範圍做全套,再全公司大範圍推廣。

某壽險也是用的姿勢一:他們是與基於 Spring cloud 的微服務體系架構一起引入 DevOps 的,原來的想法只是對於這些新的微服務的應用適用 DevOps,經過半年的時間之後,感覺還不錯,就將 DevOps 逐步向傳統單體架構的應用中去推廣了。表中的系統是目前已經接入到 DevOps 中的系統。對接的代碼庫有 svn/gitlab/bitbucket,介質庫是 Nexus,CI 和 CD 的流程目前還是做手工觸發,CI 集成了 Sonar 和 maven test 單元測試,cd 已包含測試和生產環境。組件包含:springboot、shell 腳本和 tomcat 3 類,主要是全量的部署方式。

再總結一下:先小範圍適用 CI+CD,它是現在微服務架構適用的,取得經驗積累之後,再大範圍的推廣。

姿勢二:先 CI,後 CD

我們看看中國銀行的案例

在項目之初,中國銀行首先對軟件生產的全流程進行了重新梳理和規劃,其中包含流程、規範、度量體系和反饋機制。

在實踐階段分了三步走,研發層面的持續集成、運維層面的持續交付,最終打通研發和運維實現 DevOps 全流程。

從試點效果來看,單就自動化部署層面就比之前提高了 2-5 倍的效率。並且在軟件質量和規範落實層面有了長足的進步。

再來一個以姿勢二落地的,某國家政策性銀行。

它的科技局下屬研發中心和運行中心是分開的兩個大部門,兩個部門之間的紐帶就是介質,但之前代碼基線與生產環境的介質版本一直對不上,這對生產的 BUG 修復、災備部署都形成了很大困擾,所以它的研發中心引入 DevOps 是希望能形成統一的軟件出口,能夠將需求、代碼、配置、介質控制在同一個基線上。所以他們做法是先做 CI,並且並行配合 maven 的框架推廣及 CMMI4 的落地實施。但項目到了二期,它要引進建行建銀科技的新核心,一是新核心短時間內的多版本在多個測試環境的部署,二是配合改造的 69 個業務系統短時間內也會有很多版本要快速部署,進行集成測試,這就要求必須有自動化部署的工具纔行。所以 DevOps 二期的重點就定在了 CD,主要是配合核心及配套改造系統提測後的快速自動化部署。

所以總結一下,DevOps 落地的第二個姿勢:通常都是先由研發部門主導做 CI,之後再推廣 CD,最後將兩個流程串起來形成 CI 和 CD 的全流程。

姿勢三:先 CD,後 CI

這是一家地方商業銀行,也是因爲今年要上新核心,並且伴隨新核心,有 5 個系統要重新建設,110 套系統要配套改造,行領導提出的目標:在 9 月 8 日上線時,利用 DevOps 做一鍵式的統一部署!所以項目一期的重點就放在了 CD 上,短期目標是滿足 110 多套系統的短期大量版本的提測後的自動化部署,最終目標,是要將 1+5+110 這些系統能夠可視化的一鍵式部署。項目的二期重點,是在 CI,配合諸多研發管理的落地實施,全流程的應用和推廣以及自動化測試的接入。

3.DevOps 在金融行業落地的套路

套路我總結了五步:確定目標、選好姿勢、梳理全流程、制定規範、最後分步實施。我們細看一下這五步:

第一步:確定目標

示例一:

這是農行對於 DevOps 設定的目標:1 個平臺、能夠連接開發、測試、運維 3 個角色,打通需求、開發、測試、部署、運維 5 個環節。

示例二:

我們再看看招商銀行設定的目標:DevOps 是作爲打造精益研發體系的一個重要組成部分。

第二步:選好姿勢

第三步:梳理全流程

示例一:

這是對一家商業銀行全流程的梳理,以及 DevOps 需要集成的 IT 系統,如項目管理系統、JIRA 以及測試管理系統。

示例二:

這是招商銀行的全流程梳理,將 DevOps 平臺切成了兩個平臺協同工作平臺和持續交付流水線平臺。

示例三:

以上是農行的全流程梳理方式。

第四步:制定規範

在將整個軟件生產全流程梳理完之後,會很對 DevOps 及各原有 IT 系統的集成界面和分工非常清晰。接下來就要進行第四步規範的梳理和制定,規範包含哪些呢?

那規範制定的目的是什麼呢?

簡單來講,沒有規範的制約,沒有統一標準,大家各做各的,DevOps 項目不可能成功。

第五步:分步實施

接下來,就是第五步,要具體的落地實施了,但也要有前有後,分輕重緩急。我們建議調些試點項目來,如何來調呢,原則是啥?

DevOps 試點項目的選擇建議原則:

DevOps 試點項目執行原則:

DevOps 試點項目執行的苦惱:一個巴掌拍不響:

4.DevOps 將軟件生產線數字化

從橫向角度來看,DevOps 產生的數據可以分 3 個部分:

管理數據、開發數據和運營數據,其實這些數據是涵蓋了軟件生產的全過程,我們可以通過這些數據或直播,來反哺到我們的生產過程,優化我們的不足。

我們從另一個角度 DevOps 的質量視圖、從縱向角度來看,我們也可以從週期、效率、治理和技術的角度來去制定指標考覈。

  1. 總結一些 DevOps 最佳實踐

持續集成的原則

持續集成的最佳實踐

自動化部署的原則

自動化部署的最佳實踐

要做到自動化部署,要確保自動化部署的成功,最最重要的關鍵爲:保障一致性!將要部署的各個環境一致;在各個環境執行的部署腳本一致;要部署的安裝包也要一致!

6.DevOps 項目落地過程中

一些心得體會

關於 DevOps 項目的複雜度,我畫了一個矩陣圖,希望與大家形成共鳴:

圖的 X 軸是軟件生產的全流程,Y 軸是 DevOps 要集成的各類 IT 系統,Z 軸是要推廣的各個項目,從這個圖可以看出,要做好 DevOps 落地,複雜度還是相當高的。

DevOps 項目落地,我自己總結了一套扁擔理論:

但 DevOps 項目雖然落地困難,無論從管理者層面和一線人員層面也確確實實能給金融起來帶來價值:

對於管理者:

對於一線人員:

希望大家能夠通過本文,瞭解一些 DevOps 在金融行業落地的套路和最佳實踐,能夠找到適合自己組織的 DevOps 落地經驗。

精選提問:

問:開發規範、持續集成規範、持續部署規範、持續交付規範、介質管理規範、文檔命名規範、開發分支管理策略、測試管理規範、運維管理規範,這些規範有好的實踐嗎?

答:這些我們在項目中已經積累了好多規範,並且在基本所有客戶也都有自己先行的一些規範,只不過是不全面或者沒有落實。我們是希望和客戶一起 DevOp 涉及到的規範都梳理一遍,通過 DevOps 能過落實下去。當然這個過程也是持續規範、持續遞進的過程,不太可能一下爬到珠峯頂。

關於作者:八爺,普元架構師,擅長 DevOps、基礎架構層 IaaS/PaaS / 虛擬化、系統分析和架構分析;參與九江銀行持續集成項目、國家開發銀行 CDP 二期項目、中投移動辦公平臺項目、山東城商聯盟服務治理項目諮詢工作。

出處:https://www.sohu.com/a/330487367_671228

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/QaalRYLp4wynmRdn63g-_w