如何在 AWS 上的 CI/CD 部署应用程序中管理 WebSocket,在这种情况下使用 WebSocket 创建网关最合理的位置在哪里?

问题描述 投票:0回答:2

我目前正在使用包含 NestJS、PostgreSQL 和 AWS 的堆栈开发一个应用程序。该应用程序将提供一个聊天环境,利用 OpenAI API 和 WebSocket 进行实时通信。

  • 如何使用 CI/CD 实践有效管理部署在 AWS 上的应用程序中的 WebSocket?

  • 我应该为此目的使用任何推荐的工具或服务吗?

  • 将 WebSocket 从本地环境过渡到 AWS 时是否有具体注意事项或最佳实践?

  • 如果我想在这种情况下利用 AWS API Gateway 和 AWS Lambda,如何才能最好地将它们合并到我的应用程序中?

  • 在此过程中我可能会遇到潜在的挑战吗?可能的解决方案或解决方法是什么?

  • 在这种情况下,使用 WebSocket 创建网关最合理的位置在哪里?

node.js aws-lambda websocket nestjs aws-api-gateway
2个回答
0
投票

如何使用 CI/CD 实践有效管理部署在 AWS 上的应用程序中的 WebSocket?

这里的管理是什么意思?保持更新吗?状态管理?

我应该为此目的使用任何推荐的工具或服务吗?

IaC 是最简单的资源管理方式。定义 AWS API、数据库(例如 aurora)以及相关权限和资源的 IaC 模板可以进入 Git 存储库并管理基础设施资源以适当匹配代码版本。

将 WebSocket 从本地环境迁移到 AWS 时是否有具体注意事项或最佳实践?

如果您可以将其映射到 swagger 模板,则可以简化转换。或者如果它是通过代码在本地定义的。

如果我想在这种情况下利用 AWS API Gateway 和 AWS Lambda,如何最好地将它们合并到我的应用程序中?

API Gateway 将使用 Lambda 来处理每个请求。通过网络套接字响应 out。您也可以查看 appsync。

在此过程中我可能会遇到潜在的挑战吗?可能的解决方案或解决方法是什么?

很多。这就是需求陷阱的发现和优化发挥作用的地方。前进的道路有很多,但这一切都取决于工作流程的限制。

在这种情况下,使用 WebSocket 创建网关最合理的位置在哪里?

要么在前端(互联网可以访问),要么在内部。但这取决于谁在连接以及连接到什么。


0
投票
我建议您使用

AWS API Gateway 和 Lambda 函数来进行有效的 WebSocket 管理。它非常适合 AWS CodePipeline 和 GitHub 操作。至于其他工具,如果您在 EC2 上运行 NestJS,您可能会对DynamoDB(用于跟踪活动连接)和Elastic Load Balancer感兴趣。

从本地迁移到 AWS 时,您需要更新连接 URL 并设置适当的 IAM 角色和权限。

对于AWS API Gateway和AWS Lambda,在API Gateway中创建WebSocket路由。每个路由都会触发特定的 Lambda 函数。

潜在问题:

    连接超时 -> 实现心跳机制
  • 扩展问题 -> 使用 DynamoDB
  • 冷启动 -> 使用并发
在 NestJS 应用程序的单独模块中创建专用的 WebSocket 网关。我应该和这个类似

src/websocket/websocket.gateway.ts

© www.soinside.com 2019 - 2024. All rights reserved.