Tôi đang làm việc trên một dự án trò chơi mới tại thời điểm này sẽ bao gồm một Front-end React Native và một back-end dựa trên Lambda. Ứng dụng yêu cầu một số tính năng thời gian thực như hồ sơ người dùng hoạt động, tính năng định vị địa lý, v.v.AWS sẽ tương đương với Cơ sở dữ liệu thời gian thực Firebase là gì?
Tôi đang xem Cơ sở dữ liệu thời gian thực của Firebase trông giống như một giải pháp thực sự thanh lịch cho đồng bộ hóa dữ liệu thời gian thực. khá thích nó.
3 tùy chọn tôi có thể nghĩ ra cho "serverless" thời gian thực chỉ sử dụng dịch vụ AWS là:
Lựa chọn 1: AWS IOT Tin nhắn qua WebSockets
Cái này là khá rõ ràng, một kết nối WebSockets quản lý thông qua SDK IoT. Tôi đã nghĩ đến việc kích hoạt Lambdas để đáp ứng các sự kiện trong và ngoài và chỉ sử dụng WebSockets làm lớp thời gian thực, xây dựng logic xử lý tùy chỉnh trên ứng dụng khách như bạn thường làm. Một nhược điểm của điều này, ít nhất là so với Firebase, là tôi sẽ phải xử lý dữ liệu trong chính các sự kiện mà sẽ thêm một lớp quản lý khác trên WebSockets và sẽ phải được chuẩn hóa với lớp dữ liệu API trong các cửa hàng của ứng dụng.
Ưu điểm:
- kết nối thời gian thực Scalable bi-directional
Nhược điểm:
- Chỉ hoạt động khi ứng dụng được mở
- nhắn cấu trúc cần được thực hiện
- Nhiều lớp vận chuyển cần quản lý
Tùy chọn 2: Push-kích hoạt lại lấy
Một lựa chọn khác là sử dụng thông báo đẩy như thời gian thực gây nên nhưng sử dụng một yêu cầu HTTP thông thường để API Gateway để thực sự có được tải trọng cập nhật.
Tôi thích phương pháp này vì nó chỉ dính vào một lớp vận chuyển và một nguồn chân lý duy nhất cho trạng thái ứng dụng. Nó cũng sẽ kích hoạt cập nhật khi ứng dụng không mở vì đây là thông báo đẩy.
Nhược điểm là đây là rất nhiều công việc tùy chỉnh với ánh xạ có khả năng khó khăn giữa các thông báo đẩy cho dữ liệu cần được tìm nạp.
Ưu điểm:
- thông báo đẩy hoạt động ngay cả khi ứng dụng được đóng
- nguồn Độc thân của chân lý, lớp truyền tải
Nhược điểm:
- giải pháp Hầu hết các tùy chỉnh
- Sẽ liên quan đến nhiều yêu cầu HTTP hơn tất cả
Cognito Sync Đây là phiên bản mới hơn với tôi và tôi không chắc chắn nếu nó thực sự có thể được giao tiếp với từ máy chủ.
Đồng bộ hóa Cognito cung cấp đồng bộ hóa trạng thái người dùng. trên các thiết bị hoàn chỉnh với hỗ trợ ngoại tuyến và là một phần của Cognito SDK mà tôi sẽ sử dụng. Nghe có vẻ giống như những gì tôi đang tìm kiếm nhưng không thể tìm thấy bất kỳ bằng chứng kết luận nào về việc nó có thể sửa đổi, hoặc "kích hoạt", cập nhật từ AWS và không chỉ từ một trong các thiết bị.
Ưu điểm:
- Cung cấp một trừu tượng mô hình dữ liệu thời gian thực
- Kết nối với Cognito hồ sơ người dùng OOTB
Nhược điểm:
- Không chắc chắn nếu có thể được sửa đổi hoặc được cập nhật từ Lambdas
Tôi tự hỏi liệu có ai có kinh nghiệm thực hiện AWS như một phần của kiến trúc dựa trên Lambda và liệu bạn có ý kiến về cách tốt nhất để tiếp tục không?
Bạn đã cân nhắc triển khai trò chơi trong [ứng dụng web Firebase] (https://firebase.google.com/docs/web/setup), ví dụ: sử dụng [ReactFire] (https://github.com/firebase/reactfire), thay vì triển khai "tính năng Firebase" trên AWS? – matsev
Tôi có, nhưng chúng tôi đang sử dụng nhiều dịch vụ mà AWS cung cấp như một phần của cơ sở hạ tầng và Firebase chỉ giải quyết lớp vận chuyển, phần còn lại được AWS xử lý tốt hơn trong trường hợp này, nếu không thì ReactFire sẽ là một lựa chọn tuyệt vời. – BarakChamo
Tò mò tùy chọn bạn đã đi với, tôi đang nghĩ về việc thử tùy chọn 1 mình – Alex