首页 > 解决方案 > Amazon Fargate 与 EC2 容器网站托管

问题描述

我最近有一个项目,我必须在其中构建一个 React / NextJS 应用程序,该应用程序将服务于偶尔的高流量,但大部分时间都是闲置的。我们目前正在寻找所有类别中最便宜的选择,但也希望构建一个可扩展且可管理的应用程序,该应用程序具有快速简便的 CI/CD 管道。对于开发服务器,我们选择了 Heroku 的免费计划和管道,因为我认为它对于这项工作完全空闲。对于生产,我们决定使用 Docker,因为它是设置 CD 管道的最佳方式,并且每月有 2000 分钟的免费 G​​ithub Actions,整个生产/开发管道对我们来说基本上是免费的。由于 AWS 的功能,我们还考虑使用它,并且我们希望管理最少数量的账单。对于 DB,我们' 重新考虑使用 DynamoDB,因为免费的 25GB 终生存储就足够了,因为站点中唯一的动态数据将是用户数据和博客。而对于对象存储,选择是 S3。

在这里,当涉及到容器托管、ECS EC2 和 ECS Fargate 时,我们对 AWS 的两种产品感到困惑。虽然 Fargate 确实感觉是一个更好的选择,因为应用程序大部分时间都处于空闲状态,但我们在 Fargate 中为容器提供资源时确实感到困惑。该应用程序在 NextJS 上运行,因此它将在服务器端呈现。

所以我的问题是,0.5 GB RAM x 0.25 vCPU对于服务器端渲染的 NextJS 应用程序来说,一个组合就足够了吗?还是我应该选择专用的 EC2?或者可能是另一个云提供商?

标签: amazon-web-servicesdockeramazon-ec2hostingnext.js

解决方案


NextJS 是一个在 nodejs 之上运行的框架,因为文档中没有提到这样的特定要求(仅限 nodejs 10),但您可以像对待 nodejs 一样对待它们。

带有 V8 的 Node.js 适用于内存有限的设备?

所以我的问题是,0.5 GB RAM x 0.25 vCPU 的组合对于服务器端渲染的 NextJS 应用程序是否足够?还是我应该选择专用的 EC2?或者可能是另一个云提供商?

我不会推荐 EC2 类型的 ECS 服务,您可以选择内存和 CPU 最少的Fargate ,并在需要时设置 ECS 服务的自动扩展。

但我认为我们有一个比 fargate 更好的选择,即 serverless -nextjs

无服务器部署通过将应用程序拆分为更小的部分(也称为 [ lambdas ] 3),显着提高了可靠性和可扩展性。对于 Next.js,pages 目录中的每个页面都成为一个无服务器 lambda。

无服务器有很多好处。引用的链接在 Express 的上下文中讨论了其中的一些,但这些原则普遍适用:无服务器允许分布式故障点、无限可扩展性,并且通过“按使用付费”模型非常实惠。 在此处输入图像描述

无服务器 Nextjs


推荐阅读