Architecture 体系结构:微服务、多种需求和共享数据

Architecture 体系结构:微服务、多种需求和共享数据,architecture,microservices,Architecture,Microservices,情景: 我们有一个中等规模(100K++loc)的基于微服务的项目,内容庞大且发展迅速 我们将此(数据和内容)销售给多个客户,每个客户的要求每次都略有不同,包括数据和内容;而且他们需要非常高的可用性 我们希望避免这样的问题,即为一个客户机所做的(代码或数据)更改可能会对其他客户机的部署产生不利影响 同时,我们需要在客户端之间共享一些数据(以及对该数据的进一步更改) 我们探讨的具体解决方案: 单一部署,特定于客户端的IF语句: 我们目前使用这个,这需要手动处理哪个客户机得到什么 要重新测试

情景:

  • 我们有一个中等规模(100K++loc)的基于微服务的项目,内容庞大且发展迅速
  • 我们将此(数据和内容)销售给多个客户,每个客户的要求每次都略有不同,包括数据和内容;而且他们需要非常高的可用性
  • 我们希望避免这样的问题,即为一个客户机所做的(代码或数据)更改可能会对其他客户机的部署产生不利影响
  • 同时,我们需要在客户端之间共享一些数据(以及对该数据的进一步更改)
我们探讨的具体解决方案:

  • 单一部署,特定于客户端的IF语句:

    • 我们目前使用这个,这需要手动处理哪个客户机得到什么
    • 要重新测试整个功能矩阵,以确定更改是否会对任何客户机产生不利影响,是极其困难的
  • 多部署:这里的问题是8+个相互高度依赖的微服务;这将需要:

    • 为每个客户端设置新的源repo和部署
    • 对特定客户机的代码库进行特定于客户机的更改,并部署到其集群
    • 每个客户之间的代码和数据输入将需要审查所有数据,并更改代码以产生不利影响

在这里,我要谈谈堆栈溢出的好社区:您如何解决这个问题,使我们保持易于更改管理的同时避免从一个客户端到另一个客户端的不利影响?

您可以使用基于容器的体系结构,如docker和openshift。容器将为每个客户机提供服务级别隔离。如果您想要企业级体系结构,可以使用红帽支持的openshift。为了在不同的客户端和微服务之间共享数据访问,gcp和aws可以使用网络文件系统。提供轻松的可扩展性和网络安全性。

没有真正了解您的问题与Node的关系?该项目位于Node.js;但你是对的,问题是语言不可知论。移除标签。