我们将使用以前是我们业务专有的基于Web的功能性软件,并引入许可选项,以便其他企业可以使用它.
在两种方法之间进行选择时,应考虑哪些注意事项:
>修改代码以允许多个用户
>安装代码的多个实例;每个新用户一个.例如.完全重复的独立数据库PHP.
该软件基于PHP.我们打算提供多个包裹.服务器负载随着每个许可证的使用量的增加而呈平方增长,这是由于计划的cron作业会产生大量处理.
更新:尽管唯一的答案表明我们不应该这样做,但我们仍然倾向于修改代码以允许多个用户.还有其他人有意见吗?
更新2:出于安全原因,我们再次将位置更改为多实例解决方案.
解决方法:
在过去几个月中自己完成此操作后,我的建议是不做我们所做的事情,即修改代码以允许多个用户使用.原来那是一个兔子洞,将介绍:
>代码复杂度(添加新的简单功能通常会变得困难)
>错误(由于复杂性增加)
>安全问题(花费了大量时间来确保客户端无法访问彼此的数据)
>性能问题(具有约5,000行的表将突然增长到〜5,000,000行.甚至没有引起注意的性能问题也突然导致了约20秒的页面加载时间)
如果我们能再做一次,我们的方法将是:
>将每个客户端放在一个子域上(甚至允许他们提供自己的完整域名),从而使您可以为每个客户端拥有一个单独的apache虚拟主机.购买诸如cPanel之类的许可证值得认真考虑,并研究如何自动或半自动创建新帐户.
>每个客户都有一个单独的数据库.每个都有不同的数据库密码.这将提供出色的安全性和出色的性能(所有数据库(及其表)将很小).
>由您决定是否在所有这些客户端之间共享实际的php源代码,或者为每个客户端单独拥有一个副本.文件的全局目录是完全合理的,它将使更新变得容易,而单独的副本将使自定义更加容易.也许在这里混合是正确的方法.
有一天,我们甚至可能会花掉过去六个月中完成的大部分工作,重新开始使用这种方法.
乍看之下,这似乎会增加服务器负载,但实际上,如果您有足够多的客户端来考虑负载,那么您将希望能够将客户端分布在多台服务器上.如果隔离得很好,那真是小菜一碟.