我工作的地方它变得明显,一些管理任务应该是从公共网站独立多数民众赞成成长无论是在用户基础和功能点方面的站点.我想知道最好的办法是什么.
例如,该网站有一个很大的社交组件和一个公共销售界面.但与此同时,管理部分还有后台任务,批量上传处理,仪表板(长时间运行的查询)和客户关系工具,我希望不会受到公共交通高峰的影响(或影响公众 - 面对响应时间).
该站点运行在一个相当标准的Rails/MySQL/Linux堆栈上,但我认为这更像是一个架构问题,而不是一个实现问题:主要是,如何在这些不同的应用程序之间保持数据和业务逻辑同步?
我正在评估的一些策略:
1)在另一台机器上创建面向公众的数据库的从数据库. 提取出所有模型和库代码,以便可以在应用程序之间共享.为管理界面创建新的控制器和视图.
我对复制的经验有限,甚至不确定它是否应该以这种方式使用(大多数时候我已经看过它,它是用于扩展同一应用程序的读取功能,而不是具有多个不同的应用程序) .如果从站不在同一网络上,我也担心潜在的延迟问题.
2)创建新的更多任务/部门特定的应用程序,并使用面向消息的中间件来集成它们. 我读了一段时间的企业集成模式,他们似乎主张分布式系统.(或者,在某些情况下,基本的Rails风格的RESTful API功能可能就足够了.)但是,我有关于数据同步问题的噩梦以及这将带来的大规模重新架构.
3)两者的混合物. 例如,某些后台任务所需的唯一公共信息是只读完成时间或状态.将它放在一个完全独立的系统并将数据发送给公众是否有意义?同时,用户/组管理功能将在共享数据库的单独系统上运行?缺点是,这似乎保留了我对前两个问题的许多担忧,特别是重新构建.
我确信答案将高度依赖于网站的特定需求,但我很想听听成功(或失败)的故事.