Rest 我可以在同一台服务器上部署多个前端应用程序(web/mobile)和一个后端吗?
我需要一些帮助来决定我项目的架构(一个用于解锁折扣的web应用程序)。我首先计划创建这个网站(React用于前端,Django用于后端,PostgreSQL数据库)。将来,我可能也会为Android和iOS创建一个移动应用程序(还不确定前端框架是什么) 因此,我决定希望前端和后端完全分离,以便后端是一个RESTAPI。这将使我不必为移动应用程序创建多个后端 但是,在研究之后,我发现这在服务器成本方面可能相当昂贵。这是一个新的业务,我是唯一的开发者,所以资金不高。所以我想我可以在同一台服务器上部署前端和后端,但作为通过nginx进行通信的独立应用程序 我对此有4个问题:Rest 我可以在同一台服务器上部署多个前端应用程序(web/mobile)和一个后端吗?,rest,deployment,server,architecture,production,Rest,Deployment,Server,Architecture,Production,我需要一些帮助来决定我项目的架构(一个用于解锁折扣的web应用程序)。我首先计划创建这个网站(React用于前端,Django用于后端,PostgreSQL数据库)。将来,我可能也会为Android和iOS创建一个移动应用程序(还不确定前端框架是什么) 因此,我决定希望前端和后端完全分离,以便后端是一个RESTAPI。这将使我不必为移动应用程序创建多个后端 但是,在研究之后,我发现这在服务器成本方面可能相当昂贵。这是一个新的业务,我是唯一的开发者,所以资金不高。所以我想我可以在同一台服务器上部署
我从来没有真正将任何东西部署到实际的生产环境中,所以如果我的问题看起来很愚蠢,我很抱歉。我还没有开始开发,但我想在开始之前考虑一下可伸缩性和未来的可扩展性。谢谢。现在我会选择无服务器方式。您可以专注于应用程序的功能,而不用维护服务器 有很多选择。例如,您可以检查AWS Amplify()或Netlify()以获得更“完整堆栈”的方法 在AWS中,您还可以保持独立的项目,后端在lambdas中,前端通过S3+CloudFront提供服务。您也不需要关心服务器 只有一些示例说明了如何在没有服务器的情况下解决问题,但回答了您的问题:
您的主要关注点是降低成本,并实施一个好的解决方案。我的建议是寻找。Lightsail提供固定价格的虚拟机,您可以自行配置,在撰写本答案时,它的起价为每月3.5美元 我对你问题的回答
- 是的,有可能。将前端和后端保持在不同的repo中,您可以将其作为docker实例部署在同一台服务器上。您将有1个前端docker容器和1个后端docker容器,它们可以相互通信
- 对于移动设备,您将开发一个可以发布到playstore或部署到smartphone的移动应用程序。然后,您的应用程序可以调用后端服务并获得JSON响应。因此,您必须设计后端,使其能够为两个请求提供数据
-
对于长期和设计的角度,需要考虑可扩展性、可维护性、安全性等因素,所以最好有多个服务器来避免<代码>单点故障 <
- 我给你的建议是现在仔细想想,这样你以后就不会做噩梦了。现在就投入你的时间,设计一个稳定的解决方案,它可以长期帮助你。正如您提到的,这是一个小企业,但您的解决方案应该能够轻松处理增长
- 正如保罗建议的那样,
对于前端来说很合适。您可以使用Lightsail获得1年免费CDNS3+CloudFront
- 对于后端,您应该至少有2台(我建议至少3台)服务器并部署后端docker容器。您可以使用
自动部署。如果您想协调,那么docker compose
Docker Swarm模式是最好的。这样可以避免单点故障。您可以从
- 对于数据库,您需要使其具有可伸缩性。为了确保可扩展性和高可用性,我们应该有复制数据库。至少3 DB实例将是良好的起点
是一个不错的选择。通过简单的配置,您可以启用DB复制。1主2从实例MongoDB
- 服务器前面有一个负载平衡器,用于分配负载。为了节省成本,您可以自己配置负载平衡器,但这将增加学习曲线,您必须花费时间了解细节。更好的解决方案是使用托管负载平衡器。在撰写此答案时,提供每月18美元的负载平衡器