代码之家  ›  专栏  ›  技术社区  ›  Jiew Meng

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

  •  0
  • Jiew Meng  · 技术社区  · 6 年前

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

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

    我只是想知道我该怎么办。看起来最简单的是,我用一个大型SAM/Cloudformation模板将所有内容放入一个repo中,但这似乎不可伸缩。

    我在想:

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

    但开始觉得这很有挑战性。我认为当我部署1个部分时,它会从这样一个设置中的其他服务中删除api?

    有什么建议吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   sayboras    6 年前

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

    但是,所有的服务都是共享的 专有网络 ECS集群 . 这些资源是作为平台配置的一部分创建的。今后,它们不太可能改变或经常改变。此外,由于microservice代码+infra位于不同的cloudformation堆栈中,因此可以频繁地进行更新。值得注意的一点是,我们正在使用git公共模块,以避免跨微服务的基础设施重复,例如ALB、蓝绿色部署等在跨微服务时或多或少是相同的。

    希望有帮助。