AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 789505
Accepted
Shirraz
Shirraz
Asked: 2016-07-13 23:19:36 +0800 CST2016-07-13 23:19:36 +0800 CST 2016-07-13 23:19:36 +0800 CST

Web 应用程序部署:为所有客户或每个客户自己的一个版本

  • 772

我有一个关于软件部署的一般性问题。在工作中,我们设计了一个通过 Web 浏览器使用的 CRM。最近有人告诉我,每个特定的客户都有自己的服务器(虽然这些服务器归我的公司所有,但它们不是他们的,也不在他们的办公室里)。

这让我有点困扰。在我看来,当一个人在设计一个 Web 应用程序时,他必须牢记他将能够为他的所有客户端维护一个“软”运行(不是在谈论复制或负载平衡),也许不同的数据库用于每个,但一个应用程序......它特别有助于维护和让每个人都保持最新的补丁和升级。我错了吗 ??能否通过资源帮助我更好地理解这个问题(我必须缺少正确的关键字才能自己找到它们)。我实际上不明白他们为什么要在“每个人一个集中式 Web 应用程序”和“每个人一个分布式桌面应用程序”之间经历“第三种方式”。

谢谢 !

deployment web-applications
  • 3 3 个回答
  • 1796 Views

3 个回答

  • Voted
  1. Best Answer
    Yarik Dot
    2016-07-13T23:46:51+08:002016-07-13T23:46:51+08:00

    这取决于方法。维护与当今技术相同的数千台服务器要容易得多(用于作业自动化的工具,例如我们的 docker、puppet、chef、ansible 等 - 数百台)。

    为每个客户配备一台服务器使您能够更准确地为每个客户规划资源,并让他们为实际使用的资源付费。它还使您的问题更小,这也有一些优势。

    想象一下,您将在一个数据库上拥有 1000 个客户,总共有 2TB 的数据。您的开发人员必须完美地编写 SQL 查询才能拥有足够快的数据库。对于每个客户的小型数据库,这个问题要小得多。

    另一个需要考虑的问题可能是安全性。如果您必须在应用程序级别上区分您的客户,您的开发人员必须非常小心他们选择的数据。如果每个客户都有一个数据库,那么泄露其他客户数据的机会就会更小。

    另一方面,为所有客户提供单一实例使您能够在客户之间共享资源并节省一些硬件费用。

    所以,这个决定应该在项目开始时做出,在列出优点和缺点之后。我还建议创建一些原型,这样您就知道部署过程、数据库迁移等对您来说不是问题。

    根据我的经验,如果您可以处理管理多个实例,我个人建议为每个客户创建一个实例。

    • 6
  2. Ondra Sniper Flidr
    2016-07-14T00:03:51+08:002016-07-14T00:03:51+08:00

    为每个客户提供单独的服务器可以从隔离客户数据中受益,并允许您拥有多个版本的应用程序。但也有一些缺点。您将在服务器上花费更多的钱(因为您不能轻松地在客户之间共享资源)并且您确实可以很好地管理部署。此外,如果您在所有客户端中只有一个数据库,则必须确保数据结构或库的要求不会发生重大变化。您还需要有一些地图客户端 - 应用程序版本来管理。

    我的环境中的每个客户端都有相同版本的软件,这有助于我们维护和扩展服务器(我可以部署与其他服务器相同的新服务器并将其添加到负载均衡器)。此外,我不必为每个客户使用不同的端点。

    • 3
  3. jdog
    2016-07-15T00:25:29+08:002016-07-15T00:25:29+08:00

    我认为这是一个相当早期的设置,以下是为什么我认为在资源开销之上保留单独的服务器是一个坏主意的一些原因:

    • 存在为一个和另一个客户开发扩展的重大风险,这会导致进一步的冲突。出于短期业务原因,这可能会导致您永远无法摆脱的技术债务。将来合并这些相互冲突的功能可能变得太难了,您最终可能会选择在旧版本上放弃这些自定义客户端,或者在您不想这样做时坚持使用它们。

    • 跨国或多国客户甚至行业中的一系列收购可能需要一个数据分离的系统,但可以从总部报告。这将迫使您在任何情况下都拥有多租户版本,从而抵消了数据库分离的好处。

    • 所有成功的 Saas 公司最终都将聚合数据用于组合匿名功能,例如行业统计、学习机会等。我已经看到 Xero 和 Mailchimp 成功使用了这一点,我认为这些数据非常有价值。

    • 1

相关问题

  • 网络监控产品公司的部署工程师需要具备哪些技能?[关闭]

  • Mac OS X 的无人值守安装

  • Firefox 打包以包含用于网络安装的插件

  • 我应该将 Rails 应用程序部署到哪个目录?

  • 将 iChat 设置部署到多个用户

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve