Amazon Fargate与EC2容器网站托管

时间:2020-07-09 08:26:18

标签: amazon-web-services docker amazon-ec2 hosting next.js

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

在这里,对于容器托管,ECS EC2和ECS Fargate,AWS提供的两种产品感到困惑。虽然Fargate确实感觉更好,因为应用程序通常会处于空闲状态,但是对于Fargate中的容器资源调配,我们确实感到困惑。该应用程序在NextJS上运行,因此将在服务器端呈现。

所以我的问题是,0.5 GB RAM x 0.25 vCPU的组合对于服务器端渲染的NextJS应用程序是否足够?还是应该购买专用的EC2?还是其他云提供商?

1 个答案:

答案 0 :(得分:0)

NextJS是一个在Node.js之上运行的框架,因为没有这样的具体要求(文档中提到了{nodejs 10 only),但是您可以将它们当作Node.js来对待。

Node.js with V8 suitable for limited memory device?

所以我的问题是,将0.5 GB RAM x 0.25 vCPU的组合 服务器端渲染的NextJS应用程序足够使用了?还是我应该去 专用的EC2?还是其他云提供商?

我不建议使用EC2类型的ECS服务,您可以使用最少的内存和CPU进行 fargate ,并在需要时设置ECS服务的自动扩展。

但是我认为我们有一个更好的选择,那就是serverless-nextjs

无服务器部署通过将应用程序分成较小的部分(也称为[{lambdas] 3)极大地提高了可靠性和可伸缩性。对于Next.js,pages目录中的每个页面都变成了无服务器lambda。

number of benefits到无服务器。引用的链接在Express的上下文中讨论了其中的一些,但是这些原则普遍适用:无服务器允许分布式故障点,无限的可伸缩性,并且通过“按使用付费”模型可以负担得起。 enter image description here

Serverless Nextjs