场景:几个月后我将推出一款云软件。这将是一个面向多个客户的 SaaS 解决方案。该软件涉及医疗保健 o 静态加密是一项要求。它是用 .Net 编写的,首选数据库是 Sql Server。
每个客户至少需要 10GB 的数据库存储空间和 100GB 的文件存储空间。我正在寻找可以轻松从 1 个客户扩展到 10,000 个客户的云产品。现在 10,000 个客户相当于 100TB 的数据库存储空间和 1PB 的文件存储空间。
我正在考虑的三个提供商是 AWS、Azure 和 Rackspace(由于支持而首选)。
设置:选项 1:拥有一个可以随着客户增加而扩展的云服务器。但是,云服务器是否可以扩展到 100TB 的存储空间以容纳在其上运行的数据库?更重要的是,拥有一个虚拟机来保存所有客户的数据是一个好主意吗?如果不是,我如何将数据分布在多台机器上,同时让 Web 服务轻松识别要为特定客户查询哪个数据库?
选项 2:为每个客户端设置一个环境。我很乐意采用这种方式,因为它可以避免单点故障。Azure 网站/Rackspace CloudSites 类型的设置。但这里的问题是如何加密数据库?Sql Server 确实提供 TDE,但仅限于企业版。此外,在这种情况下我如何自动升级。升级可能意味着新代码和/或数据库架构更改。
选项 3:您认为适合这种情况的任何其他选项。
谢谢,安库尔
答案1
选项 1:拥有一个可以随着客户增加而扩展的云服务器。
不聪明。就像“i*****”。为什么只有一台服务器?如果你这样扩展 - 这永远不划算。将云作为云来运行。“微集群”的机器(2-3 - Web 前端、数据库、文件存储,可能带有高可用性的复制),然后在你需要的尽可能多的实例中使用它们。根据需要创建新的实例以提高容量。不需要“SUUUUUPPPPPER BIIIIIIGGGG SSSIIIIIIIINNNNNNGGGGLLLLEEEEE SSEEEEERRRVER” - 那只会花费成本。
然后,正如我所说,在每个微集群中都使用标准机制来获得 HA - Web 前端是标准的简单方法,文件存储需要一些复制,数据库也是如此。重点是 - 即使某个微集群出现故障 - 也不会影响所有客户。
另外,在这种情况下我该如何实现自动升级
脚本是专业管理员的标准工具,可让您完全自动化地完成此操作 - 您认为 Google 如何更新数十万台服务器?也许可以聘请有一定经验的管理员来规划这一点 - 因为我们无法为您做到这一点。
升级可能意味着新代码和/或数据库模式发生变化
是啊,那又怎么样?脚本可以做到这一点 - 关闭微集群前端和处理、进行备份、运行必要的更新并重新启动,所有这些都在商定的维护窗口内完成。面向初学者的专业管理。使用 Windows?SCOM、SCCM 是专门为此而制作的工具。