1

在过去的几周里,我针对带有 PostgreSQL 数据库和 iOS 前端的 Django 后端的适当 Amazon Web Services 设置进行了大量研究。我是新手,我觉得我可能在这里问了一个愚蠢的问题,但是你们中的任何人对我该如何解决这个问题有什么建议吗?目前我的设置涉及两个实例。

一个 EC2 实例用于运行 Ubuntu 11.04 的 django 后端(大型实例),另一个实例用于运行 Ubuntu 11.04 的 postgresql 实例(大型实例)。

几个月来,我一直在使用这个设置进行开发和 60 个用户的 beta 测试,它一直坚如磐石。就在最近我已经完成了后端,我已经完成了前端,我正在将我的应用程序提交到应用程序商店。

在审批过程中,我希望做好生产准备并加强我的 AWS 设置。我的应用程序以社交照片共享为中心。用户可以在愿望清单上拍摄他们想要的东西并与他们的追随者分享。图片全部存储在S3中。

任何建议将不胜感激。先感谢您。

4

4 回答 4

1

我是一名开发人员,最近开始在 AWS 上部署我的 django 站点 - 我不擅长服务器,但我有一个设置过程,用于获取微实例以进行开发和快速运行。这些是我设置服务器的一些步骤:http: //yaconiello.com/blog/setting-aws-ec2-instance-nginx-django-uwsgi-and-mysql/。我仅在您尚未在 AWS 大型实例上执行某些操作时才链接。

你和我的应用程序之间的一个很大区别是你使用 postgres 作为数据库。我编写了一个使用 PG 的应用程序,我做过的最大的性能提升是安装/配置pgbouncer。PGbouncer 像老板一样进行连接池。

此外,尽管我很喜欢 aws,但我停止使用 S3,转而使用 rackspace 的 cloudfiles + django-cumulus 包。我不喜欢 S3 的一些 boto/storages 支持。

于 2013-01-15T05:12:30.310 回答
1

答案很大程度上取决于您对停机时间的容忍度与您对 AWS 的每月预算。几点:

  • 永远不要在单个实例上运行任何重要的东西。对于您的应用程序层,您应该使用至少两个实例,每个实例位于单独的 AZ,负载由弹性负载均衡器分配。

  • 对于 Postgres,设置两个实例(也在不同的 AZ 中)并配置复制。我还强烈建议您使用预置的 IOPS EBS 卷和预置的 IOPS 优化实例。

  • 一定要看看 Elastic Beanstalk。这将极大地简化自动缩放应用程序层的设置,并使向其部署代码变得轻而易举。这也将使设置单独的暂存环境和生产环境变得容易,这样您就可以在将代码发布给用户之前对代码进行问答。

  • 考虑设置 VPC 以提高安全性并更好地控制您的网络资源。有一点初步的学习曲线,但这是值得的,尤其是当您计划设置数据库复制时。

  • 通过 CloudWatch 警报设置 SNS 警报,以便在出现问题时收到通知。

  • 在扩大规模之前扩大规模。意思是,在升级到更大的实例之前使用更多的小实例。这可以最大限度地减少自动扩展组中单个实例故障的影响。它还允许更精细的自动缩放。在您对应用程序进行基准测试并发现您需要它们之前,不要使用大型实例。

  • 一旦您知道您实际需要的实例大小,请购买预留实例以在 12 个月内节省至少 40%。

我在我的博客上详细介绍了其中一些项目(并提供了一些其他提示)。

于 2013-01-16T06:08:27.397 回答
0

我将 Google App Engine 用于我的一些项目并且讨厌它。我听说 AWS 比 App Engine 好,但仍然很贵。因此,与使用 Webfaction 之类的某种共享托管或专用服务器托管相比,您将花费更多的钱来让您的项目通过云启动。对于年轻的 Web 应用程序,我会推荐 Webfaction,而不是将流量合理地转移到云端(尽管我仍然不会)。

Google App Engine 云具有令人困惑的价格模型,Google 甚至都无法理解,而且他们几乎没有使用 Webfaction 之类的人或任何其他托管计划的自由。

于 2013-01-07T22:02:49.370 回答
0

如果您完全不知道设置实例和东西,使用类似 fabric 的东西可能会有所帮助。

https://github.com/fabric/fabric/tree/1.6

于 2013-07-21T10:33:15.233 回答