如何在具有微服务架构的无服务器项目中使用 codestar?
How to use codestar in a serverless project having a microservice architecture?
我对 AWS Serverless
架构完全陌生。
我试图生成项目架构,我阅读了 AWS codestar
以及它如何使用 Python(我的情况)使用 AWS Lambda 模板轻松创建新项目
但我不知道是否应该:
- 用
AWS codestar
生成一个项目(主项目)然后
我为我拥有的每个微服务创建单独的文件夹
(UsersService, ContactService ...等)
或
- 每个微服务都可以通过
AWS Codestar
生成,所以每个
service 是我的 lambda 的一个单独的 codestar 项目?
对于你们中的某些人来说,这可能是一个非常愚蠢的问题,欢迎提供任何帮助或有用的链接。
谢谢
这通常是您对部署方式的决定,尽管我认为普遍的共识是选项 2。我将尝试解释原因。
选项 1 就是您所说的 Monolith,这意味着您的应用程序的所有内容都集中在一个地方。这可能最初看起来不错,但有一些限制,我在下面详细说明:
- 全有或全无部署,如果您更新应用程序的一小部分,则需要在所有地方部署。
- 导致不相关组件之间的耦合,通常设计模式会导致重叠更改,从而导致堆栈其他部分发生重大更改。
- 扩展难度较大,您通常会扩展较大的块(即,不是独立搜索和预订,而是将所有内容放在一起)。
您可以缓解这些问题,但这可能有点令人头疼。
第二个选项更倾向于Microservice/Decoupled架构。
这种方法的一些好处是:
- 仅部署您所做的更改,如果搜索服务发生更改,则仅部署它。
- 更容易扩展基础架构以满足特定需求。
- 能够更轻松地实现组件的功能测试。
- 限制对开发特定组件的用户的访问。
选项 2 是基于微服务的存储库设置,所以我建议使用它。
我没有足够的声誉来发表评论,所以我将 post 作为答案。
您问的是软件架构问题,以及是否使用 monorepo 与 polyrepo。您已经做出了关于微服务的决定,所以这不是一个整体。
答案是……这取决于。没有普遍的共识。只需在 monorepo 与 polyrepo(或 multirepo)上进行搜索,并准备好进入兔子洞。
作为无服务器应用程序应该与您决定的结构类型无关。但是,CodeStar 可能有一些限制,这使得使用 monorepo 变得更加困难。我正在为此使用 CDK。
这里有几篇文章可以帮助您入门:
https://medium.com/@mattklein123/monorepos-please-dont-e9a279be011b
https://medium.com/@adamhjk/monorepo-please-do-3657e08a4b70
这是另一个与无服务器应用程序直接相关的内容:
我对 AWS Serverless
架构完全陌生。
我试图生成项目架构,我阅读了 AWS codestar
以及它如何使用 Python(我的情况)使用 AWS Lambda 模板轻松创建新项目
但我不知道是否应该:
- 用
AWS codestar
生成一个项目(主项目)然后 我为我拥有的每个微服务创建单独的文件夹 (UsersService, ContactService ...等)
或
- 每个微服务都可以通过
AWS Codestar
生成,所以每个 service 是我的 lambda 的一个单独的 codestar 项目?
对于你们中的某些人来说,这可能是一个非常愚蠢的问题,欢迎提供任何帮助或有用的链接。
谢谢
这通常是您对部署方式的决定,尽管我认为普遍的共识是选项 2。我将尝试解释原因。
选项 1 就是您所说的 Monolith,这意味着您的应用程序的所有内容都集中在一个地方。这可能最初看起来不错,但有一些限制,我在下面详细说明:
- 全有或全无部署,如果您更新应用程序的一小部分,则需要在所有地方部署。
- 导致不相关组件之间的耦合,通常设计模式会导致重叠更改,从而导致堆栈其他部分发生重大更改。
- 扩展难度较大,您通常会扩展较大的块(即,不是独立搜索和预订,而是将所有内容放在一起)。
您可以缓解这些问题,但这可能有点令人头疼。
第二个选项更倾向于Microservice/Decoupled架构。
这种方法的一些好处是:
- 仅部署您所做的更改,如果搜索服务发生更改,则仅部署它。
- 更容易扩展基础架构以满足特定需求。
- 能够更轻松地实现组件的功能测试。
- 限制对开发特定组件的用户的访问。
选项 2 是基于微服务的存储库设置,所以我建议使用它。
我没有足够的声誉来发表评论,所以我将 post 作为答案。
您问的是软件架构问题,以及是否使用 monorepo 与 polyrepo。您已经做出了关于微服务的决定,所以这不是一个整体。
答案是……这取决于。没有普遍的共识。只需在 monorepo 与 polyrepo(或 multirepo)上进行搜索,并准备好进入兔子洞。
作为无服务器应用程序应该与您决定的结构类型无关。但是,CodeStar 可能有一些限制,这使得使用 monorepo 变得更加困难。我正在为此使用 CDK。
这里有几篇文章可以帮助您入门:
https://medium.com/@mattklein123/monorepos-please-dont-e9a279be011b
https://medium.com/@adamhjk/monorepo-please-do-3657e08a4b70
这是另一个与无服务器应用程序直接相关的内容: