MEAN Stack - 我应该分开服务器吗?

时间:2016-06-11 05:12:31

标签: javascript node.js server mean-stack mean

我正在开发一个带有MEAN堆栈的个人项目,非常感谢您在设置服务器架构时应采取的路线建议。性能和可扩展性对我很重要,因为我希望将来构建企业级Web应用程序。

这个项目将是一个图像托管应用程序,它将包括前端,私有API和文件存储系统。

选项1:全部在同一台服务器上

选项2:同一台服务器上的前端和私有API。文件存储在单独的服务器上。

选项3:前端,私有API和文件存储都将在他们自己的服务器上。

我认为选项2可能是最好的选择,但我很乐意向那些具有类似架构的应用程序构建经验的人学习。

谢谢!

2 个答案:

答案 0 :(得分:1)

根据您期望的规模以及您希望在服务器基础架构上花费多少,不同的情况是合适的。我会尽力解释两全其美的事。

  • 对于基于API的所有服务,它们应该位于可扩展的基础架构上。出于这个原因,它们大多数是服务器的形式,总是落后于负载平衡器。缩放根据流量类型和区域进行。为此,目前业界最喜欢的是基于docker的微服务。另一个类似的解决方案是Google App Engine。
  • 对于所有基于前端/ UI的内容,它们应存储在CDN上以优化交付。使用CDN,即使您的基于私有API的服务很慢,您也可以保持应用程序的UI始终可供最终用户使用。 CDN很便宜,它们会对最终用户产生很大的影响。
  • 对于图像/文件存储,您应该使用基于Blob存储的解决方案。如今,您的服务器硬盘主要是SSD,而且成本很高。此外,这些磁盘连接到您的服务器,因此非常容易出错或安全问题。使用blob存储很有帮助,因为它可以处理冗余和可扩展的存储以及某种形式的安全性。

使用此模型,您将确保文件安全且远离业务逻辑,即使核心服务很慢,最终用户也可以访问您的Web应用程序,并且可以非常轻松地管理基于API /服务的服务器规模。

答案 1 :(得分:0)

您不应该提前烘焙您的服务器架构。但是要一路测量并改进所需的缺乏特征。

所以我首先使用相同的服务器方法

但将前端设计为无服务器架构

创建私有API和单独的文件存储API 以进行读/写。这些可以是微服务,可以在需要时进行扩展。

您可以将这些碎片托管在其他云上/或使用您自己的碎片垂直/水平或地理位置进行缩放。

因此,您将缩放部分烘焙到您的设计中,但只能在需要时进行缩放。

基本上,您现在唯一需要小心架构已经分解为,这样您就可以在需要时进行扩展。

注意:关于主题的两个好读物如下:Infrastructure as CodeBuilding microservices