我应如何组织微服务以通过CloudFormation进行独立部署

时间:2018-08-01 09:41:08

标签: architecture amazon-cloudformation

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

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

我只是想知道我该如何处理。似乎最简单的方法是,我使用1个大型SAM / Cloudformation模板将所有内容放入1个存储库中,但似乎无法扩展。

我当时想拥有:

  • 1个基本堆栈,定义API网关,ALB,ECS群集,子网和安全组
  • 然后,每个应用程序都将定义自己的ECR / ECS任务/服务以附加到ECS集群,并定义自己的ALB目标组。或者,如果其lambda函数将自身配置为与API Gateway链接。

但是开始发现这非常具有挑战性。我认为,当我部署1部分时,会在这种设置中从其他服务中删除API吗?

推荐的解决方法是什么?

1 个答案:

答案 0 :(得分:1)

我的工作结构相同。基本上,我们将一堆微服务应用程序混合在java和golang中。每个服务应具有其自己的基础架构(例如ALB,API网关配置,任务Fargate,Dynamodb表等)。

但是,所有服务仅共享相同的 VPC ECS集群。这些资源是平台置备的一部分。展望未来,它们不太可能会更改或经常更改。此外,由于微服务代码和基础结构位于不同的cloudformation堆栈中,因此可以经常进行更新。值得注意的一点是,我们拥有git通用模块来避免跨微服务的基础设施复制,例如微服务之间的ALB,蓝绿色部署等大致相同。

希望有帮助。