HiSDP 高效的C 軟體開發平台

2021-09-13 15:03:12 字數 2067 閱讀 1274

目前阿里集團每天有近1000pb的資料是通過logagent採集的,為了讓logagent做到資源占用節省和高效採集,背後是基於hisdp去構建的。

緣由當決定採用c++程式語言去開發乙個軟體時,緊接著所面臨的問題是軟體庫、平台與框架的選擇。當然,選擇的範圍估計很大程度來自開源軟體。進一步地,無外乎兩種思路:

根據所開發軟體的需要選擇各種合適的開源軟體,然後將這些開源軟體組合到一起去完成軟體開發工作。這種方式所帶來的問題在於,將各個開源軟體拼湊到一起需要耗費一定的精力。此外,可能因為踩各開源軟體中的坑而導致最終軟體產品的穩定期拉得更長,後期的維護成本也更高。

採用市面上成熟的大型開源軟體專案,對之進行裁剪去滿足專案開發的需要。這一方式雖說在裁剪上需要消耗一定的精力(這是一次性的工作內容),但由於大型專案的成熟確保了其所選擇的各個開源子專案的質量得到了充分的驗證而避免我們再踩坑,且其中所使用各開源軟體的**能很好地起到示範作用去幫助工程師更快地上手寫出更具質量的**。hisdp就是基於這一思路而產生的!

hisdp源於google的chromium開源軟體,即大家平時經常使用的chrome瀏覽器的開源版。作者因為曾經有大約3年半的時間是基於chromium做**瀏覽器和uc瀏覽器電腦版的軟體開發工作,所以對chromium背後所蘊藏的google之工程理念和對工程質量的要求有著深刻的認識與體感,

包含但不限於:

重度依賴單元測試。chromium對單元測試**的組織與實踐形成了一套行之有效、很容易上手的工程規範,很好地示範了如何通過gtest/gmock去編寫單元測試**,並讓執行單元測試的動作與開發環境做到了無縫整合。

特別重視程式的效能度量。google一直力爭讓chrome瀏覽器在執行速度上與競品保持優勢,為此非常重視效能資料的視覺化,tracing功能就是在這樣的背景下產生的(用chrome瀏覽器導航到chrome://tracing這個**就可以對瀏覽器開啟的網頁進行效能tracing)。

極度關注程式的編譯效率。由於chromium的**量很是龐大,所以這個專案從開始之初就在一直持續地優化整個工程的編譯速度。除了gn+ninja這一編譯工具組合,chromium的**組織與程式格式也為了加速編譯而做了規範並細緻地執行到位。

將程式的可查錯性當作良好的程式設計習慣。整個chromium的**隨處可見dcheck(與assert相似),以及在關鍵點存在check(會產生dump檔案而記錄下發生問題的現場)。

嚴格執行google c++ coding style中所定義的編碼規範。為了幫助新手更好地掌握這一規範,甚至還開發出了cpplint這樣的**規範掃瞄工具(用python實現的)。

對軟體設計質量的持續極致追求。chrome瀏覽器大約6週出乙個大版本,每個版本都能看到對之前沒有做到位的完善痕跡,有的改進尺度之大足以讓人為之動容。這種工程實踐所帶來的結果是chromium的整體**質量很高且久經考驗。

基於我對chromium的這些認識,很自然地想到將那些能力與氣質帶到其他專案中,希望能「站在巨人的肩膀上」以「殺雞用牛刀」的思路去開發其他c++軟體。

hisdp是high-productivity software development platform的簡寫。取這個名的本意是希望他成為c++程式語言的高效軟體開發平台。然而,將chromium裁剪成hisdp並使之適合用於集團伺服器環境下的軟體開發還是經歷了一些波折。最大的問題在於,chromium的開發環境基本上是基於ubuntu 16.04構建的,存在核心版本比集團環境的更高而導致無法直接正常執行的問題,當然這個問題經過一番折騰後得到了解決。

$ git clone  depot_tools

$ vim ~/.barshrc // 追加下面內容

export path="/path/to/depot_tools/:$path"

$ source ~/.barshrc

$ mkdir logagent && cd logagent

簡單說來,使用depot_tools和hisdp的開發體驗與chromium是完全一樣的。

最後,logagent在剛過去的2018財年很好地用hisdp演繹了「用牛刀殺雞」的工程理念。

高效軟體開發團隊

高效的軟體開發團隊是建立在合理的開發流程及團隊成員密切的合作的基礎之上的,成員共同的迎接挑戰 有效的計畫 協調和管理各自的工作以至完成明確的目標,高效的開發團隊具有如下特徵 1 具有明確且有挑戰性的共同目標 乙個具有明確的而且有挑戰性目標的團隊比目標不明確或不具有很大的挑戰性目標的團隊效率高得多,通...

高效軟體開發團隊的特徵

高效的軟體開發團隊是建立在合理的開發流程及團隊成員密切的合作的基礎之上的,成員共同的迎接挑戰 有效的計畫 協調和管理各自的工作以至完成明確的目標,高效的開發團隊具有如下特徵 1 具有明確且有挑戰性的共同目標 乙個具有明確的而且有挑戰性目標的團隊比目標不明確或不具有很大的挑戰性目標的團隊效率高得多,通...

營造高效的軟體開發團隊

喜歡足球的朋友應該非常清楚一件事情,那就是在一場足球賽中假如球員之間缺少默契的配合或教練的指導思想執行不到位等情況下,那場比賽多半是以失敗告終的,因為這支球隊並不是優秀的球隊。開發軟體專案就象一場進行中的足球賽,是靠專案管理 系統分析設計 程式編制 測試 市場營銷等不同角色人員共同協作完成的,不同角...