DevOps之代碼模塊設計淺析

2021-01-15 EAWorld

轉載本文需註明出處:微信公眾號EAWorld,違者必究。

//

DevOps(開發:Development和運維:Operations的組合詞)是一組過程、方法與系統的統稱,用於促進開發(應用程式/軟體工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。

——by 百度百科

//

今天的主題就是有關DevOps的很重要的一部分,Development中代碼模塊的設計。

代碼模塊說複雜也不複雜說簡單也不簡單,複雜是說它上承接著任務模塊,下關聯著構建模塊,功能涉及到代碼的對比合併、質量分析、關聯的任務項等,缺了它就湊不成完整的DevOps流程。

簡單是說該模塊需要關注的點無非就是質量以及效率,一個項目在我看來代碼才是根本,代碼的產出質量效率越高,就越是節省項目的成本,有錢賺才是硬道理。

代碼模塊的受眾也無非兩類人:開發人員和上層領導。

開發人員眼中的代碼模塊是branch、tag、code、merge-request、quality等等諸多功能模塊的混合體。

不行了,暈了

但是到了領導的眼裡,報表即可解決問題:

一類報表說了張三今天代碼產出了多少的缺陷多少的漏洞。

垃圾代碼冠軍得主,就是你

另一類報表說了李四本周就敲了10行代碼效率極其低下。

是時候該炒李四魷魚了

所以創造一個友好的代碼管理功能交互頁面以及簡潔明了的代碼質量效率報表界面成了代碼模塊設計的關鍵之處。

接下來,我就拿自己正在參與的DevOps項目來做一下代碼模塊設計的講解。

先說說供給開發人員使用的代碼模塊:

一個正常運轉的項目,一定繞不開的就是源碼的管理,但代碼管理工具種類繁雜,諸如Github、Gitlab、SVN等

也許A公司用著Gitlab,B公司用著SVN,自己的產品若只支持Gitlab代碼庫,那豈不是白白損失了B公司這個潛在客戶?

銷售磨刀霍霍向產品

所以,正確的思路就該是:我全都要!

要想實現全都要也很簡單,無非就是配置文件加類加載器,通過判斷接口傳入的代碼庫類型來加載不同的第三方代碼庫服務集成類,這樣就可以輕鬆實現你若有需要,我便可集成。

此處不再細述第三方的代碼庫集成方式,像Gitlab、Bitbucket等代碼庫管理工具都有非常完善的rest api接口文檔,開發人員可以參照文檔挑選接口去定向開發需要集成的功能。

Github Rest API官方文檔:

https://docs.github.com/en/rest/reference

Gitlab Rest API官方文檔:

https://docs.gitlab.com/ee/api/api_resources.html

Bitbucket Rest API官方文檔:

https://developer.atlassian.com/server/bitbucket/reference/rest-api/

註:EnforcedServiceLoader為參照jdk的ServiceLoader,增強型的ServiceLoader 。

此方式同樣適用於其他需要集成的服務,如任務模塊(Jira、Zentao等)、文檔模塊(Confluence、Gitbook等)。

目前,普元DevOps平臺已支持的代碼庫有Gitlab、Github、SVN、Bitbucket,未來會有更多的適配代碼庫類型!

下圖是將第三方代碼庫關聯至DevOps項目中去需要配置的表單界面

集成好了代碼庫服務,再說一下實際集成的功能,代碼庫文件的瀏覽、commit歷史的瀏覽、分支標籤的維護對比以及分支合併、代碼質量分析等功能已足夠開發人員使用,不清楚後續是否會考慮做雲ide的集成,這又是另話了 。

產品經理:偽

需要注意的是,通過配置代碼庫的webhook可以實現代碼提交記錄自動關聯任務項。

也可以實現代碼提交自動觸發構建任務(需要在指定的構建定義處配置好代碼觸發構建策略)。

以上與webhook相關的功能就涉及到webhook回調接口的實現了,簡單來說,就是寫一個供給第三方代碼伺服器調用DevOps服務的接口,Gitlab、Github、Bitbucket官方網站有詳細的webhook回調請求的參數格式,通過判斷回調請求的參數來實際調用自己服務的哪些功能就是簡簡單單「小case」的問題了!

小意思?!

下圖是Gitlab的webhook回調功能部分實現:

再來說說為給管理人員帶來便利,DevOps的代碼模塊可以做到哪一步。

就是報表唄

廢話不多說,直接拍圖:

以上三張圖是基於代碼報表數據生成算法以及系統參數配置的計算時間間隔來不間斷計算生成的,看著每天不斷拔高的數據以及開發人員不斷比拼代碼效率,領導露出了欣慰的笑容…

上班第一件事,打開報表,看一眼自己的代碼效率無人能比(不存在的),又是幸福美滿的一天呢!

數據統計時間間隔系統參數配置頁面以及代碼報表數據統計算法部分代碼實現如下圖所示:

最後一張報表展示的是當前項目關聯的代碼庫的代碼質量信息(簡潔版),DevOps平臺只是取了代碼質量掃描報告的關鍵數據做了展示:

要想看複雜版還是要實際的到報告原始界面查看,對了,普元DevOps採用的代碼質量掃描工具是SonarQube(想了解工具請自行baidu),下圖展示了DevOps自身代碼的質量掃描記錄:

別在意今年為啥只有一次質量掃描,因為有專門的質量掃描的構建任務:

自己代碼寫怎麼樣都心裡有點數,領導天天盯著呢!

最後,做一下總結:

這一定一定不是DevOps的最終樣式(鬼知道有沒有最終樣式),就代碼模塊而言,需要做的東西還有很多很多,需求是無限的。

普元DevOps會在不斷的更新過程中,不斷地被完善,終會有一天也會長成參天大樹。

我禿了,也變強了

- end -

(表情素材來源網絡,侵刪)

關於作者:欣宇,普元Java開發工程師,擅長Java、MySQL、Jenkins等;參與DevOps的5.2-5.5版本的研發工作,參與九江銀行的DevOps部署實施,參與碧桂園DevOps定製開發等。

相關焦點

  • DevOps教程:DevOps 架構
    【注】本文譯自:https://www.javatpoint.com/devops-architecture 部署包括需求分析,設計,開發以及軟體組件或框架的測試。 運營包括軟體的管理流程,服務和支持。當開發和運營結合在一起進行協作時,DevOps 架構就是解決部署和運營術語之間差距的解決方案。因此,交付可以更快。 DevOps 架構用於託管在雲平臺上的應用和大型分布式應用。
  • DevOps教程:什麼是DevOps
    【注】本文譯自: https://www.javatpoint.com/devopsDevOps 是兩個單詞的複合,一個是 Development,另一個是 Operations。它是一種共同提升開發和運維過程的文化。
  • ODCC 2020開放數據中心峰會亮點劇透之DevOps模式的基礎網絡監管控
    該演講主要講述如何利用devops的理念,打造一個可配置、codeless的運營平臺,實現上層業務應用由運營人員自行開發的目標。Devops作為一種軟體開發人員與運維人員的溝通合作的文化及管理手段,已經在系統需求管理、開發構建、部署分布等場景顯示出其便捷、可靠等優勢。騰訊網絡在基礎架構海量運營中積累了大量經驗,基於devops的理念設計了運營系統的軟體架構。
  • Maxim的MAXREFDES117心率模塊參考設計
    打開APP Maxim的MAXREFDES117心率模塊參考設計 佚名 發表於 2018-06-11 09:24:20 近年來可穿戴設備在多個市場呈現爆炸性增長
  • 一種模塊獨立的單片機開發板設計
    一種模塊獨立的單片機開發板設計牛仲金,趙傳文,杜衍喆 摘要:以 STC89C52 單片機為控制核心,設計一種模塊獨立的單片機開發板
  • 基於FPGA的串行A/D轉換模塊設計
    1、系統設計   本設計採用FPGA晶片XC3S250ETQG144來對TLC549進行採樣控制,並對採樣數據進行處理。   2、模塊設計與仿真   利用VerilogHDL語言設計的TLC549轉換電路控制器的關鍵在於如何將TLC549的工作時序抽象成狀態轉移圖,從而由狀態機來實現。   狀態機是由寄存器和組合邏輯構成的硬體時序電路,其狀態只能在同一時鐘跳變的情況下才能從一個狀態轉向另一個狀態。
  • 我們需要DevOps,破局傳統IT企業效率低下的問題
    開發團隊、測試團隊和運維團隊-devops因為銜接與溝通問題,有時會導致開發-測試-發布的周期太長了,特別是對於網際網路公司,時間就是生命。從而需要建立一支由開發,質量保證和運營組成的混合專業知識的團隊的需求,並引入了DevOps來彌合團隊之間的鴻溝,幫助他們快速而可靠地操作和開發應用程式。一、什麼是DevOps?
  • 低代碼jabdp秘籍——普通模塊
    之前的jabdp系列文章講了jabdp的安裝部署,今天講講jabdp的表單設計。目前,jabdp的表單一共有四種,普通模塊,業務字典,自定義表單和app表單。篇幅有限,不可能一次講完四個表單。鑑於此,我先講講最常用也用得最多的普通模塊吧!
  • DevOps 核心能力:技術篇——代碼可維護性
    DevOps 技術:代碼可維護性運行我們構建的系統需要大量代碼:Android 作業系統運行 1200 到 1500 萬行代碼,Google 的單一代碼庫包含超過 10 億行代碼,典型的智慧型手機應用包含 50,000 行代碼。
  • JavaScript 模塊介紹
    當web應用代碼規模越來越龐大的時候,我們會把代碼分離到多個文件中,稱為「模塊」。一個模塊通常是一個類或者多個函數組成的方法庫。長期以來 JavaScript 是沒有模塊句法的,這不是一個問題,因為剛開始腳本比較少而且簡單,不需要模塊。
  • 2020Gdevops北京站 中郵消費金融李遠鑫解讀敏捷運維背後的深度...
    Gdevops全球敏捷運維峰會是與政府、企業攜手打造的敏捷運維領域標杆盛會,匯聚dbaplus社群數百專家資源,全面覆蓋從DBA、運維工程師到CXO等所有技術圈層及網際網路、電信、金融、交通、物流等重點行業。
  • 《代碼整潔之道》:5大基本要點
    全文共3257字,預計學習時長10分鐘評論區常常有小夥伴推薦羅伯特·C·馬丁的《代碼整潔之道(Clean Code)》。今天我們就來了解一下這本書,它值不值得一看?關於此書《代碼整潔之道》出版於2008年,近年來,一直被列為「亞馬遜最暢銷的五本書」之一。本書作者被親切地稱為「Bob叔叔」,他也是《敏捷宣言》的原作者之一,資歷非常豐富。本書在Goodreads上平均評分為4.4(評分人數超13,000)。可以說,這是一本程式設計師的必讀書。
  • 一文提升你的Python能力——定義模塊、說明模塊和測試模塊
    好處當然有了,比如說像上面「慄子」中的代碼一樣,將需要使用的一些單元東東定義在模塊中,那麼在日後使用時不管哪個程序只要導入了這個模塊,這個程序就可以使用這個模塊中的所有東東了哦,這就是常說的復用,對於大工程開發的好處是大大滴,而且呢,使模塊,你還能避免每個程序都需要重新定義這些模塊中的東東的坑哦。
  • 如何建設移動 DevOps?
    本文分享阿里云云原生應用研發平臺EMAS在建設雲原生Mobile DevOps過程中的思考、遇到的挑戰以及解法,解密其設計架構和技術細節。文末福利:免費下載《玩轉ECS從入門到精通》電子書。對於構建這種場景,除了不同客戶的構建任務可能會互相影響,構建環境還涉及到用戶的代碼、證書等私密信息,必須要有完善的方案保證用戶構建環境的隔離。2)代碼、證書、秘鑰等私密數據安全有構建就必然涉及用戶代碼、證書、秘鑰,這些數據都是極其隱私的數據,公共雲存儲、傳輸、使用任何環節出問題都可能會導致用戶重大損失。
  • 技術中臺之DevOps自動化測試實踐
    6、下圖為筆者根據使用場景和需求,設計的RF接口自動化的基本框架:這裡將rf框架封裝為5層:工具類層、關鍵字層、基礎數據層、測試數據層和用例層。工具類層:若rf已存的關鍵字不滿足需求,可自行編寫py函數實現;關鍵字層:將復用率高的代碼塊進行提取封裝,成為新關鍵字。
  • 詳解優惠券模塊設計的要點
    並且進一步分析了如何進行優惠券模塊設計,希望對你有所啟發。一、優惠券的發展優惠券的歷史可以追溯到19世紀20年代末的法國,普及於20世紀初的美國,經歷了手寫版、紙質版到現在的電子版三個時代。這也是優惠券(或者「紅包」)與其他的促銷活動最大不同之處。假設一個羽絨服成本200元,定價250元時有100人接受此價格,定價300元時,有60人接受此價格。
  • 碳化矽功率模塊及電控的設計、測試與系統評估
    本文介紹了該項目的研發過程:包含系統性能評估(top-down flow),用於選擇晶片並聯數量;碳化矽模塊的本體設計,包括封裝形式、電磁、熱、結構、可製造性等;模塊性能測試,對標某知名IGBT功率模塊;根據模塊的標定結果迭代系統性能評估,包括最大輸出功率、高效區並輔以臺架實測結果,並展開其對續航裡程影響的分析。
  • 設計模式之策略模式(Java實現例子說明)
    設計模式之策略模式小王在和同事正在吹牛時,領導過來了,小王啊,你又在吹牛了?別吹了,幹點正活,下周要去春遊,你給出幾種方案。小王一聽去旅遊,屁顛屁顛地去幹活了。這個其實就是一個設計模式,叫做策略模式。策略模式(Strategy Pattern):定義一組算法,將每個算法封裝起來,並且使他們之間可以互換。策略模式是一個簡單的模式也叫做政策模式。
  • 邊哭邊寫代碼,在崩潰中堅持 「代碼小哥」入選世界大賽中國集訓隊
    學校供圖武漢晚報訊(記者施政 通訊員朱麗)「最後十分鐘發現上百條代碼有誤,倒計時滴答滴答的聲音特別刺耳,整個心態都快要崩了。」15日,回憶起比賽時的失誤,武昌職業學院2018級計算機網絡技術專業的艾宇陽仍然有些不甘心。在13日落幕的首屆全國職業技能大賽上,艾宇陽以第六名獲得網站設計與開發項目優勝獎,併入選世界技能大賽中國集訓隊。「如果不是那個失誤,我的名次可能會更好些。」
  • 乾貨 | 惡意代碼分析之Office宏代碼分析
    有時候,宏代碼會解密釋放出一個powershell代碼,再調用powershell腳本,通過powershell腳本去實現環境檢測、文件下載等功能。宏代碼基於的是VB的語法,如果沒有混淆的宏代碼閱讀起來倒是比較方便,但是現在的大多數宏樣本都會有混淆和一些反調試手法,所以在遇到各類宏代碼的時候也要根據情況去分析。