OSCAR 分享之螞蟻開源治理的方法和實踐

支付寶技術團隊發表於2022-09-29

OSCAR 是開源產業大會,學術界、產業界共同探討開源的使用、共享和治理等相關話題,2022 年的開源產業大會於 2022 年 9 月 16 日在北京成功舉辦,大會上螞蟻技術專家才楚做了關於螞蟻開源治理的方法和實踐主題分享,此文進行了一些總結。


1.開源治理的必要性

用不用開源技術不再是個問題,如何用好開源技術才是,這是這些年來大家普遍的共識。應用雲原生化之後,釋出到線上的製品中超過 90% 的程式碼是非開發人員編寫的程式碼,而是框架、元件、庫等。研發的主要工作從「 程式碼編寫」進化到了「 介面編排」,在大幅度提升了效率的同時,開源技術的風險隨著大規模自動化的持續交付流水線進入了線上生產環境。即使事後定位到某個元件的問題,影響分析、穩定性保障、版本升級都是非常大的難題。

近年 fastjson、log4j 這些高危遠端執行漏洞,GPL 協議引起的訴訟等問題都說明這類問題發生的必然性,並且此類問題造成的損失十分巨大,此前認為開源技術和免費技術是一回事的觀點必須要拋棄了,尤其是對風險敏感的金融相關技術研發組織。

2.資料驅動的治理

開源治理的難點主要在於沒有資料:

  • 在治理決策時,不清楚用了哪些開源元件、不清楚開源元件的開源風險現狀是什麼、不清楚開源元件被誰在用
  • 在治理執行時,開源治理規則沒有地方統一管理、治理規則無法動態分發、治理進展無法資料化跟蹤

所以,我們需要使用製造業供應鏈管理的理念:

  • 對使用了哪些原材料需要有清單
  • 這些原材料如果有質量問題則需要記錄
  • 知道這些原材料哪些產品在用(便於交付前質檢和交付後溯源、審計)

因此,開源治理時必須要達到的四目標:

  • 知道研發組織使用了哪些開源元件
  • 知道開源元件的風險分析結果
  • 知道開源元件被哪些應用在使用
  • 能夠高效、精準地形成持續交付管控切面,必要時阻斷

3.開源治理的工具

資料驅動的治理的關鍵在於需要工具能在研發活動中,將風險透過研發工具透出給開發者,並輔助開發者處理。

4.螞蟻的治理實踐

從治理決策出發,持續治理執行和治理評估,研發人員和治理規則定義者之間保持持續迭代的關係,透過輔助工具,如 IDEA 自定義快速檢查功能和 SmartUnit 保障程式碼單元測試質量。

  • 治理決策,基於現狀定義治理目標、流程管控規則
  • 治理執行,線上存量問題、線下增量問題聯動治理
  • 研發體驗,儘量在研發最早期提示風險和輔助使用者升級

在治理決策時,透過 10 個指標明確風險現狀,定義治理頭部元件/應用,定義出治理規則,這些清單資料來自於構建活動中透過 SCA 工具收集的資料,統一製品庫對接開源元件風險分析工具提供的介面,拿到風險分析結果並以製品後設資料的形式進行持久化,前端查詢展示為資料大盤。

在治理執行時,治理規則統一管理,透過資料大盤可以瞭解到當前執行了哪些規則、規則分類、規則分級以及應用響應的情況等,這些資料能夠和 Rule enforce 客戶端互動,客戶端在執行 enforce 的時候透過 API 從管理端拉取最新規則,在 IDEA 本地執行校驗。

在開發者本地,透過 IDEA 自定義功能選單的方式就可以快速執行檢查,當然命令列手動執行命令檢查同樣是支援的,在流水線中同樣是支援的。這種動態規則的拉取是螞蟻對 apache maven enforce plugin 進行了深度改造定製實現的,透過這個客戶端可以透出升級操作指引給開發者,輔助開發者操作。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69904796/viewspace-2916824/,如需轉載,請註明出處,否則將追究法律責任。

相關文章