Microservices 如何在AWS Lambda上构建无服务器框架和微服务

Microservices 如何在AWS Lambda上构建无服务器框架和微服务,microservices,serverless,Microservices,Serverless,我一直在研究微服务和无服务器解决方案,并在玩一个托管在S3和Lambda函数上的角度前端,该函数通过AWS上的API网关与各种DynamoDb表进行对话 我阅读/观看的每个示例和视频都使用一个简单的CRUD微服务作为简单的“待办事项”应用程序或类似应用程序的一部分。我的问题是业务逻辑在哪里?如果我正在构建一个复杂的应用程序,我不希望所有的业务逻辑都出现在前端应用程序中。还是我?我可以构建一个应用程序API,它反过来调用CRUD微服务,但这感觉像是一种整体方法 我很感激可能没有一个明确的答案,但有

我一直在研究微服务和无服务器解决方案,并在玩一个托管在S3和Lambda函数上的角度前端,该函数通过AWS上的API网关与各种DynamoDb表进行对话

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


我很感激可能没有一个明确的答案,但有人能就最佳实践向新手提供建议吗?

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

  • 从很少的微服务开始(越少越好,除非你确切地知道服务分离应该是怎样的,否则会推迟拆分的决定)
  • 分离到API的业务逻辑,并将处理程序用作MVC中的控制器来调用业务逻辑。(这也有助于单元测试逻辑,而不依赖于Lambda)
  • 没有必要在API中只编写简单的CRUD。这取决于所需的域和业务逻辑。(但是,如果不将代码分离到不同的服务中,就不要构建另一个整体。几个AWS服务限制还将为您提供一些关于服务中应该有多少端点的指南等等。)
  • 应用可用于微服务的设计模式(例如,如果希望在每个微服务之间同步数据库,请使用使用SNS、DynamoDB Streams和Lambda的发布子模式)
  • 使用Angular应用程序放置大部分演示逻辑
  • 使用CloudFront作为代理和CDN以避免CORs
如果你需要更多的信息,你可以参考我写的以下文章


注意:您可以使用中的CloudFormation以最佳实践自动化S3和CloudFront的创建。

感谢您的回复,非常感谢。在我们发言时阅读您的文章,稍后将重新讨论这个问题。请阅读您的文章,谢谢。对我的问题还是有点困惑。例如如果我有两个CRUD微服务,一个用于“帖子”,一个用于“用户”,我需要检索带有相关用户详细信息的帖子,您是否会创建另一个端点,根据需要检索/组合数据,并由我的Angular frontend使用?谢谢您的时间。如果您有两个针对post和用户的微服务,请确保每个服务都是独立的。例如,当查询帖子时,应该将作者信息存储在服务中。这就是像AWS DynamoDB这样的文档数据库适合存储的地方。假设用户微服务中有用户更新方法。然后,在用户数据更新后,如果您有一个pubsub Messeng系统,应该可以同步数据。此外,还可以使用DynamoDB streams、Lambda和SNS实现pubsub Messeng。非常好的响应,谢谢。澄清;我应该存储用户个人帖子的详细信息。如果一个用户更新了他们的用户名,我会通过更新他们以前发的每一篇文章的用户名来与邮政服务同步吗?再次感谢你的帮助。这是一种非常新的方法,对我来说非常陌生:-)是的。要执行此同步,请使用pubsub,使每个服务松散耦合