关于Django的Amazon Web Services Setup的建议后端& iOS前端

时间:2013-01-07 21:22:29

标签: django amazon-web-services amazon-ec2 load-balancing amazon-cloudfront

在过去的几周里,我已经做了很多关于适用于带有PostgreSQL数据库和iOS前端的Django后端的Amazon Web Services设置的研究。我是新手,我觉得我可能会在这里问一个愚蠢的问题,但是你们有什么建议我可以解决这个问题吗?目前我的设置涉及两个实例。

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

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

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

任何建议都会非常感激。提前谢谢。

4 个答案:

答案 0 :(得分: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 / storage支持。

答案 1 :(得分:1)

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

  • 永远不要在单个实例上运行任何重要的东西。对于您的应用层,您应该至少使用两个实例,每个实例位于单独的AZ中,负载由Elastic Load Balancer分配。

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

  • 明确地查看Elastic Beanstalk。这将极大地简化设置自动缩放应用程序层的过程,并使其快速部署代码。这也可以轻松设置单独的登台和生产环境,以便您可以在将代码推送给用户之前对其进行问答。

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

  • 通过CloudWatch警报设置SNS警报,以便在事情中断时收到通知。

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

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

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

答案 2 :(得分:0)

我在某些项目中使用了Google App Engine并且讨厌它。我听说AWS比App Engine更好,但仍然很昂贵。因此,您需要支付更多费用才能使您的项目与云一起开展,而不是使用Webfaction等进行某种共享托管或专用服务器托管。我建议Webfaction用于年轻的Web应用程序,而不是流量合理的移动到云端(虽然我仍然不会)。

谷歌应用引擎云有令人困惑的价格模型,谷歌甚至不理解,他们几乎没有使用像Webfaction或任何其他托管计划这样的人的自由。

答案 3 :(得分:0)

如果您完全没有设置实例和内容的线索,那么使用像Fabric这样的东西可能会有所帮助。

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

相关问题