如何将Rails应用程序分解为不同的小应用程序生态系统

Cha*_*PMP 8 soa ruby-on-rails ruby-on-rails-3.1

我的团队一直在单片Rails应用程序中开发一堆模块供内部使用.这些模块例如是请假,员工信息,任务/待办事项等.每个模块都有自己的目的,但不知何故与某些信息相关联,如员工档案和用户认证.每个模块都分配了一个开发人员,他们将代码提交到同一个Rails应用程序.目前,维护代码和规模非常困难.现在,我正在研究将应用程序分解为小型分布式应用程序并使其成为一个生态系统.这是我正在寻找的概念:

  • 应该有一个主应用程序来维护其他客户端应用程序的视图.更好的是,它充当了其他客户端应用程序插入其中的平台.员工登录此主应用程序以访问客户端应用程序.
  • 主应用程序应使用AJAX或其他方式(未决定)呈现客户端应用程序的视图.
  • 虽然,我想分解应用程序,但每个应用程序仍应能够从生态系统中的其他客户端应用程序查询资源/数据,如人员配置文件.
  • 实际上,我还没有决定每个应用程序的交互.向我们思考RESTful(未决定).
  • 它应该支持开发环境,每个开发人员可以独立开发每个应用程序 因此,在自己的git存储库中维护自己的代码.这可能是首先分解应用程序的主要目的.

我正在阅读使用Ruby on Rails的面向服务的设计书,但似乎他们专注于将应用程序分解为小型的不同服务,而我希望拥有小型的不同应用程序.只是想知道是否还有其他办法.

很抱歉这个问题很长,问得太多了.只是想知道你是否处于相同的情况,并可以指导我阅读一些文章,社区,书籍,以便我可以继续进行更多的研究.

mgu*_*mon 4

啊,重构的乐趣。尝试将应用程序构建为逻辑组以便各个部分可以解耦可能是一个棘手的问题。

我强烈建议研究Engines,其中Engines 与 Mountable 的信息非常丰富。这允许您构建一个可以打包为 gem 的迷你 Rails 应用程序(也称为引擎)。自定义引擎 gem 捆绑到 Rails 应用程序中,提供一整套可配置功能(模型、控制器、视图等)。

面向服务的架构的有用性在很大程度上取决于您推送和拉动的数据类型。话虽这么说,Rails 确实适合 RESTful,所以通过这条路线你可以得到很多实惠。