关于使用 MongoDB 托管 Express 应用程序的问题

Question about hosting Express app with MongoDB

我目前正在使用 Express 和 MongoDB 在后端构建我的第一个生产应用程序。我的第一个问题是什么是降压托管服务的最佳选择?从我目前的研究来看,我认为 DigitalOcean 看起来是一个很好的解决方案。

除此之外,由于除了 Heroku 之外,我从未真正部署过任何应用程序,所以我需要一些说明。如果我假设选择 DigitalOcean,我可以在同一个进程中同时托管我的 MongoDB 数据库和 Express 应用程序吗?我将如何连接到数据库?我会使用托管服务提供给我的进程 IP 地址,还是会像在本地一样通过 localhost 连接?如果我完全错了,请纠正我。

您可以选择 MongoDB Atlas Cloud,他们为数据库提供免费层托管服务。对于托管我推荐 AWS 的应用程序,您可以使用 S3/AWS Lambda/API 网关,它们都在 1 年的免费套餐下。

嗯,

在 Digital Ocean 中,Droplet 是一种可扩展的基于 Linux 的虚拟机,运行在虚拟化硬件之上。提供多种发行版(例如 Ubuntu、Fedora、CentOS、Debian 等)

因此,如果您创建一个 Droplet,您实际上拥有一个具有特定存储量和内存量的 Linux VM(取决于计划)。

如您所问,您可以在同一进程中同时托管 MongoDB 和 Express App,因为 Droplet 只是一个 Linux 实例。在这种情况下,您的 Express 应用程序可以通过 mongodb://localhost:27017

访问 MongoDB

您也可以为 MongoDB

创建一个 Droplet/Instance
  • 假设,如果您的应用程序可以扩展,您可能有多个 VMs/instances 因此,在每个 VM 上拥有本地数据库实例没有意义。最好访问中央源数据库。现在,您所有的实例都可以通过其 IP 访问它。

  • 当您进一步扩展时,这会变得更加复杂,您可能需要更多的数据库实例、备份、数据库负载平衡器等。

最佳方法!

使用像 MongoDB Atlas 这样的云数据库或托管数据库更有意义。这解决了您所有的数据库可扩展性问题,提供了分片、通过 AWS、Azure 或 GCP 进行多云数据分发等功能(因为您可以选择使用哪个提供商)等。

您可以从免费 sandbox instance 开始,然后随着要求的变化,您可以升级。

此外,探索 AWS 免费套餐。

  • Amazon EC2 包含 750 小时的 运行 Linux EC2 实例 (t2.micro)

干杯!

不要在同一个 Droplet 中托管 MongoDB 和您的 Express 应用程序,您将遇到可扩展性问题。如果是爱好项目,那你肯定可以那样做。

我建议您使用 MongoDB atlas 来托管您的数据库,它具有许多功能并且是托管数据库服务,因此您无需担心可扩展性。它还有一个免费计划,足以入门。

您可以选择 5 美元的 droplet 来托管您的 express 应用程序,并在以后需要时进行升级。