我读过很多建筑,比如N层,洋葱,.。但我正在设计一个大型系统,它由一些大型数据库工作,并为另一个应用程序/客户端提供大量服务。
另一方面,我们的系统必须具有很强的可扩展性。我们系统中命名模块或子系统的部分具有自己的模型、业务逻辑以及可能拥有的UI或服务。甚至有些模块没有任何UI或任何服务来服务于系统之外,这些模块只是扩展了我们的系统。
我是设计师团队的一员,我正在为我们的系统考虑以下架构:

它是一个洋葱架构,但是数据库的实体将在每个模块中定义。每个模块将由一个单独的小组开发。它们之间没有依赖关系,但是我们的数据库是相同的!
我所关注的问题如下:
发布于 2015-03-03 13:55:12
当你说“大”的时候,我假设你说的是至少一百万行代码。假设这是正确的,您应该真正地查看一个SOA体系结构来分离您的“模块”。根据您所使用的语言,有许多优秀的RESTful体系结构非常适合于公开数据库层服务。
不要进行代码级依赖,也不要允许依赖项在数据库层中爬行.对它们进行强解耦,并使模块在网络层上相互通信。这使它们保持很强的独立性,并限制了任何更改的范围。
它还允许您同时在生产中拥有多个版本,从而允许应用程序生态系统独立发展。
如果您有独立的UI,那么这一点尤其正确。要求所有利用您的核心应用程序同时升级的应用程序都是一个后勤噩梦。
我们使用这种方法已经有好几年了,我们使用雷斯特来公开核心数据库级别的服务,让其他服务和应用程序使用它们。它非常有效,允许应用程序按照自己的计划进行进化和部署。
它还允许独立地重构单个数据库“模块”。
https://stackoverflow.com/questions/28825964
复制相似问题