1

我对 AWS Serverless 建筑完全陌生。

我试图生成项目架构,我阅读AWS codestar 了它以及它如何使用 Python 的 AWS Lambda 模板轻松创建新项目(这是我的情况)

但我不知道我是否应该:

  • 生成一个项目(主项目),AWS codestar然后为我拥有的每个微服务(UsersService,ContactService ...等)创建单独的文件夹

或者

  • 每个微服务都可以通过生成,AWS Codestar所以每个服务都是我的 lambdas 的单独 codestar 项目?

也许对你们中的一些人来说这是一个非常愚蠢的问题,欢迎任何帮助或有用的链接。

谢谢

4

2 回答 2

1

这通常是您对如何部署的决定,尽管我觉得普遍的共识将是选项 2。我将尝试解释原因。

选项 1 就是您所说的Monolith,这意味着您的应用程序的所有内容都在一个地方。这可能最初看起来不错,但有一些限制,我在下面详述:

  • 全有或全无部署,如果您更新应用程序的一小部分,您需要在任何地方部署。
  • 导致不相关组件之间的耦合,通常设计模式会导致重叠更改,从而导致堆栈其他部分的破坏性更改。
  • 难以扩展,您通常会扩展更大的块(即不是独立搜索和预订,而是将所有内容放在一起)。

您可以减轻这些问题,但这可能有点令人头疼。

第二种选择更倾向于微服务/解耦架构

这种方法的一些好处是:

  • 仅部署您所做的更改,如果搜索服务更改仅部署该更改。
  • 更容易扩展基础设施以满足特定需求。
  • 能够更轻松地实现组件的功能测试。
  • 限制对开发特定组件的用户的访问。

选项 2 是您基于微服务的存储库设置,所以我建议使用它。

于 2020-07-19T17:53:26.220 回答
1

我没有足够的声誉来发表评论,所以我会发布这个作为答案。

您要问的是软件架构问题,以及是否使用monorepopolyrepo。你已经做出了关于微服务的决定,所以这不是一个整体。

答案是……这取决于。没有普遍的共识。只需搜索 monorepo 与 polyrepo(或 multirepo)并准备好进入兔子洞。

作为无服务器应用程序应该与您决定的结构类型无关。但是,CodeStar 可能有一些限制,使得使用 monorepo 变得更加困难。为此,我正在使用 CDK。

这里有几篇文章可以帮助您入门:

https://medium.com/@mattklein123/monorepos-please-dont-e9a279be011b

https://medium.com/@adamhjk/monorepo-please-do-3657e08a4b70

这是另一个与无服务器应用程序直接相关的内容:

https://lumigo.io/blog/mono-repo-vs-one-per-service/

于 2020-07-20T19:29:58.130 回答