2017-08-05 61 views
0

我想弄清楚我正在使用我的啓動的移動應用程序需要什麼AWS服務。我們正在研究的應用程序應在今年晚些時候進入應用程序/ Play商店,因此我們需要針對我們的案例採用「最佳實踐」解決方案。它必須是高度可擴展的,所以如果有數以千計的服務器請求,它應該保持穩定和快速。我們也可能想在其上部署一個網站。哪些適用於移動應用程序後端的AWS服務?

實際上,我們正在使用Uberspace(link)服務器,並在其上運行Node.js應用程序和MongoDB。一切工作正常,但對於我們想要與AWS一起發佈的版本。我們需要的是我們可以運行Node.js/MongoDB(或類似於MongoDB的東西),以及用於存儲用戶可以請求的配置文件圖片等圖像的東西。

我已經在他們的網站上閱讀了一些有關AWS的信息,但這並沒有太大的幫助。有這麼多的服務,我們不知道哪一個完全適合我們的需求。

一個朋友告訴我只使用AWS EC2爲Node.js的服務器+的MongoDB和S3存儲圖像,但在一些網站上我已閱讀,它是更好地使用這種架構:

如果有人能夠與我們分享他/她的知識,我們會很高興!

回答

1
  • 運行代碼:你可以使用拉姆達,但要小心:你 沒有好處不用擔心服務器,缺點是有時拉姆達不合理 緩慢。如果您需要的速度非常快,那麼您需要使用EC2 並進行自動縮放。如果你調好它,它就像一個魅力。
  • 要存儲數據:DynamoDB,如果您希望它真的很快(單個數字 毫秒,無論負載和數據庫大小),並根據最佳 實踐。它需要適當的模式,否則將花費您的財富,否則在EC2上使用MongoDB。
  • 如果您需要RDBMS然後RDS(好處: 的可擴展性,可用性,維修無頭痛)
  • 緩存:他們有兩個Redis的和分佈式緩存。
  • S3:存儲靜態資產。
  • 我不建議CloudFront,市場上還有另一個CDN,價格/可能性更好。
  • API網關:是的,如果你有一個API。
  • 根據您的應用程序,您可能需要SQS。
  • Cognito是一個很好的服務,如果你想使用谷歌/ FB /等認證你的用戶。
  • CloudWatch:如果你是公制癮君子,那麼它不適合你,也許獨立EC2 會更好。但是,對於大多數人來說,CloudWatch是非常好的。
  • 創建所有必要的警報(CPU過載等)。
  • 您應該使用角色 來允許從lambda/AWS訪問您的S3/DB。
  • 您不應使用root帳戶,而應創建一個單獨的用戶。
  • 創建結算警報:你會知道你是否打算預算。
  • 創建lambda函數來備份您的EBS卷(以及任何您可能需要備份的內容)。如果備份一秒鐘後啓動就沒有問題,所以 Lambda在這裏可以。
  • 現在運行可信顧問。
  • 最好使用CloudFormation堆棧進行設置:如果需要,您可以輕鬆地在另一個區域部署相同的基礎架構,同時管理Infrastructure-as-a-代碼比手動構建時要好。
+0

感謝您的詳細解答!我會盡可能地遵循你的建議。 –

2

如果您想要一個非常高的可伸縮應用程序,您可能需要使用AWS lambda的無服務器體系結構。 有一個名爲serverless的框架,可以幫助您管理和組織您的所有lambda函數,並將它們放在AWS Gateway之後。 對於存儲,您可以使用AWS EC2並安裝MongoDB,也可以使用AWS DynamODB作爲NoSql存儲。 如果你想要一個網頁和手機前端,你可能想要訪問原生反應方法。

我希望我一直有幫助。

+0

謝謝您的回答!我看到EC2也是高度可擴展的,那麼在我們的案例中,使用AWS Lambda/Gateway與EC2相比有什麼優勢?當有S3時,爲什麼我們應該使用EC2進行存儲? –

+0

在EC2中,您必須始終運行ypur服務器,並且您始終支付服務器的所有時間。使用lambda時,沒有服務器正在運行(至少開發人員不會看到並管理它),因此只有在激活lambda時纔會收取費用,因此它便宜得多。此外,在EC2中,您必須擁有一個負載均衡器,並擔心並配置它,相反,則會自動進行lambda升級。我建議你在操作手冊中使用AWS lambda。 – ainsausti

+0

S3是一種存儲長期和靜態數據的照片,文件等,但不適用於更改和動態數據,也不適用於應用程序數據存儲。 – ainsausti

相關問題