我正在尝试设计一个基于微服务的SaaS应用程序,其中每个微服务将被打包到它们特定的Docker容器中。
我还有一个CLI工具(一个二进制文件),它的功能就像一把瑞士刀(也就是做了不止一件事情),还有一些微服务想要使用这个工具的各种功能,这使得这个工具在整个体系结构中非常重要。该工具可以使用/生成一个文件或流。
我无法在以下两项之间作出决定:
如何在两者之间作出决定?还有其他选择吗?
每个微服务可能需要同时生成/访问该工具的多个实例。为了进一步说明,微服务可以多次、顺序或并行地使用该工具来生成不同的输出,这些输出后来被聚合并传递到其他服务中。
发布于 2017-10-26 14:12:12
这取决于工具所做的事情以及它需要更新的频率。
如果您将该工具与每个服务一起打包,那么对该工具的更新意味着您需要对每个使用该工具的服务进行相应的更新。将工具打包为单独的服务将意味着对该工具的更新或修复只需要在一个地方部署,所有服务都会受到该更新的影响。
取决于工具,两者都可能是合适的。例如,JSON解析器更适合作为捆绑库,因为它非常稳定,不太可能发生显著变化,因此拥有单独服务的开销可能不值得。然而,一个进行某种业务计算的工具可能会看到频繁的更新,使其更适合作为单独的服务,特别是在服务之间保持一致性很重要的情况下。
https://softwareengineering.stackexchange.com/questions/359776
复制相似问题