如何在AWS Lambda

时间:2017-11-23 09:15:42

标签: microservices serverless

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

我阅读/观看的每个示例和视频都使用简单的CRUD微服务作为简单的todo'申请或类似。我的问题是业务逻辑在哪里?如果我构建一个复杂的应用程序,我不希望在我的前端Angular应用程序中使用我的所有业务逻辑。或者我呢?我可以构建一个Application API,它反过来调用CRUD微服务,但感觉就像一个单一的方法。

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

1 个答案:

答案 0 :(得分:3)

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

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

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

注意:您可以使用Deploying Angular/React Apps in AWS中的CloudFormation通过最佳做法自动创建S3和CloudFront。