我正在制作一个应用程序,它会有:
该应用程序要求终端用户与我们一起创建一个帐户(我们很可能不会使用Facebook/Twitter登录)。
一切都是/将使用EC2/RDS/S3 (全部封装在弹性豆柄中)托管在AWS上。
| Web Browser | <----> | sails.js app | <-------> |actionhero.js API|
⬆︎
⬆︎
| Mobile app(s) | <-------------------------------------/到目前为止,我已经在actionhero.js中构建了大多数支持API,托管在AWS上。
对我来说,区分API和web应用程序是有意义的,因为网络应用程序只针对一小部分用户--我希望我们的移动应用程序的流量是web应用程序流量的50倍。我们可以扩展API以服务移动用户,而不必不必要地扩展sails.js应用程序。
我的问题是:
sails.js应用程序需要能够向API发出请求,移动应用程序也是如此。
我正在查看用于创建自己的Auth服务器的oauth2orize节点模块,但是它是为Connect/Express设计的,所以我认为我无法在actionherty.js的API中利用它。
如果解决方案是创建一个OAuth服务器,那么我应该在它自己的EC2实例上托管它吗?这似乎是一个相当典型的模式;在我将自己画到角落之前,我想知道这个设计中是否有任何大的危险标志。-)谢谢!
奖金问题(专门用于AWS弹性豆茎)
我会为sails.js服务器和API服务器创建单独的“应用程序”吗?看来这是唯一的办法来设置它,无论如何,但我想确定。
发布于 2014-04-07 23:54:12
我们现在已经为几个应用程序使用了节点和豆茎。对于身份验证,您可以在用户第一次访问应用程序时为他们创建一个帐户,并将帐户id存储在设备上。如果您希望他们能够从多个设备上登录,您需要提供某种方式来识别他们自己,这要么是id/password,要么是使用Facebook。设置它也没那么难。使用会话允许他们登录并保持登录。我们通常只是将用户id存储在会话中。
一个工作层是你想要与你的应用程序分离的东西,你想要做的事情你不需要知道它是否成功/失败。通知服务器就是一个主要的例子。将通知的信息发送到SQS队列,然后发送到执行工作的工人层。我们只是想弄清楚这件事。
一个很大的聚合过程,是的,我会把它带到其他地方,所以它不会占用您的生产服务器。您可能希望在保存事务时创建一些正在进行的数据聚合,这样它就会累积。事后的大翻滚可能是费时而脆弱的。
听起来是的,它们是分开的应用程序。
很好的小费。我们使用grunt来创建应用程序的zip文件。它是一个节点批处理工具。我们检查SVN中的最新信息,通过删除.svn目录来清理它,通过简单的字符串替换将配置应用到配置文件中,然后压缩结果输出。然后把这个装进豆茎里。这就占用了实际执行新部署的所有猜测工作和时间。我们可以在那几分钟内得到一个新的建筑。
豆茎是非常令人沮丧的。当它失败的时候,它不太善于告诉你为什么。
https://stackoverflow.com/questions/21963171
复制相似问题