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

标签 ruby-on-rails architecture

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

  • Admin 行为,允许登录用户管理的内容 他们的投资组合
  • Portfolio Display 行为,呈现用户的 面向普通访客的作品集
  • Conversion Funnel 行为, 显示有关服务的信息并吸引新用户签名 上
  • Super Admin 行为,显示有关其他人的统计信息 对服务所有者的三种行为

目前,这四组行为被分解为命名空间 Controller ——但它们都共享相同的模型。我想知道,由于系统的四个部分几乎没有共享任何行为,因此将应用程序拆分为四个独立的应用程序或引擎(并将任何共享行为提取到 gem 中)是否有任何好处。

例如,处理用户统计数据的系统部分不需要“了解”在投资组合中呈现 YouTube 嵌入,处理显示投资组合的系统部分不需要“了解” A/B 测试以及处理注册新用户的系统部分除了注册新用户外不需要“了解”太多其他内容。

此外,我想解决的一个具体问题是,我希望没有经验的团队成员能够为网站中处理新用户注册的部分贡献一点代码。如果在网站的那部分将一两个错误推到生产环境中,这不会是世界末日,但在显示用户组合的系统部分中不允许在生产环境中出现错误是极其重要的。

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

非常感谢!

最佳答案

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

可安装的引擎也可以实现您的目标,但共享起来比较困难,因为它似乎最好是单独使用。

一种面向服务的架构,其中包含许多面向功能的应用程序,可向一个或多个前端应用程序提供 API。前期工作会更多,但如果您发现总服务随着时间的推移变得越来越复杂,从长远来看可能会有所返回。

有趣的选择!

关于ruby-on-rails - 将单个复杂应用程序拆分为单独的应用程序是否有利于代码库的可维护性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11143229/

相关文章:

ruby-on-rails - 如何在 Rails 中验证时间?限制用户每天发帖一次

ruby-on-rails - mongoid_fulltext utf-8 特殊字符

Jquery 选择从 json 添加值

architecture - 使用 MVC5 的企业级应用程序架构的最佳实践是什么?

ruby-on-rails - Blob 数量大于上传文件数量

ruby-on-rails - 安装 FeedZirra 时出错

php - 这个短语 "Try to make you architecture more horizontal rather than vertical"是什么意思?

c# - 如何静态访问 .resx 文件

Mysql架构最佳实践: user attributes

java - 文件夹访问权限 DMS