微服务 - 使用严格类型来强制执行A​​PI?

时间:2017-03-27 21:01:45

标签: json haskell service types microservices

我正在写两个单独的服务。第一个服务的输出提供给第二个服务。我应该使用共享库,以便类型检查器可以确保接口匹配吗?

"产品"服务需要Application并生成Products

"得分"服务需要ApplicationProducts并生成Score。它使用的信息不到一半。

我是否应该拥有"分数"完全匹配"产品"的输出,即使它没有使用所有信息?两者都将由同一客户端使用,并且不必进行任何转换将非常方便。我可以使用只包含类型的共享库和可以强制执行此操作的json序列化代码。构建系统可以依赖于共享库的旧版本,因此只要我保持向前兼容,我就不需要更新"分数"当字段被添加到"产品"的输出时。

或者我应该得到"分数"重塑自己的界面概念,只需要它需要的领域?字段名称可能不匹配,使客户端更难连接它们。优点是接口完全解耦。

1 个答案:

答案 0 :(得分:0)

如果您真的想要遵循微服务方式,那么我就说不要使用共享库。

这个概念的重点是解耦服务。如果你创建一个共享库,其中包含一些"相同的"对于多个服务,每次服务想要增强这些类时,都必须在共享库中完成,迫使其他服务适应。

将服务分离使每个服务都可以单独发展。