写点什么

Uri Sarid 介绍 RAML 1.0 的发布以及 MuleSoft API 的最新消息

  • 2016-08-18
  • 本文字数:5176 字

    阅读完需:约 17 分钟

Uri Sarid 是 MuleSoft 的 CTO,在他们于旧金山举办的 CONNECT 2016 年会上,InfoQ 有幸与他进行了交流。Sarid 是 RAML 的创立者,这个项目刚刚发布了人们期待已久的 1.0 GA 版本,因此这是一个很好的机会对去年与他的交流进行随访,并在更宏观的视角上了解MuleSoft 针对API 团队所给出的解决方案以及他对API 的见解。

InfoQ:您在 MuleSoft 担任的角色是什么,API 在你工作中的作用是什么?

Uri Sarid:我的角色是 CTO,这意味着我要负责平台愿景和方向,同时还要负责它的架构。在我们做的所有事情中,API 都是前沿和中心。它是我们工作方式的核心,我们将其称为以 API 为导向的连接,这种方式能够产生一个基于服务的生态系统,我们称之为 API 经济(API economy)。

InfoQ:在 API 方面,MuleSoft 的愿景是什么?它主要来源于集成方面的需求吗?

Sarid :MuleSoft 的愿景是让我们的客户和整个行业创建应用网络(application network),通过这种方式,连接世界范围内的应用数据和设备。应用网络是由应用程序、数据和设备所组成的网络,它们通过 API 连接起来,实现可插拔(pluggable)的功能并创建可重用的服务。

InfoQ:针对 API 项目,MuleSoft 提供了什么产品来帮助开发人员和架构师吗?

Sarid:我们提供了一个平台而不是一组产品,以便涵盖 API 完整的生命周期。如果你在创建 API 的话,这意味所有的事情会从你想要和尝试创建的内容开始,一直到 API 接口的产品化、功能的实现、部署、运维和管理,再到查看它的运行情况,用户的参与度以及 API 功能的废弃。

InfoQ:在大型的企业和中小型企业(SMB)中,你所看到的 API 采用和成熟情况是怎样的?

Sarid:首先,对于 API 重要性、收益和投资的理解,已经跨越了鸿沟,形成了共识。对我来说,如果具有一定规模的企业不去理解 API,并在核心战略和业务上积极集成 API 的话,这是很难想象的。

值得一提的是,在所需的相关技术以及如何将其做好方面,市场还远远没有成熟。

InfoQ:你认为集成 PaaS(iPaaS)和 API 管理最终是否会合并,还是会基本保持独立?

Sarid:按照我们的观点,它们已经合并了。我们的平台是针对 iPaaS 和 API 管理的综合性解决方案,并且我们看到客户希望有这种类型的完整方案。

客户看到了 API 管理和分布式 ESB 的价值。在有些地方你会需要 iPaaS,客户越来越不再将其视为不同的解决方案。

关于这个问题,有一个很好的样例就是客户希望他们使用 ESB 来创建集成,在此之上能够有管理良好的 API,这样他们就能非常容易地访问所需的数据。

InfoQ:你刚刚宣布了 RAML 1.0 的 GA 版本,这其实经历了很长的成熟期。你能介绍一下它有什么新特性吗,它的交付为何花了这么长的时间?

Sarid:主要的变化在于现在能够以一种格式独立和可重用的方式很容易地为数据建立模型,更容易地重用约定、模式以及自己或别人已开发过的任意内容。

借助 RAML 1.0 ,API 开发人员能够跨网络组件创建和重用设计库,这提升了设计的一致性并且能加速 API 的交付。除此之外,注解提供了强大和可控制的扩展性,而基于 YAML 和可命名的实例增强了人类的可读性,简化了协作以及开发人员的学习过程。

InfoQ:相对它的替代方案和类似产品,RAML 的采用情况如何?

Sarid:目前我们看到的现状,同时也是我们希望的发展方向就是人们意识到 API 作为一种契约的重要性。这种想法会鼓励开发人员选择一种方式来描述这个契约,因为这对他们的组织是有益的。然后他们就会说,这样做的最佳实践是什么。

将 Swagger 和 RAML 进行对比的话,人们会发现 RAML 在 Open API 规范(OAS,也就是原来众所周知的 Swagger 规范)之上添加了很多的东西。它提供了很多用于功能重用的特性。

我们所交流过的 RAML 用户认为,在描述 API 时,RAML 能够作为实现源码的可选方案,他们正在向社区寻求互相交互的工具,这样的话,他们就能充分利用 API 生态系统,在这个过程中,只需规范在各个功能间兼容即可。

InfoQ:你们计划何时发布完全支持 RAML 1.0 的工具呢?

Sarid:我们已经发布了 RAML 1.0 工具的早期可用功能,但是这里还有一些差异。我们发布的所有的解析器已经弥补了这些差异,目前我们正处于最终的阶段,将这些解析器纳入进来并将它们发布到完整功能的平台中。

现在,解析器和 API 工作台都是开源的,这样就允许社区并行地完成对 1.0 版本的支持。

目前,社区项目已经有上百个。它们对 1.0 版本的支持应该在未来的几周或几个月内进行,为了实现这一点,会有很多的文档,甚至还有一个测试兼容性工具箱(Test Compatibility Kit,TCK),从而确保能够实现对规范的完全兼容。

我们正在致力于将 API 工作台模块化为单独的工具,这样它们就能够快速地单独于应用到其他的项目中。

InfoQ:RAML 治理(governance)的演化现状是怎样的?你们有没有计划将其转化为一种标准的形式,就像 Swagger 所创立的 Open API Initiative 那样?

Sarid:目前,治理更多的是社区驱动,并不那么正式。对于采用哪种方式,我们的态度是开放的。在与 Open API Initiative 的协作方面,我们保持了积极的态度,因此在这方面需要进行治理的是同一件事,不过这需要一个持续的对话。

InfoQ:API 的本质是技术化的,但是在软件项目中它的重要性在不断提升,你认为功能人员和技术人员之间的鸿沟该如何进行弥合呢?

Sarid:我认为与其让技术部分更易于访问,还不如让业务人员更易于使用 API 这种方式。假如公司中的某个部门需要数据源中的特定集合,业务人员肯定会问,为什么不构建一个应用网络,让它们都变成可重用的资产呢?你展现给他们的是一个 API,它会驱动对数据的访问。这比只关注 API 控制台的易用性价值更大。

InfoQ:在你的经验中,对于 API 开发人员,从代码驱动到契约驱动的 API 开发流程转换需要多长时间?对于这种更为工业化的阶段,API 工具是否已经准备就绪?

Sarid:尽管很难量化,但是这种运动确实正在发生。我们看到了更多的宣传,但是当我们三年前推出 RAML 的时候,感觉就像是沙漠中孤独的呐喊。随着使用 API 契约的工具逐渐成熟,开发人员看到了不断增长的便利性以及设计优先所带来的时间节省,所以毫无疑问,它不仅仅是一种最佳实践了——它还是一种非常实用的方式。

InfoQ:在 Web 领域,似乎 RPC 有一种持续复苏的态势,比如 Google 的 gRPC。你如何分析这种现象?

Sarid:我认为这是使用 API 时,不断出现的纠结和摇摆,也就是在强类型、规范以及松散类型、缺乏结构之间做出选择。另外还有结构化的 API 语义(CRUD)和非结构化的方式(调用远程系统上的函数),基于文本的方式(JSON、头信息)与基于二进制的方式(gRPC 或 ProtoBuf),我们将会不断看到人们在这些方案之间摇摆。

我认为在 API 生态系统中,我们的角色就是识别在何时应该使用某种方案,而不是其他的方案,并为其提供支持。你需要通盘考虑老系统和新系统,并且在创建新 API 时,指导做出最优的选择。

InfoQ:你认为超媒体 API(hypermedia API)的现状如何?它是常规 API 的替代方案,还是微软的 Graph API 所暗示的那样,是常规 API 的一种补充?

Sarid:我认为它并不是一种替代方案,它更像是一种演化。超媒体是在 API 中嵌入比数据本身更多的内容,控制其他的元数据。

所以,我认为我们依然需要弄清楚如何以及何时才能获得这种方式的最大价值。对此我非常乐观,基于我们已经完成的工作,在明年应该会有结论,我们将会找到这个最有效的点。

InfoQ:在之前的一个访谈中,Daniel Jacobson 质疑了面向临时 API(ephemeral API)的正式 API 描述语言的价值。你同意他的看法吗,你有没有遇到过这样的场景,比如使用 RAML 正式地规范化 API 比较难以令人满意?

Sarid:我们不能说它没有价值。

有很多的 API 每天都会在演化,如客户端应用的 API。如果你采用 CI/CD 的话,可以使用代码生成、自动化测试来查看它的变更是否会破坏发布版本,不需要在 API 的设计上花费时间,只需暴露 API 规范,并持续地对其进行演化,因为它会在“另一个侧面”为 API 增加价值。

另一方面,有时候为了保持快速进展,确实需要并行进行,借助 API 规范,就能实现这种场景。API 的演化可能并不会像 UI 的演化那样迅速,UI 是构建在 API 上的,在这种情况下,让它们并行地演化并且速度稍有不同是非常有益的,这个过程中,API 规范定义了边界并且将不同团队的摩擦达到了最小化。

InfoQ:在 MuleSoft 围绕 API 的问题,你们有什么痛点和最佳实践吗?你们使用了什么特定的工具或工作流程吗?

Sarid:我们使用的是自己的平台。我们遇到的是每个公司都会遇到的典型问题。它其实就是一种所谓的引导问题(bootstrapping problem),我倡导某种理念并为此创建工具,然后利用这些工具来进行构建,但显然它们还在开发的过程之中。这样的话,就找到了一个持续的需求来提升和扩展我们自己的平台,从而服务于我们的需求。基于这些需求,我们来构建自己的平台,让自己和客户从中收益。所以,我认为这是一个很好的问题。

尽管我们已经为服务创建了 API 并采用 API 优先的方式,但是我认为我们还没有完全解决的一个问题就是如何快速地在一个团队内或跨团队进行协作。我们发现自己的 API 基础设施效率不够高,所以在路线图中会对其进行优先处理,这是因为它不仅会帮助到客户,还会提升我们交付产品的能力。

InfoQ:在 CONNECT 2016 上,你与 Netflix 就应用网络和微服务做过一个 演讲。在这个新的趋势下,API 和 DevOps 的角色是什么?

Sarid:我们看到 API 和运维是微服务的两大支柱。在 DevOps 实践的 Ops 这一部分中,面向容器、高度自动化的协作获得了很多的关注,比如使用 Docker 和 Kubernetes,但是市场开始意识到在高效的微服务中,API 扮演了重要的角色,在这个演讲中,这方面也进行了阐述。

API 定义了微服务的边界,就像一个细胞的边界对于它的正常存活至关重要一样,它会调节输入和输出,在微服务存活的生态系统中,API 扮演了类似的角色。

如果你有很强的 API 意识和 Ops 意识的话,你就可以采用我们在 Netflix 所看到的最佳实践,如使用 Chaos Monkey、Hystrix 等等。

InfoQ:围绕着 Java API,最近 Oracle 和 Google 有一个诉讼的判决。你觉得它会如何影响 Web API 项目呢?

Sarid:我们如今生活在一个非常有意思的时代,在美国,API 是可以申请版权的,但是在欧洲还不行。法院裁定 Google 使用 Java API 的方式是“合理使用”,因此不会受到限制也无需对此付费。我们正在思考这对 Web API 意味着什么,它对于我们的经济发展至关重要。

有两个理由能够让我们保持乐观。首先,在陪审团的最新判决中,结论是 Google“合理使用”了 Oracle 的 Java API,他们接受了 Google 的论据,判定为合理使用,因为开发人员熟悉这些 API,而不是因为它鼓励互操作性(interoperability)。在未来的场景中,目的实际上是互操作性,我甚至希望法庭能够接受合理使用的论据,进一步减少版权诉讼的威胁。

第二个理由就是我们回过头来看一下版权真正保护的是什么,它保护的是某个想法原始陈述的描述,而不是想法本身,也不是这个想法的纯实用性描述。例如,如果只有一种方式来表达某件事情的话,那它是没有版权的;如果表述方式完全是实用性的,没有创新性的话,那也不会受到版权的保护。

如今,通过使用通用的词汇和结构,API 经济已经推动 API 更加标准化、更加简单和可预测,API 也变得更加具有实用性和广为人知。随着 API 越来越具有实用性,它的创新性可能就会减少得多,我们希望法院将来会判定这种 API 根本是不受版权保护的。

关于这个重要的诉讼裁决,我们写了一篇详细的博客文章,如果你希望了解更多的信息的话,可以作为参考。

InfoQ:关于 Web API 未来的前景你怎么看?在推动 API 应用于各种规模的企业方面,你认为下一件重大的事情会是什么?

Sarid:API 已经达到了一定的成熟度,未来的前景在于各个组织如何推动它发挥其价值并实现重用。当你使用 Web API 创建应用网络的时候,它的价值就体现出来了。

我们可以使用 API 来创建无缝的应用程序集合,这些应用能够进行组装和重组,这样的话,业务方面可以获得更大的价值。

将 API 纳入业务流程之中将会发挥它们的价值。例如,如果 Web API 暴露关于自身的元数据信息,那么对它们的发现会更加容易,也更加易于将它们集成到业务流程中,这样能够让业务看到 Web 服务的运行状况。

我认为我们需要更加侧重于 API 的发现和使用体验方面。例如,我们已经在 RAML 中使用格式独立的数据类型,所以开发人员不会受到特定格式模式的困扰,如 JSON 模式和 XML 格式(尤其是对于普通的开发人员)。

我们同时还投入时间到 RAML 规范的样例和 API Notebook 上,所以开发人员能够很容易地看到该如何使用这些 API、用例是什么样子的等等。你将会看到我们和其他的参与者如何让 API 的发现和使用变得更加强大和简便,并且还会看到创建 API 的其他可选项。

查看英文原文: Uri Sarid on RAML 1.0 Release and Latest MuleSoft API News

2016-08-18 19:001346

评论

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

与伙伴同行,Serverless 让创新触手可及

阿里巴巴云原生

阿里云 Serverless 云原生

C++智能指针和内存管理:使用指南和技巧

小万哥

c++ 后端 开发 内存管理 智能指针

史上最强升级!音乐制作软件Logic Pro中文特别版

Rose

Logic Pro Mac音乐软件下载 Logic Pro破解版

如何使用nobelium 1小时快速搭建你的私人博客

黑微狗‮‮

Blog nobelium

公开下载 | 300页《Java面试宝典》,收藏近万,多位翰林院成员推荐

Java你猿哥

Java MySQL spring 面试 ssm

【Python实战】Python采集热搜数据

BROKEN

三周年连更

一文看懂:StopWatch 源码解读

后台技术汇

三周年连更

新手如何学习挖漏洞?看这篇就够了【网络安全】

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

习惯了和AI聊天,感觉我更加社恐了......

FN0

人工智能 AI AIGC

MATLAB实现航天相关的仿真

袁袁袁袁满

三周年连更

硬核Prompt赏析:与Auto-GPT的“契约”

无人之路

ChatGPT Prompt

三种常用的以太网端口链路类型:Access、Hybrid和Trunk

wljslmz

网络 三周年连更

云原生技术实践营「微服务X消息队列专场」

阿里巴巴云原生

阿里云 微服务 云原生 消息队列

“双智天花板”闪耀鹏城,问界M5智驾版深圳首场尊享品鉴会成功举办

Geek_2d6073

针对容器层的五种攻击手段

穿过生命散发芬芳

容器安全 三周年连更

Django操作异步任务

乌龟哥哥

三周年连更

2023-05-03:给你一棵 二叉树 的根节点 root ,树中有 n 个节点 每个节点都可以被分配一个从 1 到 n 且互不相同的值 另给你一个长度为 m 的数组 queries 你必须在树上执行

福大大架构师每日一题

Go 算法 福大大

云原生底座之上,这些企业领跑行业的秘密

阿里巴巴云原生

阿里云 容器 微服务 云原生

xmind怎么导出为pdf?Xmind最全入门教程

Rose

Xmind 2022 XMind下载 思维导图软件

ZooKeeper 避坑指南: ZooKeeper 3.6.4 版本 BUG 导致的数据不一致问题

阿里巴巴云原生

zookeeper 阿里云 开源 云原生

appuploader 入门使用

雪奈椰子

KubeVela 稳定性及可扩展性评估

阿里巴巴云原生

阿里云 开源 云原生 KubeVela

Mac M1 安装SD不折腾版本

IT蜗壳-Tango

三周年连更

The Foundry Modo 16 16.1v3激活版 专业3D建模软件

Rose

3d建模 The Foundry Modo

查询最新汽车新闻资讯

DS小龙哥

三周年连更

一文了解 Zebec Labs 投资的 Coral Finance,空投计划或在不久推出

股市老人

【web 开发】PHP 特殊的对象引用 "$this"(62)

迷彩

php 面向对象 this指针 三周年连更

Flink应用框架层

阿泽🧸

flink 三周年连更

AI 作画火了,如何用 Serverless 函数计算部署 Stable Diffusion?

阿里巴巴云原生

阿里云 Serverless 云原生 AIGC

汽油价格变动实时短信通知

DS小龙哥

三周年连更

Uri Sarid介绍RAML 1.0的发布以及MuleSoft API的最新消息_DevOps & 平台工程_Jerome Louvel_InfoQ精选文章