本篇文章主要介绍了"微服务API模拟框架frock介绍",主要涉及到方面的内容,对于软件工程感兴趣的同学可以参考一下:
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2016/02/introducing-froc...
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2016/02/introducing-frock
Urban Airship是一家帮助领导品牌吸引其移动用户的公司,他们可以帮助这些公司在客户下载完应用后就与公司建立起高价值的关系。目前,Urban Airship已经有了数量庞大的客户群,涵盖的领域有零售业、媒体与娱乐、运动与旅游、医疗等。这些公司都通过Urban Airship来增强其与客户的连结性。近日,来自于Urban Airship的开发者开源了他们所使用的一款开发工具:frock,该框架用于简化模拟服务套件的管理。如果你在工作中使用了面向服务的架构,那么frock是很值得你去尝试的一个工具。
解决开发环境的复杂性
Urban Airship使用了微服务,这对于一家SaaS公司来说是非常常见的模式:我们有很多服务,每个服务都包装了少量的功能,并且每个服务都能通过定义良好的协议为其他服务所请求。这对于可伸缩性与稳定性来说是非常棒的,不过对于开发者与其环境来说却产生了问题。我们的团队从事Go的开发工作(Go是Urban Airship Engagement仪表盘产品),它是最早期的Urban Airship代码基之一,包含了大量的功能:消息生成与报告、账单与使用报告,以及服务管理(比如说前不久发布的Urban Airship Connect)。Go会调用大量的服务,这导致团队的开发环境产生了很多问题。之前,我们的环境包含了一个单体的、运行于Vagrant之上的虚拟机,它依赖于仪表盘的所有服务,这么做有很多问题:
- 速度非常慢。服务与依赖的数量非常多,包括几种不同的数据库都需要保持在运行状态才行。
- 非常脆弱。我们的团队缺少JVM专家。上游对服务的修改会破坏我们的开发环境,导致我们很多人都不敢更新。
- 导致开发者无法继续工作。当开发者的环境被破坏后,他们常常无法继续工作。环境的复杂性意味着这种破坏是会常常发生的。这会浪费大量的时间,并导致开发者非常沮丧。
- 难以将数据导入到环境中。在开发阶段,你需要多种多样的数据来测试代码。之前的环境通常要求你手工运行测试数据,这是通过与持有数据的服务进行直接的通信来做到的。
frock就是用来帮助我们解决上述所有难题的优秀工具。
何为frock?
我们可以通过frock使用自己定义的数据来模拟服务,使用团队习惯的语言与运行时来编写模拟服务:JavaScript与Node.js。frock的核心只提供了如下一些功能:
- 高度可配置的路由,这使得我们可以轻松拦截对服务的调用。
- 基于插件的架构,它并未对如何编写模拟服务进行强制性约束。
- 针对常见任务的开箱即用的通用插件,即一个静态文件服务器与一个代理服务器。
- 支持HTTP与Socket服务。
- HTTP中间件支持,可以自定义服务或路由的行为;比如说,它提供了一个延迟中间件,可以延迟请求的时间。
所有这一切都是通过一个JSON配置文件(根据约定,该文件名为frockfile.json)来配置的,并且通过包含了所有自定义模拟服务的仓库进行共享。frock从grunt与gulp获得了灵感,其配置就位于你的项目当中。对于HTTP模拟来说,一个frockfile会包含一个简单的服务与路由定义,比如说: