在传统的系统建设模式下,对于API开发,首先要进行需求分析,需求分析过程就是理解业务需求,根据需求定义API接口规范,包括请求方法、请求参数、响应格式以及错误处理机制等。在API的设计阶段,主要考虑API是否需要实现微服务架构、负载均衡、容错机制,并且设计数据模型,以及在API的安全性方面通过身份认证、授权、数据加密和防止SQL注入等方面进行技术约束。进入API开发阶段,开发人员主要为达成设计目标进行API服务端代码的编写,并进行API的单元测试和模块间的集成测试。测试完成后接下来就可以进行API的部署和测试,这个过程就是将API部署到服务器上进行压力和安全测试,确保能处理并发请求和高可用。
上面这个过程去实施API,带来的时间和成本投入是巨大的。为了减少反复造轮子,我们在重复的工作中寻找通用性,将通用性的工作沉淀成可以复用的能力,这些能力就是可参考的经验库、通用的组件和平台以及可自动化的过程。
在需求阶段可以通过接口规范模板和领域通用模板来降低复杂度和减少沟通成本,比如我要实现一个财务领域导入发票的API接口,这时候如果有对应的规范模板可以参考,可以降低80%的从零开始的工作量,当然这就需要企业或者提供集成服务的供应商有大量的领域或者行业的接口集成经验库可以参考,以及较强的实施经验。
在设计阶段体现更加明显,专业化、组件化和模块化已经成为设计必需要考虑的事情,在API的设计时态,很多像身份认证、限流、加解密、负载均衡等都能通过SOA架构中关键组件ESB或者网关来实现,像这些中间件平台提供了丰富的插件和灵活的规则配置来实现这些能力,并且是统一纳管,可视化配置。API的开发者无需过多的关心技术细节和约束,而将精力聚焦在实现API内部的业务处理功能上。
开发阶段就是代码实现,这个过程其实就是将调用API的数据进行一定规则的处理之后再吐给调用方,这个处理过程涉及到各类协议的适配、数据的读写、业务逻辑计算等功能。这里面比较通用的功能我们都能沉淀下来,这些通用的处理功能对于开发来说就是技术组件,拿JAVA语言来说,比如Mysql适配的JDBC的API组件库、kafka适配的Apache的kafka库、发Email的JAVA MailAPI组件库等等。开发人员使用这些组件进行代码开发来满足API的业务处理要求。当然这里除了以上的传统做法,我们重点要谈的是第二种,对于API的开发,有这么一种工具,能够不用编码或者极少的编码,大部分业务场景下都能通过拖拉拽的方式,将上述这些功能组件进行衔接组合,并配以图形化界面的方式进行参数和变量配置,一键就能快速发布出API,且也能支持复杂的业务规则处理。这种工具就是API编排工具,也称为服务编排。这类工具往往被嵌入到SOA或者IPaaS中作为平台的一部分进行销售。
今天重点要谈的就是这类工具的应用,API编排支撑的场景广泛且多样,主要可以归纳为以下几个方面:
- 简单的协议适配:
比如DB、缓存、消息中间件、MQTT、Websocket、SFTP等,编排工具基本上能覆盖市面上大部分的协议转换需求,所提供的组件均是在基础适配能力之上再进行一层封装,对于API编排的实施人员只需关心如何提供关键的参数即可,比如DB查询适配,API开发人员只需配置DB的连接和需要查询的SQL语句并进行连接发布,即可快速生成API。
- 复杂业务逻辑的实现
在复杂的业务场景中,往往需要多个服务协同工作。API编排可以将这些服务作为独立的API接口单元,按照特定的业务逻辑和接口间的交互流程进行编排,从而实现复杂的业务逻辑。通过API编排,可以自动化地执行一系列的任务和流程,减少人工干预,提高业务处理效率。
- 快速响应业务需求变化
随着业务需求的变化,可能需要调整服务间的交互流程和逻辑。API编排提供了灵活的调整机制,可以快速地适应这些变化,而无需对底层服务进行大规模的修改。通过API编排,可以快速地构建和部署新的业务服务API,缩短产品上市时间,提高市场竞争力。
- 提高系统可维护性和可扩展性
API编排将服务间的直接依赖关系解耦,使得每个服务都可以独立地进行开发和维护,降低了系统的耦合度。当需要添加新的服务或功能时,只需将新的API接口单元加入到编排流程中即可,无需对整个系统进行大规模的修改和重构。
- 跨平台、跨语言集成
API编排支持不同平台、不同语言编写的服务之间的无缝集成,使得企业可以更加灵活地选择和使用各种技术和工具。通过API编排,可以实现不同系统之间的数据共享和交换,促进信息的流通和利用。
- 安全性与稳定性保障
API编排也可以在编排流程中嵌入安全控制机制,如身份验证、授权、数据加密等,确保数据在传输和处理过程中的安全性。通过编排流程中的错误处理和容错机制,可以确保在部分服务出现故障时,整个业务流程仍然能够正常运行或优雅降级。
对于API编排工具在企业中的应用案例,比较常见的如下:
- 企业财务:通过编排可以集成来自多个数据源的数据,通过API编排自动生成财务报表,如资产负债表、利润表和现金流量表,减少人工干预和错误。API编排还可与支付服务提供商的API集成,实现自动化的支付处理流程,包括发票生成、支付请求和支付确认、状态回写等。
- 游戏运维:在游戏公司中,运维工程师可以利用API编排快速设计游戏上线发布流程,包括创建游戏服务、流水线部署发布服务、查询玩家状态服务、发送短信服务等,提高运维效率。
- 电商购物:通过API编排实现快速购买流程,用户无需经过添加购物车、提交订单等繁琐步骤即可完成购买,提升用户体验。
- 生产制造:在拥有多个生产基地的企业中,通过API编排将各个工厂的生产计划系统连接起来,实现生产任务的协同分配、资源优化和进度跟踪。结合AI算法和API编排,根据市场需求、原材料供应、设备状态等因素,自动调整生产计划,实现智能排产,提高生产效率和灵活性。
- 质量追溯:通过API编排,将原材料采购、生产加工、成品入库、销售发货等各个环节的信息串联起来,建立产品追溯体系,确保产品质量安全。
- 自动化与智能化:通过API编排将机器人、自动化生产线等设备与控制系统连接起来,实现生产过程的自动化和智能化升级。
可以看到API编排的应用范围其实还是非常多的,最近几年在IT开发集成领域也比较火,但是话说回来,工具再好如果实施不好,也只是又多了一个强大的孤岛而已。如何让API编排与企业已有应用之间有机结合起来,如何更好的利用工具推动企业的SOA和微服务转型,如何让IT更加柔性的为业务服务,是每一个IT管理者应该重点思考的问题。
我们认为单纯购买API编排工具意义不大,首先API编排工具目标就是解决原生API的快速开发、变更及发布,缺乏API的管控治理能力。其次API编排如果都单独开发鉴权、认证、限流等功能,会带来较大的开发和运维成本,不利于规则的统一配置管理,因此需要网关及管理平台来实现原生API的代理和线上管控。再者API编排工具编排出来的API能力需要有地方可以承载,让各业务系统自行查询查看并调用,管理者只需做好审核和监控,形成良性的API生命周期循环,这就涉及到能力开放共享平台。因此我建议企业可将API编排工具(或者我们也可以叫API快速开发平台)+网关及管理平台+能力开放平台三部分整合,作为企业API核心能力发布和共享的中枢,实现API能力的自服务化和全生命周期管理。
下面重点介绍使用我司的API编排工具如何满足一些具体的集成交互场景。
- 平台的整体架构为Nodejs+Express+ETCD,管理时和运行时分开,可同时部署多个运行时节点,管理端支持对API的多节点部署,平台支持容器化部署和国产化操作系统,支持单点嵌入到各类应用中,并且支持二次定制开发。
- V2.0版本整体界面做个大的整改,最新的编排工具首页:
左边的组件区域,目前支持的组件超过了20大类超过170+个组件,能完全满足各种应用集成场景需求,还能基于这些业务场景进行组件定制化开发。
中间区域为编排流程设计区,可通过拖拉拽的方式进行组件的编排和连接,可进行组件的输出调试和日志记录。
右边区域为属性区域,支持编排流程和节点的配置和查看。
- 简单DB适配
Htttp端点发布->组装SQL函数->执行DB->Http输出
- 统一错误处理
- 接口并行调用合并
发布一个统一接口,该接口会同时调用另外两个接口,调用完成后等待数据返回并统一进行合并,合并之后再返回給客户。
- 接口串行调用
新增供应商时需要判断供应商名称是否重复,如果重复则返回错误信息,如果不重复则写入供应商数据。该场景是典型的串行编排调用,通过对两个API的串行编排来实现一个满足重复判断并新增供应商的完整API。
- 多种协议适配
因篇幅有限,本次介绍就到这里,如需申请体验API编排工具,请加入技术交流QQ群:866950672,共同探讨!