Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将手动部署的单实例应用程序重构为客户端部署的多实例或多租户应用程序_Javascript_Web Applications_Deployment_Architecture_Meteor - Fatal编程技术网

Javascript 如何将手动部署的单实例应用程序重构为客户端部署的多实例或多租户应用程序

Javascript 如何将手动部署的单实例应用程序重构为客户端部署的多实例或多租户应用程序,javascript,web-applications,deployment,architecture,meteor,Javascript,Web Applications,Deployment,Architecture,Meteor,我有一个meteor.js应用程序,可以很好地为单个实例手动配置和部署 现在是时候重构应用程序的体系结构,并围绕应用程序构建基础设施,使其能够在客户端部署和更新 我想让客户来到一个页面,他们可以注册应用程序,一个实例或租赁将自动为他们设置,他们可以开始使用它。在后端,将有用于管理应用程序更新的基础结构 需要做出一些明显的决定: 我是否将其重构为多租户?(更多应用程序代码修改) 我是否将其重构为多实例?(更多基础架构构建和代码) 是混合动力车吗?(一个应用程序但多个数据库) 要确定上述问题的正

我有一个meteor.js应用程序,可以很好地为单个实例手动配置和部署

现在是时候重构应用程序的体系结构,并围绕应用程序构建基础设施,使其能够在客户端部署和更新

我想让客户来到一个页面,他们可以注册应用程序,一个实例或租赁将自动为他们设置,他们可以开始使用它。在后端,将有用于管理应用程序更新的基础结构

需要做出一些明显的决定:

  • 我是否将其重构为多租户?(更多应用程序代码修改)
  • 我是否将其重构为多实例?(更多基础架构构建和代码)
  • 是混合动力车吗?(一个应用程序但多个数据库)
要确定上述问题的正确答案,需要进行哪些测试?每种方法的优点和缺点是什么

一旦做出决定,是否存在指导或启发适当重构的设计模式,和/或对于尚未构建多租户或多实例应用程序的人,存在哪些学习资源


如果是多实例,那么实例和更新应该是应用程序本身的一部分,还是应该构建另一层代码和工具来管理该部分?

我在这里列出了3个问题,您可能会发现将它们拆分为单独的线程很有价值。无论如何:

1) 通过什么测试来确定正确的体系结构?好吧,让我们来看看支持每种体系结构需要多少成本,以及每种体系结构的实现速度,以及您有多少等待的客户。因为,坦率地说,你可能已经有了一个偏好,除非你愿意把它放在一边,否则我在这里给出的答案是没有意义的。如果这是为了一个企业,请记住收入规则——没有收入,即使是最漂亮、最优雅的架构也不重要。有了收入,您可以及时修复大多数架构错误

2) 多租户、可嵌入应用程序的良好设计模式是什么?我不确定设计模式是不是正确的答案,而是数据管理和测试的严格性。这里的目标是确保客户机A的客户永远不会得到客户机B客户数据的提示,即使只有一个人同时是客户机A和客户机B的用户。对API密钥和会话密钥管理的关注是当务之急


3) 应用程序中的实例管理,还是单独的工具?我要冒险一试,并建议如果不分析您当前的应用程序和基础架构,没有人能够满意地回答这个问题。也许你有一个应用程序,大部分是自部署的,只需要几行就可以建立一个新的数据库,或者启动一个新的AWS实例,或者其他什么。。。或者你有一个高度手工的过程。这也可能受到问题1中的架构选择和/或您有多少时间的影响。参见问题1中关于收入的注释。

我看了你的答案,对我来说,收获是我需要自学。对于1)我真的没有偏好,这可能是因为我是一个noob,不理解选择一条路线与另一条路线的全部或部分含义。。。我不知道什么需要更长的时间,因为我也不知道如何实现这两个目标。同样,我也没有预见到支持这两种架构的成本。2)模式可能是错误的概念,但我的观点是,关于如何制作单实例应用程序,有大量的教程和资源,但我几乎找不到任何关于如何将该应用程序构建为多租户应用程序,或者如何构建启用和管理多实例变体所需的基础设施的信息。。。我想我可以尝试一下,一次又一次地尝试,直到它开始起作用,但我觉得这是一个已经被解决了很多次的问题,如果我自己尝试做这件事,而不至少环顾四周看看其他人是如何解决的,那将是一个坏主意如果这是为了一个企业,现在有了真正的潜在客户,你将从专业程序员的参与中获益,并承担销售和产品所有权。如果这是一个学习练习,那么就没有必要担心完美的架构到底是什么。完美不是目标,知情和有指导的学习才是目标。。。也许答案是事实上,你只能通过尝试和错误来了解这些东西,没有办法从已经在这个领域工作过的人那里收集最佳实践或好的方法论,因为多租户是很难做到的。许多拥有大量全职员工的成熟公司都在与真正的多租户制作斗争。这就是为什么没有教程的原因;事实上,这是非常罕见的,用一层基础设施烟雾和镜子伪装,并捆绑在专业服务中。最好只是试着看看什么是有效的。:)