2014-02-23 72 views
0

我在做一個應用程序,將有:節點API架構上AWS

  • iOS和Android應用
  • 一個基於Web的「儀表板」,以顯示來自移動應用程序收集的數據

的應用程序需要最終用戶創建我們的帳戶(我們大多可能不會使用Facebook/Twitter的登錄)。

一切都/將使用EC2/RDS/S3(在彈性青苗所有封裝)

| Web Browser | <----> | sails.js app | <-------> |actionhero.js API| 

                 ⬆︎ 
                 ⬆︎ 
| Mobile app(s) | <-------------------------------------/ 

到目前爲止,我已經建立了最actionhero.js後盾的API,託管AWS託管在AWS上。

這對我有意義的API和Web應用程序分開,因爲Web應用程序只適用於用戶的一小部分 - 我期望50X從我們對Web應用程序的移動應用程序的流量。我們可以縮放API以服務於移動用戶,而不會不必要地縮放sails.js應用程序。


我的問題是:

  1. biuggest未知我應該如何處理身份驗證?sails.js應用程序需要能夠向API發出請求,移動應用程序也是如此。

    我正在尋找用於創建我們自己的Auth服務器的oauth2orize節點模塊,但它是爲Connect/Express設計的,所以我不認爲我可以在基於actionhero.js的API中利用它。

    如果解決方案是創建一個OAuth服務器,我應該來託管其自己的EC2實例?

  2. (AWS-具體的問題)我不完全理解創造什麼AWS描述爲「一線工人」 enviornment使用情況。 API是否會屬於這一類別?

  3. 如果我想運行一個數據查詢和聚集的任務,我將創建一個單獨的節點處理是否正確?如果是這樣,這個後臺工作人員必須在自己的EC2實例上存在嗎?

  4. Sails.js和Actionhero.js都提供了socket.io沉重的支持。 Sails應用程序和我的API之間的通信是否發生在持續的WebSocket連接上?如果我需要在未來創建新的實例,這是否會擴展?

這似乎是一個相當典型的模式;我想聽聽這個設計中是否有任何大紅旗,之前我把自己畫到一個角落裏。 :-) 謝謝!

獎金問題(具體以AWS彈性魔豆)

我將創建帆單獨的「應用程序」。JS服務器和API服務器?無論如何,看起來這是設置它的唯一方式,但我想確保。

回答

0

現在我們已經在一些應用程序中使用了node和beanstalk。對於身份驗證,您可以在第一次訪問應用程序時爲用戶創建一個帳戶,並將該帳戶ID存儲在設備上。如果你希望他們能夠從多個設備登錄,你需要提供某種方式來標識他們自己,這是ID /密碼或使用Facebook。設置這個並不難。使用會話允許他們登錄並保持登錄狀態。我們通常只在會話中存儲用戶標識。

工作層是爲了與應用程序分離,您想要做的事情,您不需要知道它是否成功/失敗。通知服務器就是一個很好的例子。您將通知的信息發送到SQS隊列中,然後發送給工作層。我們現在只是想弄明白這一點。

一個很大的聚合過程,是的,我想把它放在其他地方,所以它不會佔用你的生產服務器。您可能想要創建一些正在進行的數據聚合,因爲事務已保存,因此會累積。事後的大量累積可能是耗時且脆弱的。

聽起來像是的,他們將是分開的應用程序。

一個很好的提示。我們使用grunt爲應用程序創建zip文件。這是一個節點批處理工具。我們檢查SVN中的最新信息,通過刪除.svn目錄等方式進行清理,通過簡單的字符串替換將我們的配置應用到配置文件中,然後壓縮結果輸出。然後這被加載到豆莖。這需要所有的猜測工作和實際進行新部署的時間。我們可以在幾分鐘內完成新的構建。

豆莖可能非常令人沮喪。當它失敗時,它不是很擅長告訴你爲什麼。