Eolink :通过构建 API 全生命周期管理体系,实现降本增效
2022 年 9 月 16-17 日,“QECon 全球軟件質量&效能大會·上海站” 成功召開,吸引全球 800 余位 開發者參與。會上,Eolink CEO 劉昊臻為與會嘉賓帶來《通過構建 API 全生命周期管理體系,實現降本增效 》的主題分享,從 API 系統建設的背景、目標、實踐經驗、案例等方面聊聊 Eolink 在過去 5 年的一些行業經驗。如何通過搭建一個 API 全生命周期管理平臺,實現增效、降本、增收的 API 戰略目標。
?
Eolink 自 2017 年創辦,在過去 5 年為超過 10 萬家企業提供 API 全生命周期管理服務,也是目前國內最大的 API 管理平臺。和國內外的競品相比,Eolink 是國內第一家提供?API 全生命周期管理解決方案的廠商,產品已經應用在如 奇安信、深信服、泰康集團等上百家成熟企業中。并且 Eolink 作為國內最早提出 API 全生命周期管理概念,以及零代碼 API 自動化測試的產品,始終堅持自研以及投入大量資源在創新上,讓整個 API 產品體系更加全面。
背景:API 讓各行業進入全新的時代
API 相關行業最近幾年很火,因為它的確解決了企業在數字化方面的一些問題。康威定律說,軟件系統的架構是和企業的組織架構互相影響的。
現在隨著企業內部分工越來越細,分布式的技術架構、微服務也成為大家的共識。而 API 成為鏈接和管理分布式系統的關鍵要素,來自 Linux 基金會的數據顯示 70%~90% 的代碼是由開源和第三方 API 來組成的,并且通過 API 產生的經濟價值也變得非常巨大。
放眼全球會發現,類似的事情在海外互聯網企業里其實都已經應用得很好了,也都紛紛推出 API 戰略。
比如我們最近和一些車企交流,大家都提到現在希望用軟件定義汽車,讓系統更加智能,服務可以更快地響應消費者需求,因此就希望建立各種 API 管理平臺,集中管理和組合各種現有的服務,讓業務可以進行的更快一些。
類似的像開放政務、開放銀行的概念也很火,本質上都是數據和服務的復用,而 API 在其中扮演著重要角色。
?
目標:API 全生命周期管理平臺的建設目標
如果我們仔細研究,會發現 API 戰略一般包含三個方面目標:增效、降本、增收。通過規范化的 API 管理提升研發效率、通過開放 API 提升企業內外部合作效率、通過跨部門協作實現更低的管理和運作成本,并且將數字資產包裝成新的產品來增收。
?為了實現這些目標,我們往往需要搭建一個 API 全生命周期管理平臺。
API 全生命周期管理平臺一般會包含什么內容呢?
從業務角度來看,API 全生命周期管理的目標就是推動業務可復用的增長。我們不僅要讓開發變得更加簡單,讓我們 API 的管理變得更加規范,讓測試的工作能夠逐步自動化,讓運維能夠更加智能,并且讓 API 能夠成為一個平臺上的服務,讓后續業務團隊可以快速自行取用。
從技術角度來看,如果我們把 API 涉及到的團隊都列出來,或者按照研發上線流程列出來,就能夠看到 API 管理其實是一個流程長,且內容復雜的系統性問題。
那么 API 全生命周期管理的挑戰,其實就是如何通過產品將研發、測試、運維部門打通,并且高效地完成價值創造。
Eolink 其實也是一直在圍繞這個目標努力,這里列出來的產品也是我們在過去幾年不斷完善的產品線,目前也都已經形成了標準化的產品了。
?從一些行業的統計數據來看,會發現有 60% 以上的團隊,將半數時間花在了圍繞 API 相關的工作上面,現在隨著企業對降本增效的進一步追求,企業開始考慮如何在 API 管理方面做得更好。
這里列舉了一些常見的圍繞研發和測試團隊的 API 痛點,比如如何保障 API 的規范管理、高效進行跨團隊協作、如何了解 API 的變更歷史來進行更好的版本管理、如何更低成本地實現自動化測試,以及如何快速發布和使用 API。
Eolink 在過去每半年都會對用戶做一次訪談,了解用戶的一些痛點及需求的變化。
比如大部分的團隊都會認為 API 管理是一個非常繁瑣的事情,API 缺乏版本管理也導致微服務的治理很麻煩,畢竟不知道接口什么時候改了什么地方影響了什么關聯服務。大家都想做自動化測試,但是傳統方式寫代碼又不好維護等。
通過這些用戶反饋,我們發現對于大多數企業來說,解決 API ?管理和自動化測試問題,初期投入產出比最高,隨著企業系統不斷豐富,可以再逐步投入更多資源建設起 API 的全生命周期管理體系。
經驗:API全生命周期管理在研發測試團隊的最佳實踐
因此我們先介紹一下解決 API 管理問題的基本思路,也就是 API 的研發管理以及自動化測試,將研發、測試團隊甚至運維團隊有機結合起來。
在業內,Eolink 首創提出了 DTDD 概念,即:文檔與測試驅動開發,并被大量的企業和研發團隊所借鑒和學習。這一概念是從我們和大量企業的實踐中總結出來的——文檔和測試驅動是關鍵的第一步,這能夠高效的聯動研發和測試團隊。
?比如奇安信集團會首先通過 Eolink 平臺進行 API 的設計,然后從文檔生成規范的框架代碼,在 API 文檔的基礎上編寫自動化測試用例,在產品新版本發布時經過我們進行全面自動化測試,確保產品的核心業務流程沒有問題才可以繼續驗收。
和傳統的方案相比,將API文檔和測試關聯起來的好處是,可以快速從文檔生成代碼和測試用例,并且 API 發生變化的時候也可以將內容同步到測試用例中,并且自動觸發測試,自動化程度會更高。
其次是將 API 管理系統和網關、監控服務結合,可以更好地保障API質量和安全。
?比如在 API 開發完畢,并且經過測試環境測試之后,接下來可以快速推送到網關上面,將 API 文檔和網關上實際運行的 API 進行綁定,一方面可以起到資產管理的作用,另一方面可以了解到 API 的實際運行情況。結合 API 監控,可以在多地對 API 進行監測,及時發現 API 故障并且告警,減少業務損失。
那么,API管理平臺中需要包含的一些核心能力有哪些?
首先,一個好的文檔是成功的開始。
?我們做了一個圖形化的 API設 ?計界面,支持HTTP、Websocket、TCP、UDP 以及 Dubbo 等協議,讓我們可以通過模板以及數據結構來快速創建 API 文檔。
文檔里面會記錄詳細的參數、說明、示例等信息,并且自動生成 Mock 。如果之前用過 Swagger 和 Postman 的也可以直接導入數據,或者綁定代碼倉庫,讓我們從注解中掃描生成文檔。
為了讓生成文檔更方便一點,我們還做了 IDE 插件,可以直接鼠標右鍵生成 API 文檔,目前支持 Java,未來也會考慮支持更多語言。
有了詳細的 API 文檔,接下來我們就可以像代碼一樣對 API 進行版本管理,比如每次 API 修改了哪里,字段的增刪改查都可以標注出來。并且配合自動通知,比如通過郵件、飛書、企微、釘釘或者其他方式通知相關人員,讓 API 的變更通知更加及時。
?而且為了解決 API 在團隊間共享的問題,我們還加入了分享鏈接,可以設置密碼和分享范圍,直接把文檔鏈接發出去就可以讓其他成員查看或者測試。有些情況下我們還希望對文檔進行歸檔或者發給外部人員,這時候直接導出為離線文件,比如 PDF、Word、Excel 或者 HTML 都會更加安全。
通過以上的一些功能,我們就可以基本解決 API 信息在團隊之間的共享問題。
在整個 API 的迭代過程中,測試是一個非常高頻且剛需的需求,當我們把 a 篇文檔給管理好之后,我們希望能夠讓程序自動幫我們生成接口的測試頁面。
因為在 postman 或者是其他的測試工具里面去構造 json 等數據是比較麻煩,只能夠直接寫一個完整的 json 字符串,所以我們做了一個 json 數據的圖形化編輯器,讓新手也可以在界面上直接編寫 json 和 XML 的請求數據。
相信大家在測試過程中也經常需要對數據加解密或者生成隨機數據,為了解決這個需求,我們還做了一個叫做數據構造器的功能,讓開發和測試的同學可以在界面上直接對數據進行處理,比如做 MD5、SHA 加解密、截取字符串或計算長度等。還可以隨機生成各種類型的數據,比如說像身份證,手機號,郵編等等。
為了讓測試好的接口和數據能夠直接用在代碼里面,我們還做了代碼的生成,可以直接從測試用例來生成各種語言的代碼,直接復制粘貼就可以用在項目里面。
用例管理
幫我們做完測試,往往還希望把這些測試的數據給保存成測試用例,方便我們下一次測試的時候能夠快速調用,因此,我們在產品里面也集成了測試用例的管理,除了保存測試用例之外,還可以在測試用例里面設置斷言規則,讓系統自動判斷返回結果。
下次當我們在進行回歸測試的時候,就可以直接一鍵批量測試完所有的用例,并且看到接口在各種條件下是否產生異常,可以極大的提升測試的效率。
Mock
那么如何基于API文檔做前后端對接呢?
這里就少不了要用到 Mock API。
Eolink 可以自動根據API文檔來生成 Mock API,比如API文檔里面標注了有幾種返回結果,系統會自動針對每種返回結果都生成一個對應的 Mock API。
如果覺得系統自動生成的Mock比較簡單,我們還可以手動創建更強的Mock,比如根據不同的請求參數觸發不同的結果,通過編寫Javascript來處理請求和返回數據,還支持MockJS等工具來快速生成數據,基本可以模擬各類API的情況。
API文檔結合Mock,讓Mock API的使用更加簡單,配合API版本管理和變更通知,也讓前后端的工作流程自然結合到了一起。
自動化測試
解決了前后端協作,接下來就是讓測試工作也能自動化起來,在這里我們也做了一些新嘗試。
比如有了 API 文檔,我們會根據文檔中對 API 的定義來排列組合,自動生成各種情況的測試用例,比如邊界值、異常類型、參數缺失等情況。
而且可以在界面上直接編排測試流程,比如注冊、登錄、下訂單、查物流、退出登錄等一系列流程,里面涉及參數傳遞、數據處理、數據庫查詢、結果校驗等工作,都可以在界面上完成。
測試報告
當我們設計好測試流程,下一步就是考慮怎么樣能夠讓他自動的執行?在了解了許多用戶的使用場景之后,我們在產品里面加入了定時以及觸發式兩種方式來執行自動化測試,比如說我希望每天凌晨的兩點鐘,對關鍵業務或者是前一天提交的代碼進行完整的測試,或者是每一次代碼提交的時候都能夠通過 jenkins 或者是 gitlab 之類的產品來調用我們的接口,觸發相應模塊的自動化測試。
測試完成之后,我們還需要一個地方來統一管理所有的測試報告,報告里面需要展示測試的成功率,耗時,錯誤的用例列表以及錯誤的原因等,一個好的測試報告,可以幫助我們快速排查錯誤,減少非常多的不必要溝通。
而且和 mock 一樣,測試用例也是有可能發生改變的,那怎么樣能夠把這些 API 變更自動同步到測試用例里面呢?我們做了幾種方案之后,最終決定做一個功能,可以一鍵將最新的 API 文檔同步到測試用例里面,比如說文檔添加或者刪除了某些字段,那么用例里面也相應的增加或減少這些字段。
這樣就可以進一步降低 API 自動化測試的學習和維護門檻,讓一個實習生也能快速掌握 API 自動化測試。
新的嘗試
當然這還不夠,我們嘗試將流程圖也加入到自動化測試中,讓我們可以真正地拖拉拽生成測試流程,并且支持循環、分支等判斷條件。更進一步的,我們在目前嘗試結合AI的功能,讓系統可以自動生成測試流程和測試數據,真正減少 90% 的自動化測試工作。
案例:應用案例與成果介紹
現在 Eolink 提供線上 SaaS 和私有化部署兩種產品。和國內外的競品相比,Eolink 是國內第一家提供 API 全生命周期管理解決方案的公司,Eolink 的產品深度也更深,比如業內的 API 管理工具往往只支持 HTTP、Websocket 等基礎的協議,而 Eolink 支持 HTTP、Websocket、Webservice、TCP、UDP、gRPC、HSF、Dubbo 等多種協議,在 Mock、測試用例等方面也是全協議都覆蓋了。Eolink 在國內首創的零代碼自動化測試也幫助眾多用戶從繁瑣的測試工作中擺脫出來。
接下來我拿某個金融行業的客戶作為例子,看一下圍繞 API 的團隊協作以及自動化測試能夠如何提升研發效能以及產品質量。
?我們在 2020 年收到某銀行的科技部邀請,希望我們能夠幫助建設開放銀行業務,其中很重要的一部分就是 AAPI的研發測試一體化平臺,因為 API 是開放銀行的核心,所以他們希望能夠借此機會構建銀行的接口管理規范體系,加速 API 開發與測試工作,為后續的開放銀行業務打好基礎。
而且熟悉銀行的朋友應該都知道,銀行內部往往有數量眾多的供應商提供系統服務,而且許多系統的存在時間非常長,可能已經運行了十幾年。因此不同的供應商、系統的 API 怎么做統一管理就是一個非常大的問題。
在了解情況之后,我們提出了文檔和測試驅動的理念,建議通過一個統一的平臺來規范的管理銀行內部所有的 API 信息,并且圍繞 API 信息進行協作,聯動前端、后端和測試人員,構建更加敏捷的團隊。并且這個 API 平臺還可以通過 OpenAPI 與其他系統對接,強化 DevOps 能力。
首先是我們通過平臺來實現 API 的變更和訂閱的管理。
?值得特別關注的是,這里我們還對接了銀行內部的版本發布平臺,每次版本的迭代,或者是每個接口的變更,都可以設置版本號,當發布的時候就可以直接通知到接口的使用方,或者叫訂閱方。
在產品內部,我們還維護了一套 API 的訂閱關系,項目之間如果需要互相使用接口,則需要通過平臺提前訂閱,審核通過之后才能看到或者測試、對接相應的 API,這樣也提高了接口調用的規范性和安全性。
其次是我們取代了低效的 Excel 表格來管理 API 信息,之前銀行內部有接近 200 套系統,上萬個接口,這些接口存儲在大大小小的不同的 Excel 表格里面,發布的時候需要通過 FTP 將表格上傳到 esb 系統的特定目錄才能完成發布,整個過程非常的麻煩,而且之前的接口變更是通過郵件和線下口頭溝通的方式,導致效率低下。
現在通過統一的 API 平臺來存儲 API 信息,并且將 API 快速發布到 esb 就可以完成接口的版本更新,讓整個過程更加簡單,更加自動化。
總體而言,一個規范的 API 管理產品,能夠為團隊帶來巨大的效能改善。
首先是統一 API 管理,納入管理的 API 超 1W,覆蓋率 90%+
其次 API 相關項目發版時間減少 80%,從幾天到幾小時,API 自動化測試時間也減少 80%,30 分鐘自動跑完上千用例
而且 API 自動化測試維護成本降低 50%,零代碼自動化更容易推行。
而且讓我們感到驕傲的是,我們和這個銀行客戶共創的這些實踐經驗,也幫助這個銀行客戶獲得了當年的金融科技創新獎。
?
開源計劃與 To do List
借著這個機會,我們也很高興和大家聊聊產品的開源計劃,讓更多開發者和企業都能使用到我們的產品,并且促進 API 生態的發展。
目前我們正在把 API 管理和測試的核心模塊開源,我們把這個項目命名為 Eoapi,也就是 Easy & Open API,它能提供高效的 API 管理和測試功能,并且可以通過自定義插件來擴展功能。
和現在市面上的 API 管理或者測試工具相比,Eoapi 的插件系統可以讓社區在產品上實現各種各樣的附加功能,如果你想將管理好的 API 信息快速導出為一種你們自定義的格式,或者接入一些 API 安全測試工具,都可以通過插件來快速實現。
總結
以上是生活随笔為你收集整理的Eolink :通过构建 API 全生命周期管理体系,实现降本增效的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python基础学习之python操作P
- 下一篇: 板绘新手sai入门基础教程,非常详细全面