使用 amazon lambda 启动 spring 是否正确?
It is correct to use spring boot with amazon lambda?
我想要一个允许管理 json 对象、调用 SOAP 服务以及通过一组 lambda 服务上的 Spring 数据访问数据库的解决方案。
但是在网上我读到 lambda 函数应该非常简单。
也许 Spring 云是解决方案?
此致
在我看来 SpringBoot 对于 AWS Lambda 来说不是一个好的技术选择,但它是可能的。开始使用它的最佳方法是查看 aws-serverless-java-container. There is also a good blog post about Spring Cloud Functions on AWS Lambda 中的不同包装器和帮助器(如果您对此感兴趣)。
互联网告诉您 Lambda 函数应该很简单,因为它们更容易扩展。如果您在 AWS Lambda 之上使用 Spring Boot 创建另一个整体,那么这不是 AWS Lambda 的用途。
下面我列出了在 AWS Lambda 中使用 Spring Boot 的优点和缺点。可能还有更多,但这些是我首先想到的。
优势
- 您可以设置一个 API 网关与 AWS Lambda 的代理集成,然后像您习惯使用 Spring Boot 一样处理所有 REST 端点。
- 您不必管理您的实例,因为 AWS Lambda 会为您做这件事。
- 一旦一个 Lambda 函数实例启动了一个 Spring 引导容器,该函数将以一致的方式响应 Java 所期望的性能(至少这是我的经验Java Lambda 函数)。
缺点
- 更复杂,因为您需要将 API 网关事件映射到 Spring Boot 可以处理的 HTTP 事件。这就是上面提到的包装器已经为你做的。
- Lambda 函数的冷启动时间更长,因为 Spring 启动速度太慢,无法像 Lambda 函数预期的那样快速启动。这意味着,当启动新的 Lambda 函数实例时,您的响应时间会出现峰值。如果这是不可接受的,那么不要选择 Spring Boot with AWS Lambda。
- 您将拥有多个 Spring 启动容器 运行ning,但没有太多控制,因为 AWS Lambda 会在需要时启动实例。您可以控制最大和最小实例数,仅此而已。
- 从 AWS Lambda 进行 SQL 查询可能会很痛苦,因为实例数量无法控制。如果尖峰击中您的 Lambda 函数,您可能 运行 很快就会失去连接,因为它会启动越来越多的实例。
话虽如此,我过去使用过 Java Lambda 函数,很高兴 运行 它们在后台进行一些数据处理。但是,我不相信它们是像 REST API 这样的“面向客户”端点的好选择(除非您保留最少的 Lambda 实例 运行ning 但是您可以质疑 AWS Lambda 是您正确的选择)。
我想要一个允许管理 json 对象、调用 SOAP 服务以及通过一组 lambda 服务上的 Spring 数据访问数据库的解决方案。 但是在网上我读到 lambda 函数应该非常简单。 也许 Spring 云是解决方案?
此致
在我看来 SpringBoot 对于 AWS Lambda 来说不是一个好的技术选择,但它是可能的。开始使用它的最佳方法是查看 aws-serverless-java-container. There is also a good blog post about Spring Cloud Functions on AWS Lambda 中的不同包装器和帮助器(如果您对此感兴趣)。
互联网告诉您 Lambda 函数应该很简单,因为它们更容易扩展。如果您在 AWS Lambda 之上使用 Spring Boot 创建另一个整体,那么这不是 AWS Lambda 的用途。
下面我列出了在 AWS Lambda 中使用 Spring Boot 的优点和缺点。可能还有更多,但这些是我首先想到的。
优势
- 您可以设置一个 API 网关与 AWS Lambda 的代理集成,然后像您习惯使用 Spring Boot 一样处理所有 REST 端点。
- 您不必管理您的实例,因为 AWS Lambda 会为您做这件事。
- 一旦一个 Lambda 函数实例启动了一个 Spring 引导容器,该函数将以一致的方式响应 Java 所期望的性能(至少这是我的经验Java Lambda 函数)。
缺点
- 更复杂,因为您需要将 API 网关事件映射到 Spring Boot 可以处理的 HTTP 事件。这就是上面提到的包装器已经为你做的。
- Lambda 函数的冷启动时间更长,因为 Spring 启动速度太慢,无法像 Lambda 函数预期的那样快速启动。这意味着,当启动新的 Lambda 函数实例时,您的响应时间会出现峰值。如果这是不可接受的,那么不要选择 Spring Boot with AWS Lambda。
- 您将拥有多个 Spring 启动容器 运行ning,但没有太多控制,因为 AWS Lambda 会在需要时启动实例。您可以控制最大和最小实例数,仅此而已。
- 从 AWS Lambda 进行 SQL 查询可能会很痛苦,因为实例数量无法控制。如果尖峰击中您的 Lambda 函数,您可能 运行 很快就会失去连接,因为它会启动越来越多的实例。
话虽如此,我过去使用过 Java Lambda 函数,很高兴 运行 它们在后台进行一些数据处理。但是,我不相信它们是像 REST API 这样的“面向客户”端点的好选择(除非您保留最少的 Lambda 实例 运行ning 但是您可以质疑 AWS Lambda 是您正确的选择)。