Come funziona Firebase?
I servizi simili a Firebase sono un mix di:
- no-sql data storage (come MongoDB)
- pub/sub server (come Redis)
- web-sockets enabled front-end server
- client-side library
Il "quadro generale" è qualcosa come questo:
- uno o più utenti sottoscrivono alcuni dati perché sono interessati a quelle informazioni
- un server tiene traccia di queste sottoscrizioni, non appena avviene una nuova sottoscrizione alcuni dati vengono inviati come messaggio
- quando un client scrive alcuni dati allora il server pub/sub trasmette questo aggiornamento a tutte le altre sottoscrizioni attive
Tutto funziona come pub/sub quindi non esiste il concetto di "interrogazione", basta dire a cosa si è interessati e poi si ricevono messaggi che descrivono i dati.
Approccio REST:
-> dammi la lista degli utenti
<- luke, obi, leila, darth
[stop]
Approccio PUB/SUB:
-> i'm interessati alla lista degli utenti
<- luke
<- obi
<- leila
<- darth
[.... wait for it ...]
<- yoda
[... wait for it ...]
-> i'm not interested anyore
[stop]
La cosa importante è che nei servizi Firebase-like i dati si muovono su e giù per un canale web-socket che è una cosa permanente e full-duplex.
Sei in grado di ricevere tanti piccoli messaggi invece di scaricare grandi blocchi di dati (questo migliora la reattività della tua app!)
Grazie ai web-sockets questi messaggi sono spinti al client quindi non c'è bisogno che l'utente ricarichi o aggiorni l'app.
Lo svantaggio di questa implementazione è che coinvolge molte tecnologie per lavorare insieme (e per essere configurato e mantenuto!)
Ecco perché servizi come Firebase offrono una buona semplificazione di utilizzo... dato che ci si può permettere il prezzo!