Firebase 실시간 데이터베이스에 해당하는 AWS는 무엇입니까?
저는 현재 React Native 프런트 엔드와 Lambda 기반 백엔드로 구성 될 새로운 게임 프로젝트를 진행하고 있습니다. 이 앱에는 활성 사용자 기록, 지오 펜싱 등과 같은 일부 실시간 기능이 필요합니다.
실시간 데이터 동기화를위한 정말 멋진 솔루션처럼 보이는 Firebase의 실시간 데이터베이스를보고 있었지만 AWS에는 이와 비슷한 것이 없다고 생각합니다.
AWS 서비스 만 사용하는 "서버리스"실시간에 대해 생각할 수있는 3 가지 옵션은 다음과 같습니다.
옵션 1 : WebSocket을 통한 AWS IoT 메시징
이것은 IoT SDK를 통한 관리되는 WebSockets 연결이라는 매우 분명합니다. 인바운드 및 아웃 바운드 이벤트에 대한 응답으로 Lambda를 트리거하고 WebSocket을 실시간 계층으로 사용하여 일반적으로 앱 클라이언트에서 사용자 지정 처리 논리를 구축 할 생각이었습니다.
이것의 단점은 적어도 Firebase와 비교할 때 이벤트의 데이터를 직접 처리해야한다는 것입니다. 그러면 WebSockets 위에 또 다른 관리 계층이 추가되고 애플리케이션 저장소의 API 데이터 계층으로 표준화되어야합니다. .
장점 :
- 확장 가능한 양방향 실시간 연결
단점 :
- 앱이 열려있을 때만 작동합니다.
- 메시지 구조를 구현해야합니다.
- 관리 할 여러 전송 계층
옵션 2 : 푸시 트리거 리 페치
또 다른 옵션은 푸시 알림을 실시간 트리거로 사용하지만 API Gateway에 대한 일반 HTTP 요청을 사용하여 실제로 업데이트 된 페이로드를 가져 오는 것입니다.
저는이 접근 방식이 애플리케이션 상태에 대해 단 하나의 전송 계층과 단일 소스 소스에만 적용되기 때문에 좋아합니다. 푸시 알림이므로 앱이 열리지 않을 때도 업데이트를 트리거합니다.
단점은 가져와야하는 데이터에 대한 푸시 알림 간의 매핑이 잠재적으로 어려운 사용자 지정 작업이 많다는 것입니다.
장점 :
- 푸시 알림은 앱이 닫혀 있어도 작동합니다.
- 단일 진실 소스, 전송 계층
단점 :
- 대부분의 맞춤형 솔루션
- 전체적으로 더 많은 HTTP 요청을 포함합니다.
옵션 3 : Cognito Sync 이것은 저에게 더 새로운 것이며 실제로 서버에서 인터페이스 할 수 있는지 확실하지 않습니다.
Cognito Sync는 사용자 상태 동기화를 제공합니다. 오프라인 지원으로 완료되고 어쨌든 사용할 Cognito SDK의 일부입니다. 내가 찾던 것 같지만 장치 중 하나가 아닌 AWS에서 업데이트를 수정 또는 "트리거"할 수 있는지에 대한 결정적인 증거를 찾지 못했습니다.
장점 :
- 추상화 된 실시간 데이터 모델 제공
- Cognito 사용자 레코드 OOTB에 연결됨
단점 :
- Lambda에서 수정 또는 업데이트 할 수 있는지 확실하지 않음
Lambda 기반 아키텍처의 일부로 AWS에서 실시간으로 수행 한 경험이 있고 진행하는 가장 좋은 방법에 대한 의견이 있는지 궁금합니다.
AWS Support에 유사한 질문을했는데 이것이 그들의 응답이었습니다.
그들에게 내 질문 :
동일한 브라우저 내 실시간 DBaaS에 Firebase와 같은 느낌을주는 AWS 서비스 그룹 (가능한 경우)은 무엇입니까?
AWS Cognito는 사용자 계정에 좋은 것 같습니다. WebSockets / 실시간 DB 부분과 비슷한 것이 있습니까?
그들의 반응 :
귀하의 질문에 Firebase는 AWS 서비스 AWS MobileHub에 가장 가깝습니다. 아래 링크에서 mobilehub에 대한 자세한 내용을 확인할 수 있습니다.
https://aws.amazon.com/mobile/details/ https://aws.amazon.com/mobile/getting-started/
"AWS Cognito는 사용자 계정에 적합한 것 같습니다. WebSockets / 실시간 DB 부분에 유사한 것이 있습니까?"
Amazon Dynamodb는 규모에 관계없이 일관된 한 자릿수 밀리 초 지연 시간이 필요한 모든 애플리케이션을위한 빠르고 유연한 NoSQL 데이터베이스 서비스입니다. 완전 관리 형 클라우드 데이터베이스이며 문서 및 키-값 저장소 모델을 모두 지원합니다. 유연한 데이터 모델, 안정적인 성능 및 처리 용량의 자동 확장을 통해 모바일, 웹, 게임, 광고 기술, IoT 및 기타 여러 애플리케이션에 매우 적합합니다.
Amazon Dynamodb는 완전 관리 형 고 가용성 인 메모리 캐시 인 Amazon DynamoDB Accelerator (DAX)로 더욱 최적화 할 수 있으며, 이는 초당 수백만 개의 요청에서도 Amazon DynamoDB 응답 시간을 밀리 초에서 마이크로 초로 줄일 수 있습니다.
자세한 내용은 아래 문서를 참조하십시오.
https://aws.amazon.com/dynamodb/getting-started/ https://aws.amazon.com/dynamodb/dax/
Should you have any further questions, please do not hesitate to let me know.
Thanks.
Best regards,
Tayo O. Amazon Web Services
Check out the AWS Support Knowledge Center, a knowledge base of articles and videos that answer customer questions about AWS services: https://aws.amazon.com/premiumsupport/knowledge-center/?icmpid=support_email_category
Also while researching this answer I also found this, looks interesting:
The comments to that article is interesting as well.
Jacob Wakeem: What advantage this approach have over using aws iot? It seems that iot has all these functionality without writing a single line of code and with server-less architecture.
Sam Dengler: The managed PubSub feature in the AWS IoT service is also a good approach to message-based applications, like the one demonstrated in the article. With Elasticache (Redis), customers who use Pub/Sub are typically also using Redis as a data store for other use cases such as caching, leaderboards, etc. With that said, you could also use ElastiCache (Redis) with the AWS IoT service by triggering an AWS Lambda function via the AWS IoT rules engine. Depending on how the message-based application is architected and how the data is leveraged, one solution may be a better fit than the other.
Check out AWS AppSync for some of these realtime and offline features using different data sources, including databases search and compute.
Sounds like AWS Serverless is most suited alternative.
Also wondering: AWS vs Firebase - Is It Even a Fair Fight?
'programing tip' 카테고리의 다른 글
Entity Framework에서 외래 키 관계를 추가하는 방법은 무엇입니까? (0) | 2020.11.22 |
---|---|
Python으로 sys.path를 설정하는 것은 무엇이며 언제입니까? (0) | 2020.11.22 |
자산 카탈로그 pathForResource에 액세스 (0) | 2020.11.22 |
RDP 클라이언트가 데스크톱이 아닌 원격 애플리케이션을 시작할 수 있습니까? (0) | 2020.11.22 |
두 개의 TextView가 나란히 있고 하나만 타원 크기입니까? (0) | 2020.11.22 |