写点什么

从两个风格迥异的 API 平台说开去

  • 2016-11-21
  • 本文字数:3850 字

    阅读完需:约 13 分钟

了解 API

有人的地方就有江湖。有江湖的地方就有纷争。有纷争的地方就有是非。有是非的地方就有无奈。自然,有 API 的地方就有 App。API 已成为 App 的标准之一,被硅谷风投 Fred Wilson 视为成功 App 的关键因素之一。

API,即 Application Programming Interfaces(应用程序编程接口)。简单地说,就是一套套的要求,用来管理应用程序之间的沟通。API 并不是什么新事物,在你使用计算机时,正是 API 让数据在程序之间传输。在互联网中,API 让其它应用可以使用一些大的服务,如 Google Maps 和 Facebook。例如 Yelp,它可以在 Google Map 上显示附近的餐馆;还有一些游戏可让用户通过 Facebook 与其它玩家聊天、分享得分等。

API 是通过把程序内部的一些功能有限地向外开放来做到的,这使得应用之间可基于各自的利益分享数据,同时不需要开发者公布所有的软件代码。对开源项目来说也是如此。你可以把它看成是一扇门、窗或杠杆,不管用什么比喻,一个程序和外面的软件世界的沟通就是由 API 定义的。

API 的魅力在哪里呢?与编程范式比起来,API 在不断酝酿新的商业模式。API 不仅会把所有东西进行技术整合,还会把相应的商业利益或多或少的联系到一起。当开发者开始调用公司 API 的时候,他们就会成为公司的一个合作伙伴,而用户有可能会发展成为他们的潜在顾客。

随着 API 的蓬勃发展,如何维持高质量的 API 也逐渐成为众多公司所关注的问题。如何保证 API 的质量呢?最好就是要确保 API 提供了卓越的用户体验,并与合作伙伴达成合作协议,进而完成业务目标。

为了确保 IT 生态系统的健康和繁荣,开发一个 API 需要一个郑重的承诺,因为它需要长期的维护管理,维持高质量。

如果一家 IT 公司还在为产品的战略和商业模式而感到彷徨无助,那么,等待一个高度可访问的外部 API 是值得的。最好要先了解一下你要去的那家公司,这样就可以利用公司庞大的合作伙伴网络,优势互补协作创新,使你的产品加速发展。如果你的公司正在考虑提供公共 API,这篇文章就是为您撰写的。让我们看一看 Twitter 和 Slack 分别是如何管理各自的 API 的。

Twitter API 和生态系统错位

在 Twitter 的 API 所有变更中,饱受争议的是 Twitter 限制第三方客户端 App 所能拥有用户的数目,以确保这些客户端 App(大部分复制了 Twitter 的核心体验)不能变得足够大,从而失去竞争力。在此之前,Twitter 的 API 提供了大部分不受限制的访问,但没有应用策略。早期 Twitter 极端繁忙,仅仅是为了保持服务正常运行——还记得那头失败的鲸鱼吗?(InfoQ 注:Twitter 宕机的页面是一头失败的鲸鱼图像。)当 API 发布时,唯一的第一方 Twitter 客户端是网站。这个 API,令人难以置信地充斥了当时的主流移动平台(iOS、Android、Blackberry)上的第三方客户端。

在初期时,涌现了许多第三方富有特色的 App,如 Tweetbot、Twittelator、Twitterific、UberTwitter、Seesmic、Brizzly、Falcon 等等,那个时候多么迷人啊。

目前,这个 API 已经有 600,000 个开发人员注册了 900,000 个应用程序,每天疯狂地处理 130 亿个请求。“Twitterverse”是大规模的。在最近的记忆里,这无疑是最让人激动的 API 之一。

然而,Twitter 越来越多深刻地意识到,他们最具 扩充性的商业模式是广告,Twitter 与用户之间的 UI 变得至关重要,这一点,在 Twitter 购买 Tweetie(iOS 客户端)时显得特别明显,此刻,这个新的第一方 App 突然变得与服务本身无法区分。

此外,对于每个大客户端而言,有许多不良的用户体验。这将会给第一次尝试 Twitter 的用户很差的体验,从而流失客户,于是 Twitter 被迫进一步提供第一方移动 App。

但最重要的是,在这个时候,在 Twitter 的生态系统中爆发了一件事。Bill Gross 的 UberMedia 公司开始收购几个第三方 Twitter 客户端:Echofon、UberTwitter、Twidroyd,并寻求收购 Tweetdeck。如果 UberMedia 成功收购了 Tweetdeck,他们将控制一大批客户端:决定多少用户能够创建并使用 Tweets。Twitter 敏锐地认识到,这是一个威胁——如果 UberMedia 创建一个影子网络,从 Twitter 完全引走用户,这将是灾难性的事件。

从某种意义上说,这意味着所有面向消费者的第三方客户和聚合应用突如其来的竞争,导致了扭曲性激励机制,及严重的政策收紧。下面是声名狼藉的“API 象限”。

这很大程度上是因为 Twitter 的 API“黄金时代”结束了。API 是与外部开发者签订的合同,一旦它释放,就如泼水难收。有没有其他方式可以管理 v1.1 的转换,就像没有用户限制的继续不受约束的访问,但针对第三方客户端的广告联合发布模式?是的,绝对有。即使只有一小部分开发人员实质上受到 v1.1 变更的影响(记住,生态系统是巨大的,有许多不同类型的 App),v1.1 的影响通过开发者社区引起了轩然大波,并导致人心涣散,对一个蓬勃发展的平台而言不啻一个打击 。

Slack 的 API 和结盟激励

通过考察 Slack 管理他们的 API 生态系统的方式来对比 Twitter。Slack 有意使激励与他们的生态系统相符,侧重将他们的服务融入到免费 App 中。例如,Slack 的 API 上的一些顶级 App 涵盖了项目管理、日历控制、费用会计等功能。这些使用范围和权限子集(通过 OAuth)的 Slack 应用程序在进行审核后显示在应用目录中。这个目录有助于提高发现和分布,对于消除摩擦和为应用程序提供他们需要的用户流动性不可或缺。

这些第三方App 以互补的形式,丰富了Slack 核心体验。这对所有的参与者都有好处:用户获得更好的体验,开发者获得更多的用户,Slack 比闭门造车得到更多的功能,激励与动机相一致。Slack 采取积极的方法来指导和管理它的生态系统。尽管发布一个必然改变的路线图有风险,Slack 还是这样做了。此外,他们提供了一个“ Ideaboard ”来传递他们从客户那里得到的市场反馈 ; 让开发人员了解客户需要解决的问题。

也许最令人印象深刻的是,Slack 组建了一个 8000 万美元的基金,直接投资第三方 App。这就是 Slack 的口号,为开发者社区提供资金,并允许他们在建立业务时维持运营。Slack 已经为 14 个 App 投入了近 2 万美元,特别侧重于 bot 风格的 App。这是一个了不起的方法,确保最好的 App 得到奖励,鼓励保持高品质的体验。

管理生态系统

所以我们回到许多公司面临的一个常见问题:他们是否应该开放 API 来成为一个数据服务或平台?开放 API 是一个巨大的承诺,很容易低估随健康的生态系统而来的工作量。为了完全公平应用 Twitter,API 在初期令人难以置信的启动了,在商业模式设想出来之前,很显然存在由局外人引发客户端合并的威胁。

这使得该公司很难继续开发一个开放的 API,并同时促进健康的广告业务。记住,一家公司在其高速发展阶段有巨大的期望,特别是当公司要赚很多钱时。这里也很重要的一点是,在早期建立客户端的第三方开发人员受益匪浅:他们拥有自己的用户(Twitter 用户的一个子集),开发者社区积极的社会关注,他们中的许多人赚了数量不等的钱(有些人赚了非常多的钱)。

健康的 API 应该为提供商带来双赢:第三方 App 开发者和用户。如果你的公司计划提供一个 API,并且你想促进一个强大的生态系统,你必须大量投资。你必须不断努力,让开发者社区获得成功。仅仅发布 API,并希望事情顺利发展,是远远不够的。这个工作,需要前瞻性,正确安排适当的激励机制:开发者的访问和策略。想想你想让你的生态系统的经验类型(以及你想直接拥有哪些经验)。然后构建 API 以启用搜索功能。配置您的 API,文档和策略,以指导开发人员提升价值链。并使您的核心产品体验更好,以便不需要替代核心体验。

相反,不要为您必须拥有的内部功能提供 API。如果您提供的 API 能够为产品的核心方面提供支持,那么您可以有效地指导您的开发人员基础构建相同的服务或其相近的衍生产品 ; 设想一下如果 Twitter 从未公开提供家庭时间线的 API。最后,当您在生态系统中找到那些集成重点,说明您希望看到由开发者社区解决的水印使用案例——为这些 App 擂鼓助威!让生态系统知道这是所有其他应用程序应该追求的质量水平。演示如何照顾这些玩家:加快推广点击水印、共同开拓市场机会、增加 API 访问权限等。在那一天到来之际,如果有一个平台的所有参与者都信任,透明清晰的沟通,良好的期望和互惠利益——一个令人难以置信的生态系统能够蓬勃发展。看起来没有比 Stripe、Twilio 和其他公司看上去多么强大的公司。只要放眼乾坤,这是一个有意义的投资,你必须致力于长期发展。

从一个更广泛的角度来看,API 使各种“混搭”的网络服务成为了可能,开发者通过混搭来自 Google、Facebook 或 Twitter 的 API 来创造全新的应用和服务。在许多方面,可以说是主流服务 API 的广泛应用才使现代网络体验成为可能。

一个 API 现在可用,并不意味着将来也可用。以 Twitter 为例,一年以前就以限制第三方应用使用其 API 而臭名昭著,这种做法杀死了所有的第三方 Twitter 客户端,让用户只能使用 Twitter 自家的网站和应用,Twitter 从中展示广告赚钱。Twitter 称自己坚持这么做是为了保持统一的 Twitter 用户体验。

有些公司可能会关闭服务和 API,例如 Google 就总是把一些见不到利润的服务关闭,最近的例子是 Google Reader,如果你的应用依赖这些 API 来运行的话,就会随之一同出现问题。

虽然 API 的世界并不完美,但依然阻止不了开发者对其的热情,也阻止不了由其促成的各种多样化应用和服务。


感谢陈兴璐对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-11-21 16:342435
用户头像

发布了 375 篇内容, 共 187.1 次阅读, 收获喜欢 945 次。

关注

评论

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

小米面试:如何实现优先级线程池?

王磊

Java 面试

程序员对 VSCode 粘性滚动真的不感兴趣吗?

伤感汤姆布利柏

软件测试 | 不是已经做了性能测试么,为什么系统一上线就崩溃了?

测吧(北京)科技有限公司

测试

软件测试 | 如何选择适合自己业务需求和技术栈的工具?

测吧(北京)科技有限公司

测试

Doris 实现原理之高效存取 varchar 字符串

Baidu AICLOUD

大数据

时序数据库 vs 实时数据库,一文搞懂!

Apache IoTDB

软件测试 | 为何测试环境难以搭建与维护?

测吧(北京)科技有限公司

测试

软件测试 | 简化测试数据生成和管理的复杂性

测吧(北京)科技有限公司

测试

Technical comparison of IPQ4019, IPQ4029, and IPQ4018 chips

wifi6-yiyi

ipq4029 wifi5

VMware ESXi 6.7U3u macOS Unlocker & OEM BIOS 标准版和厂商定制版 UI fix

sysin

esxi

前端性能优化:从系统分析讲到实践策略

秃头小帅oi

软件测试概念与体系

测吧(北京)科技有限公司

测试

一键自动化博客发布工具,用过的人都说好(腾讯云篇)

程序那些事

工具 程序那些事 自动发布

软件测试 | 想做性能测试的你,是否面临以下痛点?

测吧(北京)科技有限公司

测试

软件测试 | 揭秘设计现实负载测试场景的艺术:实用方法详解

测吧(北京)科技有限公司

测试

SD-WAN技术助力企业网络应对六大挑战

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

关于TypeScript数据类型

高端章鱼哥

服务器成本太高,如何确定有效主机容量,节约成本?

测吧(北京)科技有限公司

测试

软件测试 | 简历投了一大堆,面试机会没几个?

测吧(北京)科技有限公司

测试

软件测试 | 如何找到适合您需求的性能测试工具?

测吧(北京)科技有限公司

测试

VMware ESXi 6.7U3u macOS Unlocker & OEM BIOS 集成 Realtek 网卡驱动和 NVMe 驱动 (集成驱动版) UI fix

sysin

esxi

详解ReflectionClass类在PHP反射API中的应用

技术冰糖葫芦

API boy API 文档 pinduoduo API API 性能测试

SD-WAN怎样提升Microsoft 365用户体验感

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

云架构系统如何进行大规模性能测试?

测吧(北京)科技有限公司

测试

软件测试 | 如何解读各种性能测试数据和曲线图?

测吧(北京)科技有限公司

测试

mac空间不足怎么办 mac内存满了怎么清理

阿拉灯神丁

MacBook CleanMyMac X mac‘ 电脑软件 杀毒软件

从两个风格迥异的API平台说开去_语言 & 开发_刘志勇_InfoQ精选文章