Google app engine 云上的可扩展性与可移植性(Amazon/GAE/…)

Google app engine 云上的可扩展性与可移植性(Amazon/GAE/…),google-app-engine,amazon-web-services,cloud,scalability,portability,Google App Engine,Amazon Web Services,Cloud,Scalability,Portability,我有一些用PHP编写的网站(目前在VPS上),将从零开始重建到Python。 作为平台,我主要考虑的是GAE和Amazon(或者保持最新VPS)。我想问你哪一个更适合我 我的一些观点: 我知道GAE有一些局限性,但因为我要从头开始构建所有东西,这可能不是一个大问题(或者可能是?) 我读到亚马逊只提供虚拟机,所以我将不得不管理一切。它的可伸缩性如何(我只需移动滑块或使用服务器配置/编程?) 如果我决定继续使用当前的VPS,然后迁移到Amazon怎么办?这会很痛苦而且需要很多工作吗 费用呢 这个

我有一些用PHP编写的网站(目前在VPS上),将从零开始重建到Python。 作为平台,我主要考虑的是GAEAmazon(或者保持最新VPS)。我想问你哪一个更适合我

我的一些观点:

  • 我知道GAE有一些局限性,但因为我要从头开始构建所有东西,这可能不是一个大问题(或者可能是?)
  • 我读到亚马逊只提供虚拟机,所以我将不得不管理一切。它的可伸缩性如何(我只需移动滑块或使用服务器配置/编程?)
  • 如果我决定继续使用当前的VPS,然后迁移到Amazon怎么办?这会很痛苦而且需要很多工作吗
  • 费用呢
这个网站是我很久以前写的(每月有一百万uniq用户),现在因为代码混乱需要重建。 现在它托管在小型VPS上,内存为2x2GHz+750MB(每月20美元)。这已经足够了,但是在重建之后,我计划添加更多的性能消耗特性,并对其进行广告宣传(这样网站就会增长)。 我选择Python(dJango)作为框架


由于它将被完全重建,我正在考虑在云上托管它。

谷歌应用引擎就是一个例子。AmazonWebServices主要是一个解决方案(带有一些类似PaaS的组件)。它们是不同的服务模式,每个都有不同的优缺点。简而言之:PaaS提供了对底层系统的更多抽象。这使得部署更容易(有时更容易),并且消除了设计可扩展和持久环境所需的许多系统工程专业知识。然而,这是以灵活性大大降低为代价的,通常每个月的成本更高,并且具有更大的“灵活性”

您可能对亚马逊的产品感兴趣,它是PaaS和IaaS的混合产品。它是几个AWS组件(EC2、RDS、ELB、SNS)之上的一个层,这些组件以一种更易于使用的类似PaaS的方式将它们粘在一起。(免责声明:我的公司是AWS咨询合作伙伴网络的成员,我们为Python AWS库Boto编写了Elastic Beanstalk支持。)

如果我决定继续使用当前的VPS,然后迁移到Amazon怎么办?这会很痛苦而且需要很多工作吗

这在很大程度上取决于您的应用程序。简言之,您希望确保应用程序服务器(实例)被视为一次性的:不在其上存储持久数据,也不具有相互依赖性。例如,如果您的应用程序接受用户上传的文件,它们应该存储在S3中,而不是本地卷上。您希望确保使用松散耦合的组件,并使用SNS和SQS在它们之间进行通信


不过,最大的变化是如何滚动代码。您不能只将SSH或FTP上传到单个服务器并上传最新版本。Elastic Beanstalk与Git很好地集成(请参阅文档),使其非常轻松,但它仍然是对您的工作流程的调整。如果您的弹性Beanstalk已经过时了,那么您需要开始研究Puppet、Chef或Salt等资源调配工具。我还将Fabric用于更简单的环境。

谷歌应用程序引擎就是一个例子。AmazonWebServices主要是一个解决方案(带有一些类似PaaS的组件)。它们是不同的服务模式,每个都有不同的优缺点。简而言之:PaaS提供了对底层系统的更多抽象。这使得部署更容易(有时更容易),并且消除了设计可扩展和持久环境所需的许多系统工程专业知识。然而,这是以灵活性大大降低为代价的,通常每个月的成本更高,并且具有更大的“灵活性”

您可能对亚马逊的产品感兴趣,它是PaaS和IaaS的混合产品。它是几个AWS组件(EC2、RDS、ELB、SNS)之上的一个层,这些组件以一种更易于使用的类似PaaS的方式将它们粘在一起。(免责声明:我的公司是AWS咨询合作伙伴网络的成员,我们为Python AWS库Boto编写了Elastic Beanstalk支持。)

如果我决定继续使用当前的VPS,然后迁移到Amazon怎么办?这会很痛苦而且需要很多工作吗

这在很大程度上取决于您的应用程序。简言之,您希望确保应用程序服务器(实例)被视为一次性的:不在其上存储持久数据,也不具有相互依赖性。例如,如果您的应用程序接受用户上传的文件,它们应该存储在S3中,而不是本地卷上。您希望确保使用松散耦合的组件,并使用SNS和SQS在它们之间进行通信

不过,最大的变化是如何滚动代码。您不能只将SSH或FTP上传到单个服务器并上传最新版本。Elastic Beanstalk与Git很好地集成(请参阅文档),使其非常轻松,但它仍然是对您的工作流程的调整。如果您的弹性Beanstalk已经过时了,那么您需要开始研究Puppet、Chef或Salt等资源调配工具。我还使用Fabric来实现更简单的环境