我的团队一直在单片Rails应用程序中开发一堆模块供内部使用.这些模块例如是请假,员工信息,任务/待办事项等.每个模块都有自己的目的,但不知何故与某些信息相关联,如员工档案和用户认证.每个模块都分配了一个开发人员,他们将代码提交到同一个Rails应用程序.目前,维护代码和规模非常困难.现在,我正在研究将应用程序分解为小型分布式应用程序并使其成为一个生态系统.这是我正在寻找的概念:
>应该有一个主应用程序来维护其他客户端应用程序的视图.更好的是,它可以作为其他客户端应用程序插入其中的平台.员工登录此主应用程序以访问客户端应用程序.
>主应用程序应使用AJAX或其他方式(未决定)呈现客户端应用程序的视图.
>虽然,我想分解应用程序,但每个应用程序仍应能够查询资源/数据,例如生态系统中其他客户端应用程序的人员配置文件.
>实际上,我还没有决定每个应用程序的交互.向我们思考RESTful(未决定).
>它应该支持开发环境,每个开发人员可以独立开发每个应用程序.因此,在自己的git存储库中维护自己的代码.这可能是首先分解应用程序的主要目的.
我正在阅读使用Ruby on Rails的面向服务的设计书,但似乎他们专注于将应用程序分解为小型的不同服务,而我希望拥有小型的不同应用程序.只是想知道是否还有其他办法.
很抱歉这个问题很长,问得太多了.只是想知道你是否处于相同的情况,并可以指导我阅读一些文章,社区,书籍,以便我可以继续进行更多的研究.
解决方法
啊重构的乐趣啊.尝试将应用程序组织成逻辑组以使部件可以解耦,这可能是一种棘手的舞蹈.
我强烈建议调查Engines,Engines vs Mountable非常有用.这允许您构建可以打包为gem的迷你Rails应用程序(也称为引擎).自定义Engine Gems捆绑到Rails应用程序中,提供一整套可配置功能(模型,控制器,视图等).
面向服务的体系结构的用处很大程度上取决于您推送和使用的数据类型.话虽这么说,Rails真的很适合RESTful,所以你可以通过这条路线获得大量收益.