Şu anda bir React Native ön ucu ve Lambda tabanlı bir arka uçtan oluşacak yeni bir oyun projesi üzerinde çalışıyorum. Uygulama, aktif kullanıcı kayıtları, coğrafi sınırlama vb. Gibi bazı gerçek zamanlı özellikler gerektirir.
Gerçek zamanlı veri senkronizasyonu için gerçekten zarif bir çözüm gibi görünen Firebase'in Gerçek Zamanlı Veritabanına bakıyordum, ancak AWS'nin buna benzer bir şey olduğunu sanmıyorum.
Yalnızca AWS hizmetlerini kullanarak "sunucusuz" gerçek zamanlı için düşünebileceğim 3 seçenek şunlardır:
1. Seçenek: WebSockets üzerinden AWS IoT Messaging
Bu oldukça açık, IoT SDK aracılığıyla yönetilen bir WebSockets bağlantısı. Gelen ve giden olaylara yanıt olarak Lambdas'ı tetiklemeyi ve gerçek zamanlı katman olarak yalnızca WebSockets'i kullanarak, uygulama istemcisinde normalde yaptığınız gibi özel işleme mantığı oluşturmayı düşünüyordum.
Bunun dezavantajı, en azından Firebase ile karşılaştırıldığında, olaylardaki verileri WebSockets'in üstüne başka bir yönetim katmanı ekleyecek olan ve uygulamanın mağazalarındaki API veri katmanıyla standart hale getirilmesi gerekecek. .
Artıları:
- Ölçeklenebilir çift yönlü gerçek zamanlı bağlantı
Eksileri:
- Yalnızca uygulama açıkken çalışır
- Mesaj yapısının uygulanması gerekiyor
- Yönetilecek birden fazla taşıma katmanı
2. Seçenek: İtmeyle tetiklenen yeniden getirme
Diğer bir seçenek, anlık tetikleyiciler olarak push bildirimlerini kullanmak, ancak güncellenmiş yükü gerçekten almak için API Ağ Geçidine normal bir HTTP isteği kullanmaktır.
Bu yaklaşımı seviyorum çünkü uygulama durumu için yalnızca bir taşıma katmanına ve tek bir doğruluk kaynağına bağlı kalıyor. Ayrıca, bunlar Push Bildirimleri olduğundan uygulama açık olmadığında güncellemeleri tetikleyecektir.
Dezavantajı, bunun, getirilmesi gereken verilere push bildirimleri arasında potansiyel olarak zor eşleştirmeler içeren çok sayıda özel çalışma olmasıdır.
Artıları:
- Push bildirimleri, uygulama kapalıyken bile çalışır
- Tek gerçeğin kaynağı, taşıma katmanı
Eksileri:
- En özel çözüm
- Genel olarak çok daha fazla HTTP isteğini içerecek
Seçenek 3: Cognito Sync Bu benim için daha yenidir ve sunucudan gerçekten arayüz ile bağlanıp bağlanamayacağından emin değilim.
Cognito Sync, kullanıcı durumu senkronizasyonu sunar. çevrimdışı destekle tamamlanan cihazlar arasında ve yine de kullanacağım Cognito SDK'nın bir parçası. Tam aradığım gibi görünüyor, ancak yalnızca cihazlardan birinden değil, AWS'den güncellemeleri değiştirmenin veya "tetiklemenin" mümkün olup olmadığına dair kesin bir kanıt bulamadı.
Artıları:
- Soyutlanmış gerçek zamanlı bir veri modeli sağlar
- Cognito kullanıcı kayıtlarına bağlı OOTB
Eksileri:
- Lambdas'tan değiştirilip güncellenemeyeceğinden emin değilim
Lambda tabanlı bir mimarinin parçası olarak AWS üzerinde gerçek zamanlı deneyime sahip olup olmadığını ve devam etmenin en iyi yolu hakkında bir fikriniz olup olmadığını merak ediyorum.