【发布时间】:2014-03-24 15:56:20
【问题描述】:
我正在制作一个应用程序,它将具有:
- iOS 和 Android 应用程序
- 基于网络的“仪表板”,用于显示从移动应用收集的数据
该应用要求最终用户在我们这里创建一个帐户(我们很可能不会使用 Facebook/Twitter 登录)。
一切都将使用 EC2/RDS/S3 托管在 AWS 上(全部封装在 Elastic Beanstalk 中)
| Web Browser | <----> | sails.js app | <-------> |actionhero.js API|
⬆︎
⬆︎
| Mobile app(s) | <-------------------------------------/
到目前为止,我已经在 actionhero.js 中构建了大部分支持 API,托管在 AWS 上。
对我来说,将 API 和网络应用分开是有意义的,因为网络应用仅适用于一小部分用户——我希望我们的移动应用的流量是网络应用的 50 倍。我们可以扩展 API 以服务于移动用户,而无需扩展sails.js 应用程序。
我的问题是:
-
(biuggest unknown) 我应该如何处理身份验证?
sails.js应用程序需要能够向 API 发出请求,移动应用程序也是如此。我正在查看
oauth2orize节点模块来创建我们自己的身份验证服务器,但它是为 Connect/Express 设计的,所以我认为我不能在基于 actionhero.js 的 API 中利用它。如果解决方案是创建一个 OAuth 服务器,我应该将它托管在它自己的 EC2 实例上吗?
(AWS 特定问题)我不完全理解创建 AWS 所描述的“工作层”环境的用例。 API 是否属于该类别?
如果我想运行数据查询和聚合任务,我会为此创建一个单独的节点进程,对吗?如果是这样,该后台工作人员是否必须存在于其自己的 EC2 实例上?
Sails.js 和 Actionhero.js 都为 socket.io 提供了强大的支持。 Sails 应用程序和我的 API 之间的通信是否应该通过持久的 WebSocket 连接进行?如果我将来需要创建新实例,这种规模会扩大吗?
这似乎是一个相当典型的模式;我想知道这个设计中是否有任何大的危险信号,在我把自己画到一个角落里。 :-) 谢谢!
额外问题(特定于 AWS Elastic Beanstalk)
我会为sails.js 服务器和API 服务器创建单独的“应用程序”吗?无论如何,这似乎是设置它的唯一方法,但我想确定一下。
【问题讨论】:
标签: node.js amazon-ec2 oauth-2.0 sails.js amazon-elastic-beanstalk