在我的案例中,迁移Google App Engine(GAE)的最佳主机选项?

时间:2012-12-21 10:40:27

标签: google-app-engine amazon-ec2 cloud cloudfoundry cloud-hosting

我有一个小型的Google App Engine网站似乎已经超出了它,我想迁移到其他地方。

它基于Java / Stripes Framework / Objectify,仅使用来自Google服务的URLFetch。它目前使用约60个前端小时和~4 GB数据存储,每天约有5k的访问者每页浏览量达到25k。

我认为我应该迁移的原因:

  • 我早期做了一些不再有效的假设,并且遇到1MB memcache / datastore限制。虽然我可以重构这一点,但可能会增加数据存储区操作的数量/整体恶化的性能特征,并涉及数据库转换步骤(我也可以用它来迁移到其他地方)
  • 我想添加一些功能,这些功能会显着增加存储数据(大约100 GB)和前端时间
  • 由于我使用的资源超过了免费配额,因此成本的增长似乎相当快。虽然它们现在非常容易管理,但如果应用程序变得更受欢迎,我担心它可能不再负担得起。
  • 一些稳定性问题(获取一些我无法解释的OutOfMemoryErrors和其他错误,并且无法在我的本地环境中很好地复制)

我正在评估以下选项:

  1. 坚持GAE,优化应用程序,以不断增长的成本生活(缺点:仍然会有高成本和可靠性问题)

  2. 使用MongoDB作为数据存储转移到AWS EC2 / EBS(优点:可能是最成熟的解决方案,缺点:看起来很难设置,很容易造成架构/设计错误)。

  3. 使用Appscale很大程度上希望我的应用程序保持原样,但是将它托管在AWS EC2上(优点:在纸面上看起来很简单,缺点:似乎假定在很大程度上是Unix开发环境,不知道生产准备就绪或者是什么正在幕后发生)

  4. 将CloudFoundry.com与MongoDB一起用作数据存储区(缺点:不知道生产就绪,后测试成本未知)

  5. 使用某个托管服务提供商获取VPS或专用服务器,使用MongoDB作为数据存储区进行部署(缺点:可能教会我比其他选项更少的学习内容,需要做大量的系统管理)< / p>

  6. 这是一个爱好网站,所以目标的一部分是在实践中学习一些新技术,我只想花时间学习正确的技术。

    注意 - 我有一些但非常有限的系统管理技能,特别是在Linux上,我不喜欢这样做。我之前在MongoDB做了一个小项目(从未投入生产)。我从未使用任何AWS基础架构。

    我的问题:

    一个。 AppScale是否足够成熟以便运行一个小网站而没有太多麻烦(错误,缺少文档等)?学习曲线是否非常陡峭?在方案#3中需要多少系统管理才能使用它?最重要的是 - 我是否正确理解AppScale上的Google 1MB等限制是否全部存在?

    湾CloudFoundry是否足够成熟以便运行一个小网站而没有太多麻烦(错误,缺少文档等)?学习曲线是否非常陡峭?在方案#4中需要多少系统管理才能使用它?我认为如果需要,从CloudFoundry.com迁移到另一个CloudFoundry应该相当容易。

    ℃。在AWS EC2 / EBS上部署的sysadmining涉及到所描述的应用程序的程度是多少?假设我不关心临时中断,但关心永久性数据丢失,我是否需要自己镜像EBS,或者我可以离开AWS去做吗?

    d。哪个新选项(AppScale,CloudFoundry,EC2 / EBS)可以在基于Windows / Eclipse的开发方法中正常工作?哪个有最好的Eclipse插件?

    我问,因为在快速审查AppScale文档后,他们似乎认为开发虚拟机将由Unix主机托管,这对我来说是另一个麻烦。

    即我的哪个选项1.-5。你会推荐我吗?

    我现在在#2和#4之间分开。

1 个答案:

答案 0 :(得分:4)

只是观察一下:

一个。 AppScale是围绕其他技术(runtimesdatastores)的薄包装器,因此通常它与底层部件一样可靠。对于一个小的非任务关键型网站,IMO足够可靠。顺便说一句,memcache 1MB限制是每个对象,而不是每个memcache。所以我想你可以将它分解成多个较小的对象。

湾我没有使用CloudFoundry的经验,但他们确实说他们是“测试版”并且他们没有SLA:http://support.cloudfoundry.com/entries/20971351-cloud-foundry-sla \

℃。我猜一周几个小时。 ESB是一种基于磁盘的服务,因此您不应该使用它丢失数据。但您仍然可以将ECB的增量备份执行到S3。有许多解决方案可以自动执行此操作,例如:http://www.stardothosting.com/blog/2012/05/automated-amazon-ebs-snapshot-backup-script-with-7-day-retention/

d。 IMO EC2是最成熟的,拥有最多的工具。请注意,AppScale只是一个包装器 - 您可以将其部署到EC2。开发环境(Eclipse + Windows)与部署环境无关(通常是Linux,也可以是EC2上的Windows)。

即我个人建议坚持使用GAE(=选项1)。恕我直言,其他任何东西都不太可靠,成本也更高(由于设置/支持成本,甚至没有比较基本服务成本)。

顺便说一句,如果您收到OutOfMemoryErrors,您应该检查您的代码。你在哪里将大量数据保存在内存中?