拥有单独的Web应用程序的标准是什么?

Vig*_*esh 6 architecture ruby-on-rails admin

我正在尝试设置一个Rails项目,该项目有两个逻辑上分离的组件,即管理面板和用户门户.从我到目前为止所读到的,有很多方法来设置它;

  1. 将单个Web应用程序与单个数据库结合使用
  2. 管理员和主要应用程序的单独Web应用程序,但使用通用数据库
  3. 使用单独的数据库分隔Web应用程序
  4. 将两者结合使用但部署单独的实例,一个以Admin身份运行,另一个以Main app身份运行

主应用程序将需要处理繁忙的流量,管理员适度低.
在四个选项中设置项目的最佳方法是什么?
还有什么可能是每个的缺点?
还有其他方法可以做得更好吗?

小智 9

关于可能的架构解决方案的一些想法

1.将单个Web应用程序与单个数据库结合使用

优点:

  • 您拥有一个项目配置下的所有内容,因此您可以避免两次配置项目设置.

  • 您可以重复使用代码,而无需在不同的目录中复制文件或引用文件,这有时会很麻烦.

缺点:

  • 安全性,可以将系统内容颠倒过来的功能与用户相关的代码在同一屋檐下找到,因此恶意用户可以利用管理相关功能的可能性更大.

2.为管理员和主要应用程序分离Web应用程序,但使用通用数据库

优点:

  • 您可以在不同的应用程序中将代码与不同的上下文分开,从而使事情变得更简单,并且两者的用户体验更加简洁.

缺点:

  • 由于第二个应用程序存在的原因是操纵数据和主应用程序,它必须读取并影响主应用程序中使用的数据; 因此减少了开销.

在大多数情况下,这将是最好的情况.

3.使用单独的数据库分隔Web应用程序

当第二个应用程序用于处理第一个应用程序和数据库的内容时,无法想到为什么要这样做.如果您要在第二个应用程序中使用与主应用程序无关的大量数据,那么这将是一个合理的选择.

4.组合两者但部署单独的实例,一个作为Admin运行,另一个作为Main应用程序运行

缺点:

  • 您将开发解决方案一,增加处理两个实例的复杂性.

  • 恶意用户可能会找到一种方法来登录管理实例并获取对管理级功能的访问权限.