Node.js AWS上的节点API体系结构
我正在制作一个具有以下功能的应用程序: iOS和Android应用程序 基于web的仪表板,用于显示从移动应用程序收集的数据 该应用程序要求最终用户与我们建立一个帐户,我们很可能不会使用Facebook/Twitter登录 所有内容都将使用EC2/RDS/S3托管在AWS上,所有内容都封装在Elastic Beanstalk中Node.js AWS上的节点API体系结构,node.js,amazon-ec2,oauth-2.0,sails.js,amazon-elastic-beanstalk,Node.js,Amazon Ec2,Oauth 2.0,Sails.js,Amazon Elastic Beanstalk,我正在制作一个具有以下功能的应用程序: iOS和Android应用程序 基于web的仪表板,用于显示从移动应用程序收集的数据 该应用程序要求最终用户与我们建立一个帐户,我们很可能不会使用Facebook/Twitter登录 所有内容都将使用EC2/RDS/S3托管在AWS上,所有内容都封装在Elastic Beanstalk中 | Web Browser | <----> | sails.js app | <-------> |actionhero.js API|
| Web Browser | <----> | sails.js app | <-------> |actionhero.js API|
⬆︎
⬆︎
| Mobile app(s) | <-------------------------------------/
到目前为止,我已经在AWS上托管的actionhero.js中构建了大部分支持API
对我来说,将API和web应用分开是有意义的,因为web应用只面向一小部分用户——我预计我们的移动应用在web应用上的流量将达到50倍。。我们可以扩展API以服务于移动用户,而无需不必要地扩展sails.js应用程序
我的问题是:
B建议未知我应该如何处理身份验证?sails.js应用程序需要能够向API发出请求,移动应用程序也是如此
我在看oauth2orize节点模块来创建我们自己的Auth服务器,但是它是为Connect/Express设计的,所以我认为我不能在基于actionhero.js的API中使用它
如果解决方案是创建一个OAuth服务器,我应该在它自己的EC2实例上托管它吗
AWS特定问题我不完全理解创建AWS所描述的工作层环境的用例。是否有理由将API归入该类别
如果我想运行数据查询和聚合任务,我会为此创建一个单独的节点进程,对吗?如果是这样,后台工作程序是否必须存在于自己的EC2实例上
Sails.js和Actionhero.js都为socket.io提供了强大的支持。Sails应用程序和my API之间的通信是否应该通过持久的WebSocket连接进行?如果我将来需要创建新实例,这种规模会扩大吗
这似乎是一个相当典型的模式;在我把自己画进一个角落之前,我想听听这个设计中是否有任何大的危险信号谢谢
针对AWS弹性豆茎的奖励问题
| Web Browser | <----> | sails.js app | <-------> |actionhero.js API|
⬆︎
⬆︎
| Mobile app(s) | <-------------------------------------/
我会为sails.js服务器和API服务器创建单独的应用程序吗?不管怎么说,这似乎是设置它的唯一方法,但我想确保。我们现在已经在几个应用程序中使用了node和beanstalk。对于身份验证,您可以在用户首次访问应用程序时为其创建帐户,并将帐户id存储在设备上。如果你想让他们能够从多个设备登录,你需要提供一些他们识别自己的方式,也就是id/密码,或者使用Facebook。设置它并不难。使用会话允许他们登录并保持登录状态。我们通常只在会话中存储用户id worker层用于您希望与应用程序解耦的东西,您不需要知道它是否成功/失败的东西。通知服务器就是一个很好的例子。您将通知的信息发送到一个SQS队列中,然后将该队列发送到执行工作的工作层。我们现在只是想弄清楚这一点 一个大的聚合过程,是的,我会把它带到其他地方,这样它就不会占用您的生产服务器。您可能希望创建一些正在进行的数据聚合,因为事务被保存,所以它会累积。事后大汇总可能耗时且脆弱 听起来是的,它们是独立的应用程序 好的小费。我们使用grunt为应用程序创建zip文件。这是一个节点批处理工具。我们检查SVN中的最新信息,通过删除.SVN目录等操作进行清理,通过简单的字符串替换将配置应用到配置文件中,然后压缩结果输出。然后将其加载到beanstalk中。这将花费所有的猜测工作和时间来实际执行新部署。这样我们可以在几分钟内得到一个新的构建 豆茎很令人沮丧。当它失败时,它不会很好地告诉你为什么