《2017年餓了么API框架的實踐.pdf》由會員分享,可在線閱讀,更多相關《2017年餓了么API框架的實踐.pdf(23頁珍藏版)》請在三個皮匠報告上搜索。
1、餓了么API框架實踐 API Everything 什么是APIEverything APIEverything將SOA服務接口適配給外部各端進行訪問 Web/APPFirewallAPIEverythingSOA1SOAnHTTPSOA call 問題怎么解決?WebAPI層寫業務邏輯,甚至直接訪問數據庫 WebAPI的風格各異,res4ul的,JSON-RPC的,API 設計規范?API文檔過時,不能反映代碼情況 前后端開發不同步,前端等后端 產品技術方案原則 穩定性,性能,高可用,容錯性 DevOps 中心 更“懶”代碼即文檔 用戶體驗 功能需求 生命周期 API開發 文檔 Mock A
2、PI管理 訪問權限 限流,灰度 API網關服務 鑒權認證 協議轉換 API運維 監控管理 部署擴容 APIEverything 產品規劃 APIPortal API 文檔 APIMock 訪問權限 限流&灰度 API 拼接剪裁 StargateCluster 鑒權認證 協議轉換 監控告警 部署擴容 API 拼接剪裁 MockServer MockCase管理 自動化生成MockCase MockAPI MockSOA APIRobot API 回歸測試 API 測試數據自動生成 API 測試腳本 API 代碼覆蓋率 系統交互?,?,?,?I?C?I?C?,?A?IA?API?query str
3、ing?MockSOAHTTPSOA?HTTP?API?API?API?提高效率 AutomaFon 代碼注釋和標注寫完,提交代碼,就可以看到API文檔 API文檔生成自動化 通過標注將SOA接口自動映射成HTTP接口,并且自動生成代碼 API代碼自動生成 在SOA服務部署的時候,自動部署對應的WebAPI API部署自動化 根據APIModel自動生成Mock數據,支持函數 APIMock自動生成 每個應用接入,自動進行全鏈路監控和告警 API 自動監控告警 StargateCluster技術架構?MySQL?E?A?E?N?E?LO?Cbase.stargate_ops_webapibas
4、e.stargate_ops_webbase.stargate_ops?L?L?A?A?A?L?stargate?base.s?MaxQ?StargateCluster 基于Docker部署?foo.soaNginx(1 n)location /foo proxy_pass http:/nvg_stargate_foo_pool;upstream nvg_stargate_foo_pool server 10.2.18.194:8080;server 10.2.18.190:8080;api-xxx.ele.meDocker 1Docker nbar.soaF5foo-api.jarDocke
5、r 1Docker nbar-api.jar location /bar proxy_pass http:/nvg_stargate_bar_pool;upstream nvg_stargate_bar_pool server 10.2.16.194:8080;server 10.2.16.190:8080;部署信息 APIPortal 自動化文檔 APIPortal API討論 Swagger文檔 MockServer 流程 MockServer 自動解析 自動生成MockCase 前后端開發分離?Stop?API?Start No.開發開發人員 人員 使用模塊 使用模塊 工作內容 工作內容
6、 預計預計工時 工時 實際實際工時 工時 節省節省工時 工時 節省節省占比 占比 1 前端 Stargatecluster,APIportal,MockServer 使用APIPortal 閱讀API接口,使用MockServer完成前端頁面所有開發 5天 3天 2 天 40%2 后端 Stargatecluster,APIportal,MockServer 使用APIPortal,通過Swagger文檔查看后端API調用情況。通過MockserverMock外部SOA依賴。5天 3天 2天 40%3 后端 StargateCluster 自動化生成webapi,不用寫webcontrolle
7、r.相應的測試都不需要 1天 0 4 前端后端 StargateCluster 前后端一起聯調 2天 0.5小時 約2天 100%能夠節省54%開發時間應用實踐 配送范圍迭代 問題解決了?統一API層,將API層服務化,各業務進行接入 API服務定義規范,統一錯誤處理,缺省使用JSON-RPC方式 API層提供API文檔 API層提供Mock服務,前后端開發分離 可以自動化回歸測試嗎?Stargate ClusterSOA?SOA1SOA2Database?Redis?Mock SOAMock DBMock RedisMock HTTPHTTPSHTTP/HTTPSSOA RPC?還有更多 全
8、鏈路環節比較多,出現問題,如何快速定位問題?故障發生時能夠自動把現場保留下來嗎?能夠執行基本分析,把分析的結果保存下來嗎?能夠自愈嗎?StargateCluster采用AsyncWeb,提高性能?采用GO?當有一些業務需求,現有API相互組合就可以完成這個需求,還是需要開發?需要智能分析所有API業務屬性嗎?需要面向業務開發需要提供搜索和推薦?團隊思考 面向開發,測試,運維角色,還有更懶的事情嗎?API對使用方完全透明?API團隊內,還能有什么更懶的事情要做?接入的溝通,能形成一個工具嗎?各種手工配置,能自動化嗎?團隊需要擴充,如何破?喜歡從根上解決問題,喜歡思考,喜歡“偷懶”廣納建議,請聯系 xiangdong.liangele.me