저는 현재 React Native 프런트 엔드와 Lambda 기반 백엔드로 구성되는 새로운 게임 프로젝트를 진행하고 있습니다. 이 앱에는 활성 사용자 기록, 지오 펜싱 등과 같은 일부 실시간 기능이 필요합니다.
실시간 데이터 동기화를위한 정말 멋진 솔루션처럼 보이는 Firebase의 실시간 데이터베이스를보고 있었지만 AWS에는 이와 비슷한 것이 없다고 생각합니다.
AWS 서비스 만 사용하는 "서버리스"실시간에 대해 생각할 수있는 3 가지 옵션은 다음과 같습니다.
옵션 1 : WebSocket을 통한 AWS IoT 메시징
이것은 IoT SDK를 통한 관리되는 WebSockets 연결이라는 매우 분명합니다. 인바운드 및 아웃 바운드 이벤트에 대한 응답으로 Lambda를 트리거하고 WebSocket을 실시간 계층으로 사용하여 일반적으로 앱 클라이언트에서 사용자 지정 처리 논리를 구축 할 생각이었습니다.
이것의 단점은 적어도 Firebase와 비교할 때 이벤트의 데이터를 직접 처리해야한다는 것입니다. 그러면 WebSocket 위에 또 다른 관리 계층이 추가되고 애플리케이션 저장소의 API 데이터 계층으로 표준화되어야합니다. .
장점 :
- 확장 가능한 양방향 실시간 연결
단점 :
- 앱이 열려있을 때만 작동합니다.
- 메시지 구조를 구현해야합니다.
- 관리 할 여러 전송 계층
옵션 2 : 푸시 트리거 리 페치
또 다른 옵션은 푸시 알림을 실시간 트리거로 사용하지만 API Gateway에 대한 일반 HTTP 요청을 사용하여 실제로 업데이트 된 페이로드를 가져 오는 것입니다.
저는이 접근 방식이 애플리케이션 상태에 대해 단 하나의 전송 계층과 단일 소스 소스에만 적용되기 때문에 좋아합니다. 푸시 알림이므로 앱이 열리지 않을 때도 업데이트를 트리거합니다.
단점은 가져와야하는 데이터에 대한 푸시 알림 간의 매핑이 잠재적으로 어려운 사용자 지정 작업이 많다는 것입니다.
장점 :
- 푸시 알림은 앱이 닫혀도 작동합니다.
- 단일 진실 소스, 전송 계층
단점 :
- 대부분의 맞춤형 솔루션
- 전체적으로 더 많은 HTTP 요청을 포함합니다.
옵션 3 : Cognito Sync 이것은 저에게 더 새로운 것이며 실제로 서버에서 인터페이스 할 수 있는지 확실하지 않습니다.
Cognito Sync는 사용자 상태 동기화를 제공합니다. 오프라인 지원으로 완료되고 어쨌든 사용할 Cognito SDK의 일부입니다. 내가 찾던 것 같지만 장치 중 하나가 아닌 AWS에서 업데이트를 수정 또는 "트리거"할 수 있는지에 대한 결정적인 증거를 찾지 못했습니다.
장점 :
- 추상화 된 실시간 데이터 모델 제공
- Cognito 사용자 레코드 OOTB에 연결됨
단점 :
- Lambda에서 수정 또는 업데이트 할 수 있는지 확실하지 않음
Lambda 기반 아키텍처의 일부로 AWS에서 실시간으로 수행 한 경험이 있고 진행하는 가장 좋은 방법에 대한 의견이 있는지 궁금합니다.