企业开放平台进阶之路
"虫洞"--在物理学中是指宇宙中可能存在的连接两个不同时空的隧道,与当前建设连接大客户开放平台的通道,有着异曲同工之处。
为什么需要开放平台
图1
什么是开放平台
是一个公司对外的窗口,公司通过开放平台将内部的标准、数据和服务等以API的形式开放出来,供第三方开发者使用。简单概括就是:“聚集于核心竞争力的业务平台,采用面向大众开放的方式进行业务的整合,形成一种业务共建的模式”。
图2
企业的开放平台是基于货运业务能力支撑的开放平台,提供外部合作伙伴参与服务企业用户的各类原材料,如核心业务API、账号管理、数据订阅推送等。
开放平台的使命是把企业货运行业的定价、交易、物流等一系列基础服务,输送给有需要的商家、三方开发者和服务商平台。
开放平台的价值
开放平台的核心价值在于通过自身服务和第三方应用的互利互惠,提高用户对应用和平台的整体体验和粘度。
图3
将企业的核心产品服务能力暴露出来,供第三方开发者使用,通过与其他行业能力互通,打造完整的产品生态。
为三方平台、独立开发者、合作客户等带来收益,达到数据交互,合作共赢的目的。
需要怎样的开放平台
货拉拉现状
经过业务的千锤百炼与技术的升级沉淀,持续建设了对标业界先进的标准流程开放平台,全面覆盖了直客场景的货运需求对接。
平台架构
图4
接入流程
图5
客户特征
标准流程满足80%标准客户,基于标准+定制满足15%的定制客户,平台对接满足5%的平台大客户。
图6
标准客户
特点:标准流程对接,几乎无定制需求,满足全部需求
优点:维护成本低,GTV收益相对稳定
不足:整体收益不高,一个客户只对应一个企业
定制客户
特点:基本按标准流程对接,满足大部分需求,但有定制需求
优点:GTV收益都比较高
不足:维护成本较高,不断提出新的定制需求
平台客户
特点:避开对接标准流程,且提供自有平台,不做改动或极少的配合改动
优点:GTV收益潜力大、流量大,企业客户增长多
不足:接入、联调、测试、验收,维护成本都比较高
面临的挑战
遇到平台客户怎么办?
分析问题
支持乏力: 标准流程在这种场景下就显得有些无力
角色反转: 对接方成为平台方,平台方转为对接方
反向对接: 我们对接外部平台,而非对接我们平台
面对冲突
撤退/回避: 把眼前的或潜在的冲突搁置起来,从实际或潜在冲突中退出
强迫: 以牺牲其他方为代价,强制推行某一方案,一般只适用于"赢-输"零和游戏中
面对/解决: 积极定义问题、收集问题、制定解决方案,选择最合适的方案解决问题,实现双赢,甚至多赢
方向的探索
平台调研
从下面几个平台对比结果可以看出,大部分平台的接入流程与技术能力都大体相似,在入参、返参、协议、鉴权,流程上略有差异。
| 平台 | 特点 | 差异点 | 共同点 |
|---|---|---|---|
| 聚合平台 | 1、车型配置,运营配置 2、API地址,运营配置 3、流程差异,关注核心流程物流平台 | 1、公共&业务参数 2、请求协议 3、签名鉴权 4、业务诉求 | 1、签约入驻 2、创建应用 3、密钥分配 4、文档对接 5、系统调试 6、集成上线 |
| 物流平台 | 1、公共&业务参数 2、请求协议 3、签名鉴权 4、业务诉求 | ||
| 电商平台 | 1、城市映射,建立关系 2、API权限包,运营平台分配 |
系统规划
图8
背景
复用能力不够,当前系统可复用能力欠缺,每次接入都要经历从0到1的过程
无法灵活适配,平台增多,参数差异大,相同能力不同的流程诉求难以快速满足
管控能力不足,管理平台客户措施欠缺,接口权限,流量控制,监控告警等不完善
联调环境较差,双边联调环境难对齐、进度慢,订阅消息推送完整性能力不足
目标
轻量对接,业务识别、策略鉴权、参数适配、能力编排,沉淀可复用能力,持续降低对接成本
能力编排,计价、营销、订单、支付等能力的组合编排,支持流程差异化,满足大客户不同诉求
管控建设,户权限、API权限、监控告警、数据统计,建设管控能力,降低系统风险
自助排障,建设API调试、签名生成、SDK自动生成工具,降低沟通成本、资源排查成本
核心建设
客户管理
平台管理
审核机制,通过审核的外部平台,有权限调用我们平台提供的核心服务能力,对平台整体安全管控
通用配置,可视化管理平台可配置接入密钥、支付方式、授权回调、引导信息、状态映射等信息
图9
平台授权
客户授权
统一授权H5页面,模型适配,便于嵌入外部平台App端、飞书、钉钉等软件端
通过授权获得与系统交互的身份标识,将贯穿企业的核心服务能力的整个过程
授权回调
回调通知,将授权绑定关系结果推送给合作平台,这是约定双边交互流程中的唯一标识
主动查询,提供平台主动查询授权结果信息能力,便于合作平台对授权信息的确认与补偿
图10
业务适配
模型适配
下单链路较长,涉及地址解析、车型转换、支付方式、播单时长、司机引导、订单备注、报价搬运等等
服务商平台参数差异大,经过转换、定制、配置,统一适配成标准模型的参数,复用于通用的业务能力
图11
能力编排
原子能力:地址能力、定价能力、核价能力、用券能力、下单能力、支付能力
平台能力:由多个原子能力的组合而成,实现具备不同组合能力的通用平台能力
能力扩展:对平台能力进行扩展,让平台能力具备满足更多差异化诉求的能力
图12
提效工具
参考业界先进技术方案,持续建设针对此类平台大客户的接入辅助工具,提高接入效率,降低接入成本
网关配置
统一接口、统一维护
由M(平台)*N(接口量)收拢为一套接口。
识别身份,统一监控,降低维护成本。
图13
Sentinel集成
流量控制
客户限流,对平台应用的整体流量控制-总体控制
接口限流,对平台调用接口的流量控制-接口控制
资源配额,对平台调用接口的资源限制-配额控制
图14
API调试台
一键调试
调用链路
调用示例
一键生成上下文关联参数,发送请求,响应平台结果。
一键生成平台参数签名,响应待加密字符串&加密后的签名字符串,方便调试&测试对比,提升联调效率,降低测试成本
图16
图15
自助排障
日益增长的需求变更,人工对API异常码的更新并不是实时的,总是滞后的、容易缺漏,间接的提高了接入的成本
通过自助排障,实时查询异常信息的详细原因,更准确的定位问题,减少双边资源的协调成本
排查示例
图17
SDK生成
具备SDK架构的基础功能模块
通信协议封装:让开发者无需关注调用API的通信协议和通信逻辑
接口基础契约封装:让开发者无需关注调用API的参数格式、时间戳、签名、Code码等细节
请求参数模型封装:让开发者便捷地设置API请求参数
返回参数模型封装:让开发者便捷地使用API返回的数据
开放平台 SDK 中,参数模型代码和调用示例代码都具备较强的规则性和模式性,我们选择基于“代码语料”自动生成代码更符合当前的技术路线。
业界主流代码自动生成技术
基于代码语料的自动生成
基于代码语料自动生成代码需要“语料”+“规则”两个核心元素
通过解析API元数据,并结合领域专用语言(DSL)作为语料模板,生成代码语料
基于语料特性为不同的编程语言定制代码的生成规则
将“语料”+“规则”输入代码生成器以完成目标代码的生成
SDK 生成、测试和发布自动化
持续集成(CI)和持续发布(CD)
开发者接入SDK前后问题预估统计
获取SDK基础逻辑代码(人工编写)并完成静态代码检查
拉取API元数据并自动生成参数模型代码
监听SDK可能需要发布的变更,包括通过Binlog机制监听API元数据的变更、通过Git Hook机制监听SDK基础逻辑代码仓库Master分支的变更
一旦监听到有变更产生,通过触发器去触发SDK持续集成和发布流水线的运作
流水线开始运作后,首先执行SDK构建组件,SDK构建组件会并发执行两个操作:
以上操作完成后,执行代码合并和代码编译,将结果提交到流水线
然后由自动化测试组件完成对SDK的单元测试和自动化测试,通过后提交到流水线
最后由自动发布组件完成SDK的打包、上传、下载链接生成和版本信息生成等一系列操作,并最终将最新版本SDK发布到官网供开发者下载
图18
图19
图20
图21
图22
消息推送
广播推送
提供基础订阅能力,平台服务商按需订阅,推送订阅消息至配置推送地址
定向推送
通过保留原始消息、推送消息,保证推送链路的完整记录
多种推送策略,让开发者在开发中、问题发现、和事后补偿中都可以根据不同策略来实现
图23
总结&展望
抽象平台对接的复用能力,低成本对接更多平台服务商
灵活模型适配与能力编排,高效适配差异化的需求流程
建设对接平台的基本管控,降低平台服务商越权等风险
支持可视化自助排障平台,降低开发/联调/测试/验收成本
提升接口安全可靠的能力,平台接口权限、重复请求幂等
搭建场景丰富的监控体系,高效协助排查、掌握实时情况
犹如"虫洞"一般,随着上述能力的建设进阶,我们就慢慢打通了与大客户平台的通道,构建企业大客户开放平台,实现平台之间的高效连通。