Costruire la memoria spaziale
Ho trascorso tre mesi a costruire un Pinterest per il mondo fisico.
L'idea è semplice. Lasci note digitali, foto o storie in specifiche coordinate GPS. Le persone possono vederle solo quando si trovano fisicamente in quel punto esatto. Trasforma il mondo reale in una collezione di capsule del tempo digitali.
Costruire un'app basata sulla posizione è più difficile di quanto sembri. Ecco cosa ho imparato riguardo allo stack tecnologico.
Il database spaziale Non puoi limitarti a memorizzare latitudine e longitudine come semplici numeri se vuoi scalare. Hai bisogno di indici spaziali. Ho usato PostGIS con PostgreSQL.
Gestisce:
- Indicizzazione spaziale con R-tree
- Calcoli della distanza integrati
- Query di prossimità veloci
Se hai bisogno di trovare ricordi entro 50 metri da un utente, PostGIS si occupa del lavoro pesante.
La strategia di caching I luoghi turistici popolari ricevono troppe richieste. Interrogare il database ogni due secondi è pessimo per le prestazioni. Ho usato i comandi Redis GEO per memorizzare in cache gli ID dei ricordi nelle aree affollate.
Un consiglio da professionisti: non memorizzare l'intero oggetto in Redis. Memorizza solo gli ID. Questo mantiene basso l'uso della memoria e riduce il tempo di query da 20ms a 2ms.
Il pattern di caricamento Se il tuo server gestisce ogni caricamento di foto, andrà in crash sotto carico. Ho usato un pattern di caricamento in due fasi:
- Il client richiede al server un URL pre-firmato
- Il client carica il file direttamente su Cloudflare R2
- Il client comunica al server quando il caricamento è terminato
Ho scelto R2 rispetto a S3 perché non ci sono costi di uscita (egress fees). Questo fa risparmiare denaro quando gli utenti scaricano i media.
Cosa ha funzionato
- PostGIS e Redis GEO rendono veloci le query spaziali.
- I caricamenti diretti su R2 permettono al backend di scalare.
- Go e Gin offrono alte prestazioni con un basso utilizzo di memoria.
- La privacy progressiva (Privata, Amici o Pubblica) protegge gli utenti.
Cosa non ha funzionato
- La precisione del GPS è inconsistente nelle città con edifici alti.
- Il problema del "cold start" è reale. L'app ha bisogno di molti utenti per sembrare viva.
- La moderazione dei contenuti richiede attenzione costante.
Costruire questo progetto mi ha insegnato che la posizione fisica è una dimensione sottovalutata per le app social. Il contenuto digitale sembra più significativo quando è legato a un luogo reale.
Community di apprendimento opzionale: https://t.me/GyaanSetuAi
