2013-01-11 38 views
1

我有一個Web應用程序運行在一個虛擬的Windows服務器上的PHP,MySQL,Apache。我想重新設計它,這樣它就可以在AWS上擴展(爲了好玩,所以我可以學習新的東西)。如何將在VPS上運行的WAMP堆疊應用程序轉換爲可擴展的AWS應用程序?

我可以看到如何設置EC2並將其全部轉儲到那裏,但是我想使其具有可擴展性並利用AWS上的所有酷功能。

我試着用搜索引擎,但就是無法找到一個簡單的指南(注 - 我的Linux沒有命令行經驗)

誰能告訴我詳細的資源,可以領我穿過的步驟和教我?或者,也可以總結答案中的步驟,以便我可以根據您的說法進行研究。

感謝

回答

1

AWS正在不斷髮展變化,因此沒有太多的書籍可以提供幫助。亞馬遜優惠training。我在Architecting with AWS上參加了他們三天的課程,這似乎正是你想要的。

當然,並不是每個人都可以花費旅行時間和金錢去上課。 2012年11月的AWS re:Invent conference有許多會議與您想要的有關,大多數(可能全部)會議都有免費在線提供的視頻。使用AWS構建Web Scale應用程序可能是相關的(slidesvideo可用),解剖Internet規模應用程序(slidesvideo可用)。

更好地理解這些選項的好方法是通過擺脫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以更好地實現自動化(至此爲止,我已經編寫了coupleposts)。

這是一種方法的10,000英尺高的視圖。當您嘗試使用它們時,您將需要發現每個AWS服務的詳細信息。 AWS有good documentation關於所有這些。

0

取決於你如何看待它,這更是一個評論的比它是一個答案,但它是太長寫在註釋中。

你要求的東西真的不能在這個答案 - 這是一個巨大的,複雜的問題。您基本上要求的是「如何設計可部署在基於雲平臺的高度可擴展,耐用的應用程序?」答案在很大程度上取決於:

  • 您的應用程序的具體細節 - 它做了什麼,它是如何工作的?
  • 您的停機時間公差對您的預算
  • 您現在的開發和部署工作流程
  • 資源/技能平衡設置你有工作人員來支持應用
  • 您推出的時間框架是什麼樣子。

我運行一家專門從事亞馬遜Web服務架構諮詢的軟件諮詢公司。我們約80%的業務正在爲客戶調查和回答這些問題。每次都是一個長達數週的項目。

但是,爲了讓您指出正確的方向,我建議您看看​​。這是一種類似PaaS的服務,可以抽象出底層的AWS資源,使AWS更容易用於沒有很多系統管理員體驗的開發人員。將其視爲在AWS上設計自動縮放應用程序的「訓練輪」。

相關問題