Architecture 我应该如何组织我的micro服务,以便通过CloudFormation实现独立部署

Architecture 我应该如何组织我的micro服务,以便通过CloudFormation实现独立部署,architecture,amazon-cloudformation,Architecture,Amazon Cloudformation,我正在尝试开发一个由多个组件组成的应用程序,我希望能够独立部署这些组件 每个组件可能包含打包到部署到ECS的Docker容器中的部件,或者仅包含Lambda函数。将有一些共享基础设施,例如VPC/子网/ALB/数据库等 我只是想知道我该怎么办。看起来最简单的方法是我用一个大型SAM/Cloudformation模板将所有内容放入1个回购协议中,但这似乎不可扩展 我在想: 1个基本堆栈定义API网关、ALB、ECS群集、子网和安全组 然后,每个应用程序将定义自己的ECR/ECS任务/服务以连接到

我正在尝试开发一个由多个组件组成的应用程序,我希望能够独立部署这些组件

每个组件可能包含打包到部署到ECS的Docker容器中的部件,或者仅包含Lambda函数。将有一些共享基础设施,例如VPC/子网/ALB/数据库等

我只是想知道我该怎么办。看起来最简单的方法是我用一个大型SAM/Cloudformation模板将所有内容放入1个回购协议中,但这似乎不可扩展

我在想:

  • 1个基本堆栈定义API网关、ALB、ECS群集、子网和安全组
  • 然后,每个应用程序将定义自己的ECR/ECS任务/服务以连接到ECS群集,并定义自己的ALB目标组。或者如果其lambda函数将自身配置为与API网关连接
但我开始觉得这很有挑战性。我认为,当我部署1部分时,它会在这样的设置中从其他服务中删除API吗


推荐的解决方法是什么

我在工作中也有同样的结构。基本上,我们在java和golang中混合了大量的微服务应用程序。每个服务都应该有自己的infra堆栈(例如ALB、API网关配置、任务fargate、dynamodb表等)

但是,所有服务只共享相同的VPCECS集群。这些资源是作为平台资源调配的一部分创建的。展望未来,它们不太可能改变或经常改变。此外,微服务代码+infra可以频繁更新,因为它位于不同的云信息堆栈中。值得注意的一点是,我们正在使用git通用模块来避免跨微服务的基础设施重复,例如ALB、蓝绿部署等在微服务中或多或少是相同的

希望能有帮助