写点什么

业务流程层的API

2013 年 12 月 27 日

Netflix API 的工程主管 Daniel Jacobson 最近在 The Next Web 上发表了一篇文章,他表示:我们需要理解谁是 API 的使用对象,以及他们的使用的方式,并在此基础上进行 API 设计。这看起来是显而易见、理所应当的事情,然而 Daniel 接下来写道:过去那种传统的“万应灵药”般的面向资源的 API,或许并不能满足使用我们 API 的用户中最重要的那些人。良好的 API 设计不只是关于“资源建模、负载格式、如何管理系统版本以及安全”,更加根本的问题是:“谁是这些 API 的主要受众,以及我们应该如何来针对他们进行优化?”

面向资源的 API 或许适用于“广泛的未知开发者”,但实际上大部分组织机构需要满足的是“少量已知开发者”的需求,以及特定的用例。“他们或许就是 API 团队楼下的工程师、或许是一家被雇用以开发 iPhone 应用的合约公司,又或是来自合作公司的一支工程团队,”Daniel 写道,而优化 API 的机会正蕴藏在这些情景中。

许多公司正在逐渐向其体系架构中引入 API 编排层——Daniel 将其定义为“一个抽象层,它运用通用建模的数据元素和 / 或特性,并以一种更具体的方式处理它们,从而为某个目标开发者或应用做准备。”Daniel 列出了部分编排层的关键准则如下:

  1. 大部分 API 提供者设计的目的,都是为了维护数据模型的纯净度。然而在构建 [编排层] 时,我们需要做好在某些时候牺牲纯净度以换取优化和 / 或性能的心理准备。
  2. 许多 API 团队设计 API,以求让自己更易于提供支持。然而在构建 [编排层] 时,我们需要做好可能会对增加团队工作复杂性的心理准备。
  3. 了解 API 受众的广度非常重要。针对受众的不同成分,有时候我们或许只需要 [编排层]。而在其他一些情况中,我们除了 [编排层] 之外,或许还需要 [万应灵药] 式的基础。

第二条准则让人想起了接口设计中常见的类似情况:为一个“聪明的”视频记录软件增加内部复杂度,以便让外部用户更易于使用。

在文章的最后,Daniel 给出了三个常见的用例,包括将编排层用于针对特定设备的包装器、支持一套基于查询的 API,以及提供基于经验的 API。Daniel 表示,针对特定设备的包装器是他所见过的最常见的用例,例如针对 iPhone 优化的 API 包装器。此类针对特定设备的包装器一般由 API 团队为特定消费者提供。相反,基于查询的 API 把权力交给了 API 使用者——让使用者掌控,“允许他们就像访问数据库一样,通过灵活的参数和负载去查询 [资源]”。

Netflix 采用的模型是基于经验的 API,同时也混合了其他两个用例——针对特定设备设计和实现,并由 API 用户所拥有的包装器。负责的部门被划分为 API 团队——负责以通用的、可复用的方式提供数据;以及使用者——掌握数据格式和交付。

Daniel 总结道,API 团队需要将 API 的使用者视作设计过程中的伙伴进行协作,以便尽可能地让最终用户获得最佳体验。

查看英文原文: The API Orchestration Layer

2013 年 12 月 27 日 07:591908
用户头像

发布了 256 篇内容, 共 49.0 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

区块链赋能市场监管 浙江上线“黑科技”清除取证固证难题

CECBC区块链专委会

区块链 市场监管 取证难题

区块链技术发展的十大趋势

CECBC区块链专委会

区块链 金融 安全问题

业务架构学习内容有哪些?

周金根

BIZBOK 业务架构

为什么每个微服务要有自己独立的数据库?

码猿外

数据库 架构 微服务

我们该怎么保护手机屏幕前的父母?

徐说科技

手机 短视频

金沙账号审核不通过维护不给提现风控怎么回事?怎么办

过山太阳

内容审核 提现不了

【高并发】Redis如何助力高并发秒杀系统,看完这篇我彻底懂了!!

冰河

redis 多线程 高并发 秒杀 电商超卖

服了,十年运维架构专家的MySQL运维经验,除了实战还是实战

周老师

Java 编程 程序员 架构 面试

面试必问亿级流量优化策略之JVM调优,文档视频面试,还不收藏

小Q

Java 程序员 架构 JVM jvm调优

Go: 理解 Sync.Pool 的设计

陈思敏捷

go golang sync sync.pool pool

一点 Go Web 编程实践经验

Garfield

go Go web

架构师课作业 - 第十三周

Tulane

oeasy教您玩转 linux 010212 管道 pipe

o

企业中台化落地:从战略分析到战术实践及架构演进过程

Barry的异想世界

架构设计 策略模式 模板方法模式 中台架构 领域驱动设计DDD

Golang领域模型-实体

奔奔奔跑

go 架构 领域驱动设计 DDD 微服务拆分

阿里培训官给新入职程序员的25条建议

Java架构师迁哥

基于Goc的Golang代码VSCode实时染色方案

大卡尔

go 测试覆盖率 精准测试

Dubbo-go应用维度注册模型

apache/dubbo-go

dubbo dubbo-go dubbogo

TOGAF认证课由2天变化为5天的思考

周金根

企业架构 TOGAF

Java四种引用类型:强引用、软引用、弱引用、虚引用

简爱W

week11--作业

Geek_165f3d

我理解的面向对象(ObjectiveSql 实践)

Braisdom

Java ORM框架 ORM

LeetCode 169. Majority Element

liu_liu

算法 LeetCo

SpringCloud轻松集成Dubbo实现RPC调用

Barry的异想世界

微服务 dubbo nacos RPC spring cloud alibaba

澳门金沙玩赢了钱提现不了异常注单未更新有什么办法处理?

丛林里的余光

异常检测 澳门金沙 提现不了

一文解开java中字符串编码的小秘密

程序那些事

java安全编码 java编码指南 UTF编码

从新浪数字化转型,窥见互联网的“懂行”新十年

脑极体

藏在Java数组的背后,你可能忽略的知识点

Java架构师迁哥

不草率,你只管下载资料,剩下的交给「哇哦」

小Q

Java 学习 架构 面试 分布式

宅家三个月玩转算法,再战字节跳动,字节跳动面试官朝我比了个“ok”

云流

编程 字节跳动 算法 Java 面试

央行数研所推出贸易金融区块链平台

CECBC区块链专委会

区块链 金融

业务流程层的API-InfoQ