Rest 我可以在同一台服务器上部署多个前端应用程序(web/mobile)和一个后端吗?

Rest 我可以在同一台服务器上部署多个前端应用程序(web/mobile)和一个后端吗?,rest,deployment,server,architecture,production,Rest,Deployment,Server,Architecture,Production,我需要一些帮助来决定我项目的架构(一个用于解锁折扣的web应用程序)。我首先计划创建这个网站(React用于前端,Django用于后端,PostgreSQL数据库)。将来,我可能也会为Android和iOS创建一个移动应用程序(还不确定前端框架是什么) 因此,我决定希望前端和后端完全分离,以便后端是一个RESTAPI。这将使我不必为移动应用程序创建多个后端 但是,在研究之后,我发现这在服务器成本方面可能相当昂贵。这是一个新的业务,我是唯一的开发者,所以资金不高。所以我想我可以在同一台服务器上部署

我需要一些帮助来决定我项目的架构(一个用于解锁折扣的web应用程序)。我首先计划创建这个网站(React用于前端,Django用于后端,PostgreSQL数据库)。将来,我可能也会为Android和iOS创建一个移动应用程序(还不确定前端框架是什么)

因此,我决定希望前端和后端完全分离,以便后端是一个RESTAPI。这将使我不必为移动应用程序创建多个后端

但是,在研究之后,我发现这在服务器成本方面可能相当昂贵。这是一个新的业务,我是唯一的开发者,所以资金不高。所以我想我可以在同一台服务器上部署前端和后端,但作为通过nginx进行通信的独立应用程序

我对此有4个问题:

  • 如果我这样做,是否仍有可能将后端重新用作移动应用程序的RESTAPI,还是因为它链接到web前端而拒绝
  • 如果可能的话,我是否能够在同一台服务器上托管移动前端(因此所有内容都托管在一台服务器上)
  • 这是一个愚蠢的想法吗?从长远来看,将所有内容部署到单独的服务器(以减少负载)会更好吗
  • 我以后应该担心这个吗?目前,只需将分离的web前端和后端部署到同一台服务器

  • 我从来没有真正将任何东西部署到实际的生产环境中,所以如果我的问题看起来很愚蠢,我很抱歉。我还没有开始开发,但我想在开始之前考虑一下可伸缩性和未来的可扩展性。谢谢。

    现在我会选择无服务器方式。您可以专注于应用程序的功能,而不用维护服务器

    有很多选择。例如,您可以检查AWS Amplify()或Netlify()以获得更“完整堆栈”的方法

    在AWS中,您还可以保持独立的项目,后端在lambdas中,前端通过S3+CloudFront提供服务。您也不需要关心服务器

    只有一些示例说明了如何在没有服务器的情况下解决问题,但回答了您的问题:

  • 无论应用程序的部署方式如何,您都可以重用API。这将更多地与你如何设计它们有关
  • 是的,如果您愿意,您可以在一台服务器上托管所有内容,但我真的不建议这样做
  • 如果你不想为24/7服务器付费,你可以选择无服务器方式
  • 正如我之前告诉过你的,你可以做你想做的事,而不用担心服务器

  • 您的主要关注点是降低成本,并实施一个好的解决方案。我的建议是寻找。Lightsail提供固定价格的虚拟机,您可以自行配置,在撰写本答案时,它的起价为每月3.5美元

    我对你问题的回答
  • 如果我这样做,是否仍有可能将后端重新用作移动应用程序的RESTAPI,还是因为它链接到web前端而拒绝

    • 是的,有可能。将前端和后端保持在不同的repo中,您可以将其作为docker实例部署在同一台服务器上。您将有1个前端docker容器和1个后端docker容器,它们可以相互通信
  • 如果可能的话,我是否能够在同一台服务器上托管移动前端(因此所有内容都托管在一台服务器上)

    • 对于移动设备,您将开发一个可以发布到playstore或部署到smartphone的移动应用程序。然后,您的应用程序可以调用后端服务并获得JSON响应。因此,您必须设计后端,使其能够为两个请求提供数据
  • 这是一个愚蠢的想法吗?从长远来看,将所有内容部署到单独的服务器(以减少负载)会更好吗

      对于长期和设计的角度,需要考虑可扩展性、可维护性、安全性等因素,所以最好有多个服务器来避免<代码>单点故障 <
  • 我以后应该担心这个吗?目前,只需将分离的web前端和后端部署到同一台服务器

    • 我给你的建议是现在仔细想想,这样你以后就不会做噩梦了。现在就投入你的时间,设计一个稳定的解决方案,它可以长期帮助你。正如您提到的,这是一个小企业,但您的解决方案应该能够轻松处理增长
  • 我的建议
    • 正如保罗建议的那样,
      S3+CloudFront
      对于前端来说很合适。您可以使用Lightsail获得1年免费CDN

    • 对于后端,您应该至少有2台(我建议至少3台)服务器并部署后端docker容器。您可以使用
      docker compose
      自动部署。如果您想协调,那么
      Docker Swarm模式是最好的。这样可以避免单点故障。您可以从

    • 对于数据库,您需要使其具有可伸缩性。为了确保可扩展性和高可用性,我们应该有复制数据库。至少3 DB实例将是良好的起点
      MongoDB
      是一个不错的选择。通过简单的配置,您可以启用DB复制。1主2从实例

    • 服务器前面有一个负载平衡器,用于分配负载。为了节省成本,您可以自己配置负载平衡器,但这将增加学习曲线,您必须花费时间了解细节。更好的解决方案是使用托管负载平衡器。在撰写此答案时,提供每月18美元的负载平衡器