我有一个关于软件部署的一般问题.在工作中,我们设计了一个通过Web浏览器使用的CRM.我最近被告知每个特定的客户都有自己的服务器(虽然服务器是我公司所有,但他们不是他们的办公室).
这让我很烦恼.在我看来,当一个人正在设计一个Web应用程序时,他必须记住,他将能够为他的所有客户端维持一个“软”运行(不是谈论复制或负载平衡),可能有不同的数据库每个,但一个应用程序…它特别有助于维护和保持每个人都与补丁和升级保持同步.我错了吗 ??你能用资源帮我更好地理解这个问题(我必须缺少合适的关键词,或者自己找到它们).我实际上不明白为什么他们在“为每个人设置一个集中式Web应用程序”和“为每个人提供一个分布式桌面应用程序”之间采用“第三种方式”.
谢谢 !
解决方法
这取决于方法.维护成千上万的服务器要容易得多,这些服务器与当今的技术相同(工作自动化的工具,如我们的码头工人,木偶,厨师,安全等等 – 数百个).
为每个客户提供单一服务器使您能够更精确地为每个客户规划资源,并让他们为实际使用的内容付费.它也使你的问题变小,这也有一些优点.
想象一下,您将在一个数据库中拥有1000个客户,总共拥有2TB数据.您的开发人员必须完全编写SQL查询才能使这样的数据库足够快.每个客户都有一个小型数据库,这个问题要小得多.
要考虑的另一个问题可能是安全问题.如果您必须在应用程序级别上分离您的客户,那么您的开发人员必须非常谨慎地选择他们选择的数据.如果每个客户有一个数据库,则泄漏其他客户数据的可能性较小.
另一方面,为所有客户提供单一实例使您能够在客户之间共享资源并节省硬件上的一些资金.
因此,在列出优缺点后,应在项目开始时做出这个决定.我还建议创建一些原型,所以你知道,例如部署过程,数据库迁移等对您来说不是问题.
根据我的经验,我个人建议为每个客户提供一个实例,如果你可以处理许多实例.