运行 AWS lambda 上的 graphql 应用程序
Running a graphql app on AWS lambda
我正在尝试 运行 AWS lambda 上的 apollo graphql 服务器。服务器的当前架构是这样的 -
保存模式的一个主要 lambda 函数,这是客户端与之通信的函数。此函数中的每个解析器都会调用其他包含解析器核心逻辑的 lambda 函数。使用 lambda.invoke 方法调用其他 lambda 函数。
一堆其他 lambda 函数,每个函数都包含特定任务的逻辑。这些将由主 lambda 函数中的解析器使用。这些功能还与 dynamoDB 进行存储。
问题 - 客户端发出请求,主 lambda 函数接收它,调用另一个 lambda 函数获取结果,主函数获取结果,returns 将结果返回给用户。
主要的 lambda 函数是 运行ning 不必要的,直到它从它调用的 lambda 函数返回结果。这是增加成本,也可能有超过 2 层的连锁店。
建议的一种解决方案是将所有内容都塞进一个函数中。但这在未来会不会很难扩展?当它长大时,我将再次面临同样的问题。
人们通常如何在 lambda 上构建他们的 graphql 服务器?
我已经 运行 "jam everything into one lambda function" 架构投入生产大约一年了,它的扩展性相当好(数百名用户请求庞大的 GIS 数据,由 5 名左右的开发人员组成的团队构建解析器).
我已经在 GitHub 上写了一个参考实现,如果你想看:https://github.com/rozenmd/graphql-resolvers/tree/master/api
通常我们会将 resolvers.js
拆分到它自己的文件夹中,每个数据库模型一个文件。
我正在尝试 运行 AWS lambda 上的 apollo graphql 服务器。服务器的当前架构是这样的 -
保存模式的一个主要 lambda 函数,这是客户端与之通信的函数。此函数中的每个解析器都会调用其他包含解析器核心逻辑的 lambda 函数。使用 lambda.invoke 方法调用其他 lambda 函数。
一堆其他 lambda 函数,每个函数都包含特定任务的逻辑。这些将由主 lambda 函数中的解析器使用。这些功能还与 dynamoDB 进行存储。
问题 - 客户端发出请求,主 lambda 函数接收它,调用另一个 lambda 函数获取结果,主函数获取结果,returns 将结果返回给用户。 主要的 lambda 函数是 运行ning 不必要的,直到它从它调用的 lambda 函数返回结果。这是增加成本,也可能有超过 2 层的连锁店。
建议的一种解决方案是将所有内容都塞进一个函数中。但这在未来会不会很难扩展?当它长大时,我将再次面临同样的问题。
人们通常如何在 lambda 上构建他们的 graphql 服务器?
我已经 运行 "jam everything into one lambda function" 架构投入生产大约一年了,它的扩展性相当好(数百名用户请求庞大的 GIS 数据,由 5 名左右的开发人员组成的团队构建解析器).
我已经在 GitHub 上写了一个参考实现,如果你想看:https://github.com/rozenmd/graphql-resolvers/tree/master/api
通常我们会将 resolvers.js
拆分到它自己的文件夹中,每个数据库模型一个文件。