我目前正在开发一个Web应用程序,并试图找出主办它的最佳方式。 我环顾四周,使用了几十个不同的措辞,阅读了数百个post和评论。 但他们似乎都没有回答这个问题的特定方面。 他们解释了如何计算一个应用程序的特定实例可以处理的当前用户的数量。 但不是如何确定去那里达到你的目标。 我已经看过云,我已经看过VPS,当然我认为所有的都有不同的价格,但最终我意识到这一切都归结为您需要扩展的方向(垂直,向任何一个方向添加更多的权力应用程序的实例通过更多的CPU功率和更多的RAM;或水平地,添加应用程序的新实例和负载缩放它们)
第1部分
现在让我们来看一个小场景让我们说你有一个API应用程序。 它需要HTTP请求和响应与JSON,天气它build立在节点,Rails,PHP或其他任何东西都是不敬的。 假设您可以在峰值时间估算所有这些因素:并发用户数:100 – > 1000 – > N每个用户每分钟的请求数:1? 10? 50? 每个请求平均传输的数据大小:1Kb? 2KB? 5KB? 10?
你如何确定哪个方向是最好的规模? 这是这些因素的比例吗? 有没有什么地方可以达到这些因素之一呢?
第2部分
这一次让我们假设一个不同types的应用程序。 这一次,它是一个处理实时数据交换的networking套接字应用程序,如聊天或事件通知(从Redis或RabbitMQ等消息推送的事件)。这个应用程序(形成我收集的内容)将完全不同于相同的因素作为第一部分,你如何确定去哪个方向?
总体
我问这些问题,找出哪种types的托pipe将是最适合哪个应用程序。 这会给我更多的稳定性? 这会让我为同样数量的用户在口袋里保留更多的钱吗?
这个问题几乎不可能以现在的forms来回答,因为这个问题太广泛了。 要回答这个问题的东西涉及整个工程领域,人们以全职的方式谋生(包括我自己)。 恕我直言,这是部分科学和部分艺术,你会发现多本书(每个我的同事)在那里谈论这个问题。
因此,我只能提供一些简短的指引。
因此,如果我要这么做,需要select一种托pipe解决scheme,那么在产品供应和控制成本的能力方面,灵活性和能力最强的解决scheme就是amazon web services(AWS)。 这是我使用的唯一托pipe服务提供商,它接近大型企业数据中心,并提供了我所需要的大部分function。 主要特点是:
我没有其他IaaS提供商(Rackspace,Microsoft Azure等)的经验,所以我无法比较和对比。 也许这会帮助你走下一条路,开始你的研究。
披露:在写这个答案的时候,我没有任何股份的亚马逊股票或为他们工作=)