AWS ECS - 部署全栈项目的最佳方式(任务定义、集群和服务)

Posted

技术标签:

【中文标题】AWS ECS - 部署全栈项目的最佳方式(任务定义、集群和服务)【英文标题】:AWS ECS -Best way to deploy a full stack project(Task-Definitions, Clusters & Services) 【发布时间】:2021-05-28 21:53:27 【问题描述】:

您好,我想将我的全栈项目部署到 AWS ECS。如果我理解正确的话,在 ECS 中部署前端和后端有 3 种可能性:

    前端和后端在同一个任务定义中,同一个集群 和相同的服务(1 个任务定义、1 个集群、1 个服务)

    前端和后端有自己的任务定义。他们在 同一个集群并在两个服务中运行(2 个任务定义,1 个 集群,2 个服务)

    前端和后端有自己的任务定义,他们自己的 集群和自己的服务(2个任务定义,2个集群,2个服务)

我已经尝试过第一个解决方案,效果很好。那么部署它的最佳解决方案是什么?每种解决方案的优缺点是什么?

我还想开发一个应用程序(将来使用相同的后端),所以我认为解决方案二比一个更好。我想解决方案一更便宜,因为我运行的任务更少?

【问题讨论】:

【参考方案1】:

没有理由将它们分成单独的集群。如果您在 Fargate 上运行它们,那么单独的集群是没有意义的。如果您在 EC2 上运行它们,那么单独的集群实际上会花费更多,而没有真正的好处。

同一集群中的单独服务(选项 2)通常是首选方法,因为您可以独立扩展每个服务。但是,如果您的整个前端只是提供一些 React 资源,您可以将其部署为 S3 上的静态站点。

【讨论】:

以上是关于AWS ECS - 部署全栈项目的最佳方式(任务定义、集群和服务)的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS ECS 上使用 docker-compose 进行持续部署的最佳实践

AWS - ECS - 如何在现有 ECS(带有 1 个 EC2)实例上重新部署更新的 Docker 映像?

AWS ElasticBeanstalk Multidocker 没有使用正确的 Cmd 创建 ECS 任务

如何通过 terraform 在 ecs 任务定义中指定环境变量?

如何在 AWS ECS 中扩展任务/容器

一个集群上的 AWS ECS 多任务定义