AWS正在不斷髮展變化,因此沒有太多的書籍可以提供幫助。亞馬遜優惠training。我在Architecting with AWS上參加了他們三天的課程,這似乎正是你想要的。
當然,並不是每個人都可以花費旅行時間和金錢去上課。 2012年11月的AWS re:Invent conference有許多會議與您想要的有關,大多數(可能全部)會議都有免費在線提供的視頻。使用AWS構建Web Scale應用程序可能是相關的(slides和video可用),解剖Internet規模應用程序(slides和video可用)。
更好地理解這些選項的好方法是通過擺脫AWS上的現有應用程序。將它轉移到AWS中的EC2實例很容易,然後開始利用可用的更多優勢。我要做的第一件事就是擺脫你自己機器上的MySql服務器,並使用RDS提供的服務器。一旦穩定,在RDS中創建一個或多個只讀副本,並且更改應用程序以便從大多數操作中讀取它們,只在需要完全當前結果時才從主(可寫)數據庫讀取數據。
您的應用程序是否將任何數據保存在Web服務器上,而不是數據庫中?如果是這樣,通過將數據從EC2實例移出來擺脫所有本地存儲。其中一些可能會去數據庫,一些(如大文件)可能適合S3。 DynamoDB是會話數據之類的好地方。
以上所有內容都將Web服務器上的負載減少到只是您的應用程序代碼,這有助於提高可伸縮性。現在,您在Web服務器上不保留任何狀態,您可以使用ELB和Auto-scaling自動運行多個Web服務器(甚至可以根據需要自動啓動更多)以處理更大的負載。
應用程序是否有任何長時間運行的密集型操作,您現在可以通過Web請求按需執行?考慮在詢問時不要執行操作,而是使用SQS對請求進行排隊,然後告訴用戶你會得到它。現在有很長時間的正在運行的進程(或cron作業或計劃任務)定期檢查隊列,運行請求的操作並將結果(使用SES)通過電子郵件發回給用戶。要真正擴展,您可以將這些作業從您的Web服務器移至專用機器,並在需要時再次使用自動縮放。
你需要更大的機器,還是可以與更小的機器一起生活? CloudWatch指標可以顯示隨着時間的推移使用多少IO,內存和CPU。您可以將預配置的IOPS與EC2或RDS實例一起使用,以根據需要提高性能(按成本計算),並將差異大小的實例用於更多內存或CPU。
所有這些AWS設置和配置都可以使用AWS Web控制檯,命令行工具或許多語言版本的SDK(Python的boto library非常棒)完成。學習完基礎知識後,查看CloudFormation以更好地實現自動化(至此爲止,我已經編寫了couple的posts)。
這是一種方法的10,000英尺高的視圖。當您嘗試使用它們時,您將需要發現每個AWS服務的詳細信息。 AWS有good documentation關於所有這些。