专栏首页IT大咖说饿了么API Everything解决了前后端开发之间的所有问题?

饿了么API Everything解决了前后端开发之间的所有问题?

什么是API Everything

简单来说就是后端服务通过API的形式对外暴露,作为前端访问后端的中间层。API Everything会将SOA服务接口适配给外部各端进行访问。

为什么需要API Everything

我们在之前的开发中后端没有分层,是直接在Web API层写业务逻辑,甚至直接访问数据库。但是Web API的风格存在差异,不利于团队间的沟通合作。

API文档也容易过时,不能及时反映代码的变更情况。另一个常见的问题就是前后端开发不同步,前端需要等待后端的API 接口开发完成。

产品技术方案原则

我们在构建API Everything框架时所确定的最基本原则是稳定性、性能、高可用以及容错性。另外为了让业务团队能够自行解决使用API Everything时遇到的问题,还将DevOps中心配置到框架中。

其他一些原则,包括自动化、代码即文档、用户体验以及功能需求。这其中的代码即文档可以将代码中的注释给提取出来,使开发者无需另外创建API 文档。用户体验是面向开发人员准备的,让开发过程能够更加方便。

生命周期

除了对产品原则的考量外,我们还需要考虑整个API的生命周期。API Everything作为SOA与前端之间的中间层,它的生命周期一般由API开发、API管理、API网关、API运维这样的流程构成。上图详细的罗列出了各个生命周期所需要考虑的细节,例如在API开发时就要着手考虑文档以及Mock的问题,API管理阶段考虑访问权限以及限流、灰度问题。

产品规划

基于对产品原则和生命周期的考虑,我们提出了完善的产品规划。API Portal负责从代码中抽出文档、API Mock、访问权限、限流灰度以及API拼接剪裁,主要是对API的定义。

在定义完成后由Stargate Cluster来实现功能,包括鉴权认证、协议装换、监控告警、部署扩容、API拼接裁剪。MockServer中包含的是针对Mock功能的实现,这里不仅仅是Mock API还有Mock SOA,在SOA没有准备好前,可以事先通过Mock SOA实现出来。最后的API Robot主要是一些测试相关的功能。

系统交互

前端通过Nginx访问到达圈SOA服务,灰色表示正常访问服务,红色则是先通过query string访问Mock。Stargatecluster会相对API Portal准备好的API定义,去调用SOA服务。API Robot则是消费API定义来进行API测试及回归测试。

提高效率 – Automation

  • API文档生成自动化:代码注释和标注写完,提交代码,就可以看到API文档。
  • API代码自动生成:通过标注将SOA接口自动映射成Http接口,并且生成代码。
  • API部署自动化:在SOA服务部署的时候,自动部署对应的Web API。
  • API Mock自动生成:根据API Model自动生成Mock数据,支持函数。
  • API自动监控告警:每个应用接入,自动进行全链路监控和告警。

StargateCluster技术架构

Stargate Cluster是运行在docker环境下的。图中右上角的ELESS是饿了么内部的发布环境,当SOA环境发布后会调用Stargate_core,然后进入MaxQ,再由Stargate运营管理服务去消费MaxQ,最后通知Stargatenodes进行分析处理。

Stargate Cluster基于Docker部署

图中是Stargate Cluster的具体部署环境,流量先从F5api-xxx.ele.me到达Nginx,再通过upstream抵达Docker环境,最后Docker会将IP注册到Nginx上。

部署环境

图中是一些部署的log,包括部署消息、是否部署成功以及变更等。

APIPortal – 自动化文档

这份文档相对前端比较友好,后端可能更喜欢直观的数据展示。文档中会有一些讨论、版本控制以及变更对比之类的信息。

API -讨论

在API完成提交到git中后,发布系统会创建build。buid完成后就会自动化生成API文档。通过图中的public APIs就可以通知相关人员API完成的消息,接受到消息的人员可以来到API界面进行讨论留言,之后留言将被转发给API开发人员。

MockServer流程

图中的ServiceProvider需要依赖后面的服务,而通过Mock Server就可以Mock这些服务。

Mock Server – 自动解析

将相关的依赖放入Mock中后,Mock Server会自动解析依赖或者API对应架包所包含的方法,并且还能自主添加Mock case。

前后端分离

前面我们谈论了StargateCluster、API Portal、Mock Server这些可以独立使用的工具。而在前后端开发分离实践中这些工具将会被很好的结合在一起。上图就是整个开发过程的流程图,能够看到所有的部分都被有机的结合在一起。

应用实践——配送范围迭代

我们的前端基本上就是通过API Portal完成Mock相关的部分。后端原本是要写Web controller,以及相应的测试,现在通过Stargate Cluster可以自动化生成Web API。之前开发中经常会出现部分功能留待联调期间进行开发的情况,以至于联调时间变长。而现在前后端是独自进行开发的,联调时间明显减少。

问题解决了?

通过API Everything框架看起来是解决了所有的问题,但是其实还存在不足。

可以自动化回归测试吗?

我们设想中API Robot会录制线上流量,然后进行回放。录制下来的流量会被回放给到新上线的系统,来测试新系统是否有问题。

而要完成回归测试需要录制很多东西,包括SOA1和SOA2依赖、第三方应用、Redis还有Database。用户端的至下而上请求同样需要根据时间点录制,再进行整合分析抽取出合适的顺序,也就是Case。这整个过程可谓相当复杂。

今天的分享就到这里,谢谢大家!

IT大咖说 | 关于版权

本文由“IT大咖说(ID:itdakashuo)”原创,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!

感谢您对IT大咖说的热心支持!

本文分享自微信公众号 - IT大咖说(itdakashuo)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • API崛起,移动互联网时代企业战略的转变

    摘要 在API经济崛起后,企业的移动战略应该做哪些方向的转变? ? API经济 在未来,所有的功能、数据和服务都应该以API的形式提供出来。基于各种API,我们...

    IT大咖说
  • 一个可能是世界上最全的 API 接口集合库开源项目

    对于程序员来说,为自己的程序选择一些合适的API并不是那么简单,有时候还会把你搞得够呛,今天猿妹要和大家分享一个开源项目,这个项目汇集了各种开发的api,涵盖了...

    IT大咖说
  • Web与人工智能时代

    摘要 “人工智能”一词最初是在1956年Dartmouth学会上提出的。从那以后,研究者们发展了众多理论和原理,人工智能的概念也随之扩展。人工智能(Artifi...

    IT大咖说
  • 怎么做API设计

    最近,一位同事问我关于“Beautiful API”的例子。我立刻半开玩笑地说:“情人眼里出西施。”当然,为了支持这一点,我很快地阐述了对我来说Beautifu...

    程序你好
  • API简介(二)

    API简介(一)(15991)https://www.kasoftware.com/kb/2020/11/13/api-part1.html一文中,介绍了使用A...

    知行软件EDI
  • API简介(一)

    API(应用程序编程接口)是一个计算接口,限定了多个软件中介之间的相互作用。定义了可以进行的调用或请求的类型,如何进行调用,应使用的数据格式,遵循的约定等。具备...

    知行软件EDI
  • 设计一个成功的API程序的10条法则

    早在上世纪90年代中后期,互联网是一个奇怪的、但不断增长的生态系统。企业意识到了这种潜力,一些企业实际上知道如何利用这种潜力。然而,人人都知道的一件事是,上网是...

    程序你好
  • 开启API Easy模式,试试 API Inspector

    ? 熟悉腾讯云API的同学都知道,腾讯云API可以快速地执行某些指令以及使用某些产品,帮助我们告别传统控制台打开浏览器、登陆账号、寻找产品多次点击获得结果的流...

    腾讯云计算产品团队
  • API生态的发展与机遇:从5000组数据看中国API生态与开发者现状

    当前,数字化转型已深入各行各业,API——这个曾经的底层代码接口,不仅发展成为产品本身,更成为企业承载价值、连接业务的核心载体,一个由 API 使用者和开发者组...

    深度学习与Python
  • RESTClient 使用教程

    Wisdom RESTClient 一款自动化测试REST API的工具,它可以自动化测试RESTful API并生成精美的测试报告,同时基于测试过的历史API...

    码路

扫码关注云+社区

领取腾讯云代金券