Ruby on rails 将单个复杂应用程序拆分为单独的应用程序是否有利于代码库的可维护性?

Ruby on rails 将单个复杂应用程序拆分为单独的应用程序是否有利于代码库的可维护性?,ruby-on-rails,architecture,Ruby On Rails,Architecture,我是Rails应用程序的主要开发人员,该应用程序允许客户管理艺术家作品集网站。系统包含四种不同类型的行为: 管理行为,允许登录用户管理 他们的投资组合 公文包显示行为,显示用户的 一般访客的档案袋 转换漏斗行为 显示有关服务的信息并吸引新用户签名 向上 超级管理员行为,该行为显示有关其他管理员的统计信息 服务所有者的三种行为 目前,这四组行为被分解为具有名称空间的控制器,但它们都共享相同的模型。我想知道,由于系统的四个部分几乎不共享任何行为,将应用程序拆分为四个独立的应用程序或引擎(并将任何

我是Rails应用程序的主要开发人员,该应用程序允许客户管理艺术家作品集网站。系统包含四种不同类型的行为:

  • 管理行为,允许登录用户管理 他们的投资组合
  • 公文包显示行为,显示用户的 一般访客的档案袋
  • 转换漏斗行为 显示有关服务的信息并吸引新用户签名 向上
  • 超级管理员行为,该行为显示有关其他管理员的统计信息 服务所有者的三种行为
目前,这四组行为被分解为具有名称空间的控制器,但它们都共享相同的模型。我想知道,由于系统的四个部分几乎不共享任何行为,将应用程序拆分为四个独立的应用程序或引擎(并将任何共享行为提取到gems中)是否有任何好处

例如,系统中处理用户统计信息的部分不需要“知道”呈现YouTube嵌入到公文包中,系统中处理显示公文包的部分不需要“知道”A/B测试,系统中处理注册新用户的部分不需要“知道”除了注册新用户,还有很多其他的事情

此外,我想解决的一个具体问题是,我希望一个没有经验的团队成员能够为站点中负责注册新用户的部分贡献一点代码。如果有一两个bug被推到站点的那个部分生产,这并不是世界末日,但在显示用户公文包的系统部分,不允许bug进入生产,这一点非常重要

所以,就代码库的可维护性和易读性而言,将这四个组件分离为单独的应用程序是否有意义?在多大程度上,这样做只会将复杂性推到系统的另一个层面,而不会消除复杂性?通过创建更干净的解耦类和模块,这种类型的分离是否能更好地实现


多谢

A半隔离引擎将实现您允许思洛代码工作的目标,并且您可以轻松共享所有资源,例如样式表(这可能很重要,因为您仍然提供一种服务)

可安装的引擎也可以实现您的目标,但共享更困难,因为它似乎最好作为隔离引擎使用

面向服务的体系结构具有许多面向功能的应用程序,可向一个或多个前端应用程序提供API。这将是更多的前期工作,但从长远来看,如果你看到整个服务随着时间的推移变得越来越复杂,它可能会有回报

有趣的选择