我为最终用户Azure应用程序构建了一个实用程序(启动任务)。 该启动任务将通过REST API(托管在东亚)将该webrole应用程序(根据最终用户选择托管在任何区域)上的一些数据发布到数据库(托管在东亚)。
因此,如果最终用户在同一地区(东亚)托管了他们的应用程序,那么Azure不会为我和最终用户的数据传输付出任何代价(如果我理解错误,请更正我)。
在另一种情况下,如果最终用户在其他地区托管了他们的应用程序,那么最终用户将花费数据转移到另一个地区的REST API。
我为降低此成本所做的工作,我已在所有地区设置REST API,并在启动任务中告诉用户根据他们将部署其应用程序的区域设置特定REST API的路径。现在,在这种情况下,最终用户不会为数据传输付出任何代价但是我的REST API(托管在不同地区)将数据传输到数据库(托管在东亚),因此它将花费我以及托管REST API在所有地区降低最终用户成本。
在上述情况下,是否有办法使用共享数据库降低成本并删除托管在所有区域的多个REST API?另外,请建议是否有更好的解决方案来降低我和最终用户的成本。
答案 0 :(得分:1)
有趣的场景:您基本上让最终用户为自己部署应用程序到所选区域?通过REST API上传数据库的目的是什么:备份还是实时数据?
我不理解的一件事是关于共享数据库的问题。根据您的描述,已经有一个共享数据库,因为每个用户都通过REST API将数据推送到东亚的单个数据库。这不正确吗?
根据您提供的信息,所有数据都转到一个数据中心,我看到3个选项,您已经指出了两个选项:
在每种情况下,您都有用户部署自己的托管服务,然后与您的服务进行对话。是否可以通过让所有人访问相同的托管服务但使用不同的凭据来优化用户成本?
为了您的成本,在每个数据中心托管REST API似乎是一笔巨大的费用,考虑到您需要在每个数据中心运行至少2个实例才能获得Windows Azure的正常运行时间SLA。但是......再一次,我并不完全理解你应用的情景。
答案 1 :(得分:0)
根据我的理解,似乎情况有点奇怪。如果您提供最终用户可以使用自己的Windows Azure帐户托管的软件包,为什么还要让他们使用自己的数据库呢?或者您的意思是您为最终用户提供项目的源代码作为样本?无论如何,我认为最好让最终用户提供自己的数据库帐户。如果您想为自己设计REST API,请将其托管在您自己的Windows Azure服务中。请不要将软件包分发给最终用户。此外,有关结算的详细信息,您还可以通过https://support.microsoft.com/oas/default.aspx?prid=14234&st=1&wfxredirect=1&sd=gn与我们的客户支持小组联系。
最诚挚的问候,
徐明。答案 2 :(得分:0)
我认为在这种情况下,最好让客户提供自己的数据库。如果您需要使用自己的数据库,则很难节省成本。您可以使用托管在不同数据中心的多个数据库。但显然这需要更多的成本。您也可以使用单个数据库,但是某些用户不可避免地会从另一个数据中心传输数据。但是,您可以要求用户通过提高产品价格来支付费用。但看起来更好的是要求用户提供他们自己的数据库(如果他们愿意,他们甚至可以选择本地数据库)。这也有助于提高安全性,因为用户的数据不会被共享。
最诚挚的问候,
徐明。