我正在使用sails.js作为后端开发Web应用程序。该应用程序将由不同的学校使用,我的第一种方法是为每个学校部署一个应用程序实例。
示例:
school1.application.com在school.application.com:8080上有一个sails app实例 school2.application.com在school.application.com:8081上有一个sails app的实例
每个实例都有一个Bitbucket存储库(或分支),并使用Git更新源代码。
出于维护目的,我正在考虑使用与所有Git存储库相连的仪表板,并从那里管理所有推送。
另一方面,对于所有学校只有一个实例更易于管理,但我如何为每个实例使用单独的数据库?拥有大约20所学校时,使用一个数据库的风险并不大?
使用第二种方法,如果申请失败,所有学校都会受到影响,而不是第一种。
我希望我的解释清楚。
感谢您的见解。
答案 0 :(得分:1)
帆船应用程序将托管在哪里?由你?即Nodejitsu,亚马逊等。或者该应用程序将部署在学校服务器上?
方法:如果您要托管应用程序,则可以创建一个应用程序并部署一次。将学校添加为模型,并在所有用户之间建立关系。即:
// Student.js model
module.exports = {
attributes: {
name : { type: 'string' },
lastname : {
type : 'string'
},
// School which the student belongs
school : {
model : 'school'
}
这样你就可以制作一个api来统治它们,并为你的客户提供一个具有日志访问权限的URL。您可以使用mongo或SQL,因为Waterline不关心您的数据库,只需在您的模型之间建立良好的关系。 检查水线和模型文档:https://github.com/balderdashy/waterline-docs/blob/master/associations.md
的方法: 您可以为每所学校单独部署,并且只使用一个数据库来统治所有学校,但请务必避免每次部署时擦除所有数据的风险,风帆会询问您是否要擦除所有数据在db或ALTER中的数据(小心这是因为它是一个实验性功能)。
的方法: 使用自己的数据库独立部署您的分支(如果学校将托管应用程序,这是最好的方法),只需更改每个部署的config / connections.js。如果您不想在需要维护或实施海关功能时关闭所有用户,这种方法是最好的,但您需要更多工作,因为您将分别维护20个实例。
我建议你采用第一种方法。