Websocket을 gRPC로?

Stop._.bmin·2024년 3월 5일
0

마이그레이션 이전에 개인적으로 research해본 정보들을 대략적으로 써본 게시물이므로, 추후에 수정될 수 있고 프로젝트가 진행됨에 따라 새롭게 쓰여질 수 있습니다.

WebSocket + API GateWay → gRPC + Spring로 옮기기 위해서

기존 구조에서 Lambda와 API Gateway가 데이터 처리 및 클라이언트와 통신을 담당하다 이제는 Spring과 gRPC가 대체하게 된다.

새로운 구조에서의 역할

gRPC: API Gateway와 Websocket의 역할을 대체하게 된다. gRPC는 클라이언트와 서버 간의 양방향 통신을 지원하므로, 실시간 데이터 스트리밍에 적합하다. 클라이언트는 gRPC를 사용하여서 서버에 연결하고, 서버로부터 실시간으로 위치 데이터를 수신할 수 있다.

Spring Boot: AWS Lambda 역할을 대체하게 된다. gRPC서버를 구현하여, 위치 데이터의 수신, 처리, 데이터베이스 저장 등의 로직을 처리한다. Spring Data를 사용하여 데이터베이스와의 상호작용을 쉽게 관리할 수 있다.

대략적인 구조

  1. 데이터 수신: 기사님의 위치 실시간 데이터는 Amazon Kinesis를 통해 스트림됩니다.
  2. 데이터 처리: 이전에는 AWS Lambda가 이 역할을 했지만, 이제는 Spring Boot 애플리케이션 내에서 구현된 gRPC 서버가 데이터를 받아 처리합니다. Spring 애플리케이션은 Kinesis 스트림 데이터를 폴링하거나 Kinesis Data Streams API를 사용하여 데이터를 읽어올 수 있습니다.
  3. 데이터 저장: 처리된 위치 데이터는 Spring Boot 애플리케이션을 통해 데이터베이스에 저장됩니다.
  4. 클라이언트 통신: 클라이언트와의 실시간 통신은 gRPC를 통해 이루어집니다. 클라이언트는 gRPC 클라이언트를 구현하여 서버에 연결하고, 서버로부터 위치 데이터를 실시간으로 받습니다.

profile
원하는 만큼만

0개의 댓글