采访Ross Mason:MuleSoft的新API平台

MuleSoft最近发布了他们的Anypoint平台,该平台支持云和on-premise服务的开发、部署和集成。InfoQ有幸在全球Mule Summit tour期间采访了MuleSoft的CTO,Ross Mason,并和他讨论了这个新平台。Ross曾经创建了开源的Mule项目。

InfoQ: MuleSoft最近发布了很多与服务和API管理相关的新产品:服务注册表(Service Registry,GA)、APIKit(当前还是beta版本)以及API管理器(beta)。可否请您告诉我们关于这些产品更多的信息?

RM:APIKit是为开发者提供的设计工具集,使用它我们可以遵循API最佳实践实现一致的API。APIKit是一种开源、声明式的模型,设计它是用来构建遵守良好API设计实践的REST API和框架——像一致的URL模式、版本控制、安全性等——从而帮助你更快地编码、更有效地测试,并为你的API编写文档。APIKit促进了API优先(API-first)的开发方法。它把实现和接口定义分离开来,从而让我们更易于快速整合API设计,并使用虚拟实现来试验,然后逐渐增加后端代码。这种方法意味着API本身可以独立于后端代码进行测试。

有趣的是:我们使用APIKit构建了Anypoint服务注册表的API。因为我们先拥有了用来做功能演示的API,几个月之后才创建好能工作的用户界面。

Anypoint服务注册表是为新企业创建的第一个SOA治理平台。我们从无到有创建了这个产品,使其支持混合的环境,它会治理所有服务和API,包括REST、SOAP和遗留的系统,现在你可以管理所有服务资产,不管它们是内部的还是外部的,在防火墙之后还是在云中,或是在单独的平台上。Anypoint服务注册表让我们可以轻松地发现服务并对其分类,在整个生命周期中对其进行管理,分析使用数据,并执行策略和契约。

Anypoint API管理器让我们可以快速、按照具体规模部署企业级的API。它可以管理你基于云的API,那可能运行在CloudHub上,或者使用Anypont API Gateway运行在你本地的私有数据中心上。为了让开发者参与并采用你的API,你可以使用APIhub——世界上最大的API目录和发布平台——创建自定义的开发者门户。

InfoQ: Anypoint平台除了包含这些新产品之外,还包括了现存的一些产品和服务,像Mule ESB、Cloudhub和API Connectors。Anypoint平台表明on-premise和云是有清晰界限的,还是一个统一体呢?

RM:Anypoint平台支持通过API与遗留系统、打包的应用、SaaS应用以及移动设备进行端到端的连接。它是一个连接on-prem和云服务的平台,其中集成可以使用Mule ESB以on-prem的形式运行,或者在Cloudhub的云中运行,还可以以混合的方式运行。平台是为了整合新旧形式的统一体而构建的。你可以选择想要使用的部分。我们的客户中有做完整on-prem集成的、混合集成的,也有做仅针对云集成的。关键的区别在于Anypoint平台让开发者可以选择在哪里集成他们的应用程序,并在单独一个平台上支持混合的集成架构。

InfoQ: 在过去我们看到过基于UDDI的服务注册表,它只支持SOAP web服务,而新一代的API管理器,主要支持基于REST和JSON的服务。服务注册表位于两种极端情况的哪个位置呢?

RM:UDDI完全以SOAP为中心,但它最大的问题就是,很多人都无法使用它。我们通过Anypoint服务注册表(ASR)采用了和其他注册表产品非常不同的方法。ASR是从头进行设计的,专注于可用性和对用户的零摩擦。ASR专注于运行时,并具有向活动的端点附加元数据以及产品的能力。对活动端点的管理意味着我们可以在运行时向端点增加行为。这些行为叫做策略,可以控制与端点请求相关的一切内容,像限流、安全性(认证和授权)、SLA、转换和虚拟化等。ASR另一个独特的方面是,它是基于云的治理平台,让企业可以管理任何类型的服务(不仅仅是web服务),不管是on-premise的还是在云中的。所有企业使用的系统都有新有旧,还有各种奇怪的系统,我们尊重这一点,构建出一种能够在多样化环境中工作的解决方案。

InfoQ: 服务注册表只作为SaaS产品提供。这如何与on-premise服务的策略执行和服务分析协作呢? 你能告诉我们更多关于Anypoint内部的信息吗? 它是基于哪种代理,agent还是proxy呢?

RM:Anypoint服务注册表是一种混合架构,带有作为安全多租户云发布的管理程序和资源库;每个用户都会获得包含元数据和策略的独立模式(schema)。而运行时查找、策略和契约的执行、数据搜集以及执行都是通过agent在on-premise上发生的。应用程序的策略、跟踪和处理都是通过agents在Mule servers on-premise完成,或者通过在与agents通信的CloudHub workers上面完成,那些agents会通过唯一令牌进行路由。这种混合的agent方法支持其他方法所不支持的大规模和性能,因为调用不是通过中心代理路由的。agent还提供了缓存层,以减少延迟,并提供一种安全的机制,如果与云服务器的连接中断,也可以离线工作。

InfoQ: 这对于服务虚拟化有什么好处呢?

RM:我们不需要在应用程序中硬编码端点的地址,而可以在运行时查询注册表,以基于元数据获得位置,这些信息可以缓存,当Anypoint服务注册表中发生变更的时候,新的策略可以被推送下去。缓存和推送通知都用于确保没有不必要的网络通信。

InfoQ: APIKit包含了Swagger。如果我使用APIKit,Swagger给了我们哪些立即可用的功能呢?

RM:Swagger是一种和语言无关的规范和框架,用于定义服务接口,主要用于描述RESTful的API。它专注于为API创建优秀的文档和客户端库。支持Swagger的API可以为API方法生成交互式的文档,让用户可以通过以可视化的方式试验,查看请求和响应、头文件和返回代码,从而发现API的功能。它本身就非常强大,但是Swagger框架还支持为多种流行的语言——包括JavaScript、Python、Ruby、Java、Scala等等——生成客户端代码。

InfoQ:REST服务的API契约一直是一种热门的观念话题。你认为Swagger会超越WADL等方法为这个讨论下个定论吗,或者是根本不使用契约?

RM:我们认为Swagger是一种应该支持的良好规范。它的方向是正确的,并且拥有积极的团队和社区,而不是由一些厂商来掌管的。我们在APIKit和APIhub发布平台中都采用了Swagger。尽管所有规范都有优势和劣势,但我们感觉Swagger已经很好,并提供了足够的价值,可以继续前行或者重新创建。Mule团队和Swagger的成员合作,协作开发了规范的一些边缘功能,以覆盖某些与API定义相关的一般需求。

我们查看了WADL,在过去实践过没有契约的方法,但是你意识到,随着API的数量暴增,需要一种更加结构化,而且低摩擦力的方法。使用APIKit,你会根据RESTful规范来设计你的API,并且我们会帮你处理版本管理、URL格式化、安全性、Swagger生成等工作。我们对API采用的是一种“rails”式的方法。

InfoQ: API管理器将会在今年稍后发布。它会增加哪些新功能呢? API Manager和服务注册表会互为补充,还是会应对完全不同的需求?

RM:在Anypoint服务注册表和Anypoint API管理器之间有一些类似的地方,但是API管理器更关注于外部的API,例如:对公众、合作社区开放,或者只是和外部消费应用构建的开发API。外部API为开发者提供了一个门户,让用户可以发现、测试和使用API。这样,Anypoint API管理器就有集成的功能,可以使用APIhub发布平台创建公有或私有的开发者门户。

API管理器构建在服务注册表之上,并支持关于治理、虚拟化和策略执行的类似功能。渐渐地,我们看到,企业想要创建所有API,就像它们都是外部API一样。这让架构师和开发者从客户的角度来思考所构建的API,这是很好的现象。我们相信APIkit和Anypoint API管理器为企业API发展的方向提供了很好的蓝图。

你可能感兴趣的:(采访Ross Mason:MuleSoft的新API平台)