架构问题 - 需要单独的后端 运行 Mongo,MERN 或 MEVN 项目中的 Express & Node

Architecture question - The need for a separate backend running Mongo, Express & Node in MERN or MEVN project

我的假设是否正确,对单独的后端是否有不同的需求,或者整体(希望更简单)解决方案是否可以实现相同的功能,但代价是不能扩展?

查看现有的 MERN 或 MEVN 解决方案,它们似乎总是涉及两个节点进程,其中前端进程是 运行 客户端框架,后端进程使用 Node、Express & Mongo 处理数据库请求.当平衡至少两台服务器时,这似乎是一个很好的性能解决方案。对于我的解决方案,性能不是问题,我想知道为什么需要一个单独的后端。为什么不在前端使用 try/catch 和 async/await 来获取数据库数据,而不是对单独的后端调用 api。然后,一旦我开始尝试设计我的更单一的解决方案,我意识到分离后端实际上解决了一个问题。为了避免数据库并发问题,我意识到单独的后端解决方案实际上降低了对逻辑事务的需求,因为节点是单线程的并且一次只处理一个 request/response。

所以如果我理解正确的话,你问的是为什么你需要一个与数据库(和潜在的其他后端服务)对话的后端而不是直接从 front-end 调用数据库。

答案如下:

  • 如果您 运行 此应用程序仅在您的本地计算机上(front-end 和数据库),那么我可以理解为什么您不需要后端。
  • 如果这个应用程序暴露在互联网上,那么您的数据库可能会在几分钟内被劫持。

安全是这里的主要问题,运行在 client-side 上的所有内容(JS 东西)都可以很容易地被用户看到——这包括端点、密码等。不要提及您的业务逻辑已完全暴露给攻击者。

因此,后端在保护对数据库的访问、rate-limiting 和资源使用上限以及许多其他方面发挥着非常重要的作用。