部署具有偶尔多处理需求的Web应用程序

时间:2015-06-30 18:38:22

标签: python azure amazon-ec2 multiprocessing boto

我正在构建一个我希望在云服务(EC2或Azure)上托管的Web应用程序。该应用程序目前正在为一个将获得非常少的流量(每天<1000个请求)的演示构建。

通常,应用程序不会使用太多的计算能力,但有一些例程可以充分利用我的12核心开发环境,使用Python的多处理库。我希望结果在60秒或更短时间内“在线”返回。我认为我会用更多内核实现更好的性能,并且如果可能的话我想测试100。当应用程序每天作为演示版提供时,我希望在10s或这些类型的请求中。

云服务的问题在于,如果我配置一个大型实例,比如16个核心(天蓝色A9或EC2 c4.4x大),每个月我将花费数百或数千美元来保持可用。

如何部署此应用程序以使其始终可用,但在用户发出需要它们的请求时仅使用许多核心?

1 个答案:

答案 0 :(得分:2)

这是一个非常广泛的问题,但一般来说,你想要使用某种自动缩放机制。 (即AWS自动缩放或您自己的)。

60秒对自动缩放实例的要求非常苛刻,但您可以通过将所有内容预先烘焙到EC2 AMI中来接近它。从EC2实例完成启动的那一刻起,意味着安装了所有应用程序并准备好组件。您可以使用Packeraminator

之类的内容

对于60秒的周转时间,您可能需要调出其中几个并且可能负载平衡,然后一旦计算完成,您就可以将它们拆除。

您甚至可以通过使用EC2现场实例来节省更多资金。 http://aws.amazon.com/ec2/purchasing-options/spot-instances/这里的问题是无法保证现场实例正在运行,因此如果亚马逊决定关闭您的实例,您的应用程序需要容忍。此外,如果您竞标一个您将获得它的现场实例,则无法保证。

希望这有帮助。