您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 饿了么API框架实践
饿了么API框架实践APIEverything梁向东2017.11.24什么是API Everything• API Everything将SOA服务接口适配给外部各端进行访问Web/APPFirewallAPIEverythingSOA1SOAnHTTPSOAcall问题怎么解决?Web API层写业务逻辑,甚至直接访问数据库Web API的风格各异,res4ul的,JSON-RPC的,API设计规范?API文档过时,不能反映代码情况前后端开发不同步,前端等后端产品技术方案原则稳定性,性能,高可用,容错性DevOps中心更“懒”代码即文档用户体验功能需求生命周期API开发• 文档• MockAPI管理• 访问权限• 限流,灰度API网关服务• 鉴权认证• 协议转换API运维• 监控管理• 部署扩容API Everything产品规划API Portal• API文档• API Mock• 访问权限• 限流&灰度• API拼接剪裁Stargate Cluster• 鉴权认证• 协议转换• 监控告警• 部署扩容• API拼接剪裁Mock Server• Mock Case管理• 自动化生成Mock Case• Mock API• Mock SOAAPI Robot• API回归测试• API测试数据自动生成• API测试脚本• API代码覆盖率系统交互,,,ICIC,AIA0RFNׁᩢ62$๐ۓAPIᕆڦጱӾஞ׀ᵞӾᓕቘդᎱጱဳ᯽ᦎᦞԻᒵᒵ᭗ᬦquerystringᦢᳯMockSOAHTTPSOAHTTPAPIၥᦶ݊ࢧ୭ၥᦶ឴ݐAPIਧԎݎᭆ$3,ၥᦶ᧗ਧԎ0RFN&DVH឴ݐAPI᮱ᗟמ௳提高效率–AutomaFon • 代码注释和标注写完,提交代码,就可以看到API文档API文档生成自动化• 通过标注将SOA接口自动映射成HTTP接口,并且自动生成代码API代码自动生成• 在SOA服务部署的时候,自动部署对应的WebAPIAPI部署自动化• 根据API Model自动生成Mock数据,支持函数API Mock自动生成• 每个应用接入,自动进行全链路监控和告警API自动监控告警Stargate Cluster技术架构MySQLEAENELOCbase.stargate_ops_webapibase.stargate_ops_webbase.stargate_opsLLAAALstargateᚕEXLOG ᮱ᗟמ௳ᓕቘෆӻᵞᗭᜓᅩސۖ҅ᕣྊᒵ+773᧣አbase.sMaxQStargate Cluster基于Docker部署foo.soaNginx(1…n)location~^/foo{proxy_pass}upstreamnvg_stargate_foo_pool{server10.2.18.194:8080;server10.2.18.190:8080;}api-xxx.ele.meDocker1Dockern………bar.soaF5foo-api.jarDocker1Dockern………bar-api.jarlocation~^/bar{proxy_pass}upstreamnvg_stargate_bar_pool{server10.2.16.194:8080;server10.2.16.190:8080;}部署信息API Portal –自动化文档API Portal –API讨论Swagger文档Mock Server流程Mock Server –自动解析自动生成Mock Case前后端开发分离ݸᒒ᭗ᬦդᎱຽဳਧԎ$3,$3,ਧԎጱդᎱStopݸᒒਖ਼դᎱ᮱ᗟک$OSKDሾह$3,3RUWDOᛔۖኞ౮$3,ڹᒒࣁ$3,3RUWDOӤັ፡API$3,ڹᒒࣁ$3,3RUWDOӤֵአ0RFN$3,3RUWDO᧣አ0RFN6HUYHUᛔۖኞ౮0RFN๐ۓ0RFN&DVHVڹᒒֵአᗌጱ0RFNහഝᘏኞ౮ๅ॔ጱහഝ0RFN&DVHڹᒒ᭗ᬦ4XHU\6WULQJᦢᳯ$3,0RFNဌํ4XHU\6WULQJጱՖᆐᦢᳯ$OSKDሾहݸᒒ$3,ӱۓ᭦ᬋݎਠ౮҅᭗ᬦ$3,3RUWDOጱ6ZDJJHUԻັ፡ളݗᬬࢧڹᒒդᎱਠ౮ݸᒒդᎱਠ౮ڹݸᒒᬰᤈᘶ᧣ᘶ᧣ਠ౮StartNo.开发人员使用模块工作内容预计 工时实际 工时节省 工时节省 占比1前端Stargate cluster, API portal, Mock Server使用API Portal阅读API接口,使用Mock Server完成前端页面所有开发5天3天2天40%2后端Stargate cluster, API portal, Mock Server使用API Portal,通过Swagger文档查看后端API调用情况。通过Mock server Mock外部SOA依赖。5天3天2天40%3后端Stargate Cluster自动化生成webapi,不用写web controller.相应的测试都不需要1天04前端 后端Stargate Cluster前后端一起联调2天0.5小时约2天100%能够节省54%开发时间 应用实践–配送范围迭代问题解决了?统一API层,将API层服务化,各业务进行接入API服务定义规范,统一错误处理,缺省使用JSON-RPC方式API层提供API文档API层提供Mock服务,前后端开发分离可以自动化回归测试吗?StargateClusterSOAଫአࢧ୭ၥᦶፓຽSOA1SOA2DatabaseᒫӣොଫአRedisၞᰁਂؙӨၥᦶአֺುݐአಁ$3,5RERWၞᰁ୯ګӨࢧනၞᰁ୯ګഴګӨᯈᗝᓕቘMockSOAMockDBMockRedisMockHTTPHTTPSHTTP/HTTPSSOARPCአಁၞᰁࢧනӨḵᦤ还有更多…• 全链路环节比较多,出现问题,如何快速定位问题? • 故障发生时 – 能够自动把现场保留下来吗? – 能够执行基本分析,把分析的结果保存下来吗? – 能够自愈吗? • Stargate Cluster采用Async Web,提高性能?采用GO? • 当有一些业务需求, – 现有API相互组合就可以完成这个需求,还是需要开发? – 需要智能分析所有API业务属性吗? – 需要面向业务开发需要提供搜索和推荐? 团队思考• 面向开发,测试,运维角色,还有更懒的事情吗? – API对使用方完全透明? • API团队内,还能有什么更懒的事情要做? – 接入的沟通,能形成一个工具吗? – 各种手工配置,能自动化吗? • 团队需要扩充,如何破? – 喜欢从根上解决问题,喜欢思考,喜欢“偷懒” • 广纳建议,请联系xiangdong.liang@ele.me
本文标题:饿了么API框架实践
链接地址:https://www.777doc.com/doc-4922331 .html