我应该如何组织我的微服务以通过 CloudFormation 实现独立部署
How should I organise my micro-services for to enable independent deployment via CloudFormation
我正在尝试开发一个由我希望能够独立部署的多个组件组成的应用程序。
每个组件可能包含打包到部署到 ECS 或 Lambda 函数中的 Docker 容器中的部分。会有一些共享的基础设施,例如。 VPC/Subnets/ALB/Databases等
我只是想知道我该如何管理它。看起来最简单的是我将所有内容放入 1 个带有 1 个大 SAM/Cloudformation 模板的回购协议中,但这似乎不可扩展。
我想拥有:
- 1 个基本堆栈定义 API 网关、ALB、ECS 集群、子网和安全组
- 然后每个应用程序将定义自己的 ECR/ECS Tasks/Services 以附加到 ECS 集群,定义自己的 ALB 目标组。或者,如果它的 lambda 函数将自身配置为 link up with API Gateway。
但开始发现这非常具有挑战性。我想当我部署 1 个部分时,它会从这样的设置中的其他服务中删除 APIs?
推荐的解决方法是什么?
我在工作中有相同的结构。基本上,我们在 java 和 golang 中混合了一堆微服务应用程序。每个服务都应该有自己的基础设施堆栈(例如 ALB、API 网关配置、任务 fargate、dynamodb 表等)。
但是,所有服务只共享同一个VPC和ECS集群。这些资源是作为平台配置的一部分创建的。展望未来,它们不太可能更改或经常更改。此外,微服务代码+基础设施可以经常更新,因为它在不同的cloudformation堆栈中。值得注意的一点是,我们有 git 通用模块来避免跨微服务的基础设施重复,例如ALB、蓝绿部署等在微服务之间或多或少是相同的。
希望对您有所帮助。
我正在尝试开发一个由我希望能够独立部署的多个组件组成的应用程序。
每个组件可能包含打包到部署到 ECS 或 Lambda 函数中的 Docker 容器中的部分。会有一些共享的基础设施,例如。 VPC/Subnets/ALB/Databases等
我只是想知道我该如何管理它。看起来最简单的是我将所有内容放入 1 个带有 1 个大 SAM/Cloudformation 模板的回购协议中,但这似乎不可扩展。
我想拥有:
- 1 个基本堆栈定义 API 网关、ALB、ECS 集群、子网和安全组
- 然后每个应用程序将定义自己的 ECR/ECS Tasks/Services 以附加到 ECS 集群,定义自己的 ALB 目标组。或者,如果它的 lambda 函数将自身配置为 link up with API Gateway。
但开始发现这非常具有挑战性。我想当我部署 1 个部分时,它会从这样的设置中的其他服务中删除 APIs?
推荐的解决方法是什么?
我在工作中有相同的结构。基本上,我们在 java 和 golang 中混合了一堆微服务应用程序。每个服务都应该有自己的基础设施堆栈(例如 ALB、API 网关配置、任务 fargate、dynamodb 表等)。
但是,所有服务只共享同一个VPC和ECS集群。这些资源是作为平台配置的一部分创建的。展望未来,它们不太可能更改或经常更改。此外,微服务代码+基础设施可以经常更新,因为它在不同的cloudformation堆栈中。值得注意的一点是,我们有 git 通用模块来避免跨微服务的基础设施重复,例如ALB、蓝绿部署等在微服务之间或多或少是相同的。
希望对您有所帮助。