會員接口治理的探索與實踐
隨着愛奇藝會員破億,會員服務從小而快的單一業務系統升級爲了按領域劃分的微服務模式,滿足了業務的高速發展和服務的高流量調用,但是微服務的拆分,系統間的交互越來越多,在需求開發時,協作成本隨之增加,問題總結如下:
-
歷史包袱過重,接口管理工具不統一:WIKI、YAPI、Swagger
-
接口維護成本高,代碼和文檔需要同時更新
-
接口聯調和測試成本高,由於環境、鏈路導致的問題,排查難度大,業務複雜的需求可能會延期
基於以上問題,會員團隊需要一個平臺把接口管控起來,提升研發和測試的效率。
01 方案調研
比較了現有平臺(見下圖),都不能滿足會員的需求,但是 Atlas 是公司內部開發的平臺,已經有接口管理的基礎能力,可以共同開發,在平臺上擴展會員需要的功能:代碼即文檔、一鍵鏈路排障、接口規範統一管控、簽名和實體自動生成,不僅可以解決會員的痛點,還可以爲公司其他部門賦能,避免了重複造輪子。
Atlas 是一個基於接口管理的業務知識管理平臺,提供了統一的接口管控入口、接口規範(OpenAPI3.0)、接口調試和 mock、鏈路定位、關係圖譜等能力,有效地解決了接口文檔管理、分享和協作相關的問題。
02 項目目標
- 簡化開發
Atlas 讓前後端數據交互更簡單,讓團隊開發協作更容易。前端同學無需依賴後端開發進度,直接藉助 mock 功能即可實現聯調。
- 智能文檔
實現代碼即文檔、文檔即代碼,文檔自動同步代碼改動,讓文檔維護更智能。
-
高效協作
支持強大的聯調、鏈路問題定位、代碼自動生成等功能,前後端協作更高效。支持自動化的依賴分析,各關聯方通過訂閱方式,可以及時、準確地把握接口變更,通過圖譜可以全面掌握影響範圍。
03 解決方案
01 一鍵驗證
基於全鏈路監控系統打通了環境平臺內部的鏈路,實現了在開發和測試階段可以一鍵定位環境和調用鏈路問題的能力,極大減少了研發和測試的排查時間。一鍵驗證功能目前已覆蓋了異步任務、RocketMQ 和 API 接口的問題排查。通過下圖所示的排查鏈路,可快速定位異常服務和問題原因。
架構設計如下:
02 知識圖譜
系統依賴日趨複雜,研發需要了解自己所開發接口的依賴與被依賴關係,才能保證版本迭代時上下游不受影響。測試需要了解自己所測接口的上下游依賴關係,才能保證 case 覆蓋率。爲了讓這種依賴關係展示的全面、具體,我們使用全鏈路監控系統自動獲取了接口級、字段級的依賴關係,並藉助 G6 以圖譜的方式展示在 Atlas 上。
03 查詢模式
- 一鍵搜索
接口文檔、數據庫設計、錯誤碼及 UML 業務梳理,都可以在平臺首頁一鍵搜索獲取,解決了研發按照個人習慣,無固定地址、無固定格式的管理方式,提升了信息獲取的效率和準確性。
- 歷史追溯 + 版本對比
接口迭代頻繁或是人員更迭時,研發經常需要梳理接口變更的歷史。Atlas 提供了同一接口任意分支、任意版本之間的對比能力,讓變更和背景一目瞭然。
- 訂閱及消息推送
業務依賴的接口都可以自行訂閱,一旦接口有變更,可以實時獲取變更通知,便於及時評估是否對業務有影響。
04 強化調試
在使用 postMan 等工具調試時,經常會遇到簽名問題阻塞調試,Atlas 平臺對簽名功能進行了拓展,支持以下兩種方式:
-
簽名算法模板,一鍵下拉選擇
-
簽名算法自定義,粘貼代碼片段,動態解析計算
動態代碼執行實現流程如下:
04 系統價值
會員研發和測試已經完全使用該平臺,Q3 累計 75 個需求接入,提效顯著:
研發提效: 平均每個需求可減少 2 個小時的時間,環境鏈路問題和自測問題徹底解決,並降低了接口維護成本
測試提效: 排查鏈路問題提效 93%(15 分鐘降 1 分鐘),排查環境問題提效 50%(4 小時降到 2 小時)
05 後續規劃
持續收集日常開發和測試的痛點,開發更多的接口治理工具,助力公司的整體效能提升。下一階段的功能規劃如下:
-
提煉調試功能
將調試功能從接口管理中提升至首頁,讓用戶可以不依賴接口信息,直接使用調試功能,並對接一鍵驗證等功能。
-
代碼自動化
通過 Atlas 提供服務接口的標準 json 數據,以規範數據做爲橋樑連接前後端,實現前端代碼的自動生成
-
UML 圖編輯
支持用例圖、類圖、對象圖、狀態圖、活動圖、順序圖、協作圖、構件圖、部署圖在線創建和修改,提升協作的效率(目前一期基本畫圖功能已上線)
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/Ws_PBLTPdppWIvCfA7bO6A