1

在過去的幾周裏,我已經做了大量關於Django後端與PostgreSQL數據庫和iOS前端的適當亞馬遜網絡服務設置的研究結束。我是新手,我覺得我可能會在這裏問一個愚蠢的問題,但是你們中的任何一個人對我如何去做這件事都有任何建議嗎?目前我的設置涉及兩個實例。關於亞馬遜Web服務的建議Django後端和iOS前端設置

一個EC2實例用於運行Ubuntu 11.04的django後端(大型實例),另一個EC2實例用於運行Ubuntu 11.04的postgresql實例(大型實例)。

幾個月來,我一直在使用這個設置進行開發和beta用戶測試,有60個用戶,它一直堅如磐石。就在最近我完成了後端,我已經完成了前端,並且正在將我的應用程序提交到應用程序商店。

在審批過程中,我想準備好生產並加強我的AWS設置。我的應用以社交照片分享爲中心。用戶可以在願望清單上拍攝他們想要的東西並與其追隨者分享。這些照片全部存儲在S3中。

任何意見將不勝感激。先謝謝你。

+1

您是否絕對需要Postgre?我對Postgre沒有任何抱怨或批評,但是如果你可以和MySQL一起生活,你可以使用amazon的RDS服務,它可以爲你處理部署,生命週期和數據備份(與輪換)。對於我大多數「年輕」項目來說,能夠利用Amazon RDS進行數據庫管理已經超過了Postgre在MySQL上的優勢。 –

回答

1

答案在很大程度上取決於您對停機時間和AWS的每月預算的容忍度。有幾點:

  • 不要運行任何一個單個實例重要。對於您的應用程序層,您應該至少使用兩個實例,每個實例都在單獨的AZ中,負載由Elastic Load Balancer分配。

  • 對於Postgres,設置兩個實例(也在單獨的AZ中)並配置複製。我還強烈建議您使用預配置的IOPS EBS卷和預配置的IOPS優化實例。

  • 一定要看看Elastic Beanstalk。這將大大簡化設置自動縮放應用程序層並使其快速部署代碼。這也將使設置單獨的分段和生產環境變得很容易,因此您可以在將代碼滾動到用戶之前使用代碼。

  • 考慮設置VPC以提高安全性並更好地控制網絡資源。初始學習曲線有一點點,但值得一試,特別是當您計劃設置數據庫複製時。

  • 通過CloudWatch警報設置SNS警報,以便在事件中斷時收到通知。

  • 在放大之前向外擴展。意思是,在你移動到更大的實例之前,使用更多的小實例。這最大限度地減少了您的自動調節組中單個實例故障的影響。它也允許更細粒度的自動縮放。直到您對應用程序進行基準測試並發現您需要它們之前,請勿使用大型實例。

  • 一旦您知道實際需要的實例大小,購買保留實例以在12個月內至少節省40%。

我進入的一些這些項目的更多細節(並提供一些其他技巧)上my blog

0

我對我的一些項目使用了Google App Engine,並且討厭它。我聽說AWS比App Engine更好,但仍然很貴。因此,您將付出更多的代價,讓您的項目脫離雲端,而不是某種共享託管或專用服務器託管Webfaction或類似的東西。我會推薦Webfaction用於年輕的Web應用程序,而不是如果流量合理移動到雲端(儘管我仍然不會)。

谷歌應用程序引擎雲令人困惑的價格模型,谷歌甚至不明白,他們幾乎沒有使用像Webfaction或任何其他託管計劃這樣的人的自由。

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 /存儲支持。

0

如果你完全沒有線索設置實例和東西,使用類似織物的東西可能會有所幫助。

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