4

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

它基于 Java / Stripes Framework / Objectify,仅使用来自 Google 服务的 URLFetch。它目前使用约 60 小时的前端时间和约 4 GB 的数据存储,每天有约 5,000 名访问者进行约 25,000 次页面浏览。

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

  • 我早先做了一些假设,这些假设不再有效,并且正在运行 1MB 内存缓存/数据存储限制。虽然我可以对此进行重构,但它可能会增加数据存储操作的数量/整体性能特征会恶化,并涉及数据库转换步骤(我也可以使用它来迁移到其他地方)
  • 我想添加一些功能,这些功能将显着增加存储数据(至 100 GB)和前端时间
  • 当我使用超过免费配额的资源时,成本的增加似乎上升得很快。虽然它们现在很容易管理,但如果该应用程序变得更流行,恐怕它可能不再负担得起。
  • 一些稳定性问题(出现一些 OutOfMemoryErrors 和其他我无法解释的错误,并且无法在我的本地环境中很好地复制)

我正在评估以下选项:

  1. 继续使用 GAE,优化应用程序,忍受不断增长的成本(缺点:仍然会有高成本和可靠性问题)

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

  3. 使用 Appscale 希望在很大程度上保持我的应用程序原样,但将其托管在 AWS EC2 上(优点:在纸上看起来很容易,缺点:似乎假设主要是 Unix 开发环境,不知道生产是否准备好或幕后发生了什么)

  4. 使用 CloudFoundry.com 和 MongoDB 作为数据存储(缺点:不知道是否准备好生产,测试后成本未知)

  5. 通过一些托管服务提供商获得 VPS 或专用服务器,使用 MongoDB 作为数据存储进行部署(缺点:与其他选项相比,我想学习的东西可能更少,需要做大量的系统管理工作)

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

注释 - 我有一些但非常有限的系统管理技能,尤其是在 Linux 上,我不喜欢这样做。我之前在 MongoDB 中做过一个小项目(虽然从未投入生产)。我从未使用过任何 AWS 基础设施。

我的问题:

一种。AppScale 是否足够成熟,可以在没有太多麻烦(错误、缺乏文档等)的情况下运行小型网站?学习曲线是否非常陡峭?在场景 #3 中使用它需要多少系统管理?最重要的是 - 我是否正确理解 Google 1MB 等限制都存在于 AppScale 上?

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

C。在 AWS EC2 / EBS 上部署所描述的应用程序涉及多少系统管理?假设我不太关心临时中断,但关心永久数据丢失,我是否需要自己镜像 EBS,或者我可以让 AWS 去做吗?

d。哪些新选项(AppScale、CloudFoundry、EC2/EBS)适用于基于 Windows / Eclipse 的开发方法?哪个有最好的 Eclipse 插件?

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

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

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

4

1 回答 1

4

只是一些观察:

一种。AppScale 是对其他技术(运行时数据存储)的精简包装,因此总的来说它与那些底层部分一样可靠。对于小型非关键任务网站,IMO 足够可靠。顺便说一句,内存缓存 1MB 限制是每个对象,而不是每个内存缓存。所以我想你可以把它分解成多个更小的对象。

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

C。我猜一个星期几个小时。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)。

e. 我个人建议留在 GAE(= 选项 1)。恕我直言,其他任何事情都会不太可靠且成本更高(由于设置/支持成本,甚至没有比较基本服务成本)。

顺便说一句,如果您遇到 OutOfMemoryErrors,您应该真正检查您的代码。您将大量数据保存在内存中的什么位置?

于 2012-12-21T12:09:37.867 回答