2

我一直在研究微服务和无服务器解决方案,并且正在使用托管在 S3 和 Lambda 函数上的 Angular 前端,这些函数通过 AWS 上的 API 网关与各种 DynamoDb 表通信。

我阅读/观看的每个示例和视频都使用简单的 CRUD 微服务作为简单的“待办事项”应用程序或类似应用程序的一部分。我的问题是业务逻辑在哪里?如果我正在构建一个复杂的应用程序,我不希望我的前端 Angular 应用程序中的所有业务逻辑。还是我?我可以构建一个应用程序 API,然后调用 CRUD 微服务,但这感觉像是一种单一的方法。

我很欣赏可能没有明确的答案,但有人可以就最佳实践向新手提出建议吗?

4

1 回答 1

3

我在设计无服务器微服务时遵循了几个最佳实践

  • 只从几个微服务开始(越少越好,除非你确切地知道服务分离应该如何,延迟分割的决定)
  • 分离到 API 的业务逻辑,并使用处理程序作为 MVC 中的控制器来调用业务逻辑。(这也有助于在不依赖 Lambda 的情况下对逻辑进行单元测试)。
  • 不必在 API 中只编写简单的 CRUD。这取决于您的域和所需的业务逻辑。(但不要在没有将代码分离到不同服务的情况下构建另一个单体应用程序。一些 AWS 服务限制也会为您提供一些关于服务中应该有多少端点等的指导。)
  • 应用可用于微服务的设计模式(例如,如果您想在每个微服务之间同步数据库,请使用使用 SNS、DynamoDB Streams 和 Lambda 的 Pub-Sub 模式)
  • 使用 Angular App 来放置大部分表示逻辑。
  • 使用 CloudFront 作为代理和 CDN 以避免 COR。

如果您需要更多信息,可以参考我写的以下文章。

注意:您可以使用在 AWS 中部署 Angular/React 应用程序中的 CloudFormation 以通过最佳实践自动创建 S3 和 CloudFront。

于 2017-11-23T10:13:49.830 回答