我正在开发一款需要后端网络服务的智能手机应用程序 - 但我完全不知道它要花多少钱。
Web 服务将处理:
- 用户登录
- 对我们的用户群进行分类
- 保存用户的最少个人资料信息(唯一的二进制数据是显示图片,每张小于 20k)
- 在返回结果之前执行一些非常小的计算/算法
- 以上所有内容都将通过智能手机(iPhone/BlackBerry/Android)传达到服务器
带宽要求:
- 我们希望全天处理多达 10,000 名用户。
- 我预测每天 10,000 * 50 个 HTTP 请求 = 每天 500,000 个请求 * 30 = 每月 1500 万个请求
空间要求:
- 数据将存储在 SQL 数据库中。-
我预测 1MB/用户 * 10k = 10GB + 开销。换句话说 - 空间不是大问题。
软件要求:(除非有人知道其他选择)
- Windows Server 2008 + IIS
- MSFT SQL Server
注意:这对我来说完全是新东西,所以请告诉我你所有的想法。我需要 Windows Server 吗?还是有其他选择?最好是购买多台廉价服务器来分散负载?Amazon S3 适合我吗?Windows Azure 怎么样?
编辑说明:目前,我更关心的是成本以及成本如何扩大。因此,如果您提供服务建议,能否帮忙估算一下这些要求的成本是多少?
谢谢你!!
答案1
这是一个非常开放式的问题。;-)
这取决于很多因素。以下是我对如何处理此类问题的看法:
1) 架构 - 您将遇到的许多扩展问题将由您现在设计应用程序的方式决定。了解您编写的语言、您使用的框架以及您托管的底层操作系统/服务器的优势和劣势至关重要。
2) 在没有负载的情况下,平均一个请求需要多长时间才能完成? 您的 SLA 对请求应花费多长时间的规定是什么?
3) 应用程序如何处理负载?在什么时候(每台服务器每秒请求数)您看到性能下降?
4)您是否已将应用程序划分为可彼此独立扩展的层?(即,您是否有数据库层、应用服务器层和存储层?)
5)您的预算是多少?
根据您发布的内容,您每秒大约有 6 个请求。我会从单个应用程序框、单个数据库框和单个存储框开始如果你需要存储。向其施加负载,查看哪里出了问题。慢慢增加用户数量,您就会看到需要优化的代码部分,或者您可以在应用程序遇到问题的地方添加更多框。
由于这是您的首次尝试,我几乎建议您采用完全托管的托管服务 - 他们将能够帮助您进行后端扩展。
祝你好运!
答案2
Azure 会处理这个问题。请参阅Windows Azure了解详情并免费试用。我没有 iPhone 版本,但这里有一个关于如何构建应用程序的文章类似适用于 Windows Phone 7
答案3
您可以尝试使用 Amazon(或任何其他云提供商)的虚拟服务器。您可以从小型实例开始,然后根据需要扩展。成本基于实例大小和带宽,因此相对容易估算。Windows 许可证成本已包含在内。我不确定 MSSQL 是否如此,但可能也有预构建的虚拟设备,在这种情况下,您无需购买完整许可证,只需按使用付费。希望这对您有所帮助。