Construyendo memoria espacial

Pasé tres meses construyendo un Pinterest para el mundo físico.

La idea es sencilla. Dejas notas digitales, fotos o historias en coordenadas GPS específicas. La gente solo puede verlas cuando se encuentra físicamente en ese lugar exacto. Convierte el mundo real en una colección de cápsulas del tiempo digitales.

Construir una aplicación basada en la ubicación es más difícil de lo que parece. Esto es lo que aprendí sobre el stack tecnológico.

La base de datos espacial No puedes simplemente almacenar la latitud y la longitud como números simples si quieres escalar. Necesitas índices espaciales. Utilicé PostGIS con PostgreSQL.

Maneja:

  • Indexación espacial con R-tree
  • Cálculos de distancia integrados
  • Consultas de proximidad rápidas

Si necesitas encontrar recuerdos a menos de 50 metros de un usuario, PostGIS hace el trabajo pesado.

La estrategia de caché Los lugares turísticos populares reciben demasiadas solicitudes. Consultar la base de datos cada dos segundos es malo para el rendimiento. Utilicé comandos Redis GEO para almacenar en caché los IDs de los recuerdos en zonas concurridas.

Un consejo profesional: No almacenes el objeto completo en Redis. Solo almacena los IDs. Esto mantiene bajo el uso de memoria y reduce el tiempo de consulta de 20 ms a 2 ms.

El patrón de carga Si tu servidor gestiona cada carga de fotos, colapsará bajo la carga de trabajo. Utilicé un patrón de carga de dos fases:

  • El cliente solicita al servidor una URL pre-firmada
  • El cliente sube el archivo directamente a Cloudflare R2
  • El cliente le indica al servidor cuando la carga ha terminado

Elegí R2 en lugar de S3 porque no hay tarifas de salida. Esto ahorra dinero cuando los usuarios descargan contenido multimedia.

Lo que funcionó

  • PostGIS y Redis GEO hacen que las consultas espaciales sean rápidas.
  • Las cargas directas a R2 permiten que el backend escale.
  • Go y Gin proporcionan un alto rendimiento con un bajo uso de memoria.
  • La privacidad progresiva (Privado, Amigos o Público) protege a los usuarios.

Lo que salió mal

  • La precisión del GPS es inconsistente en ciudades con edificios altos.
  • El problema del "arranque en frío" (cold start) es real. La aplicación necesita muchos usuarios para sentirse viva.
  • La moderación de contenido requiere atención constante.

Construir esto me enseñó que la ubicación física es una dimensión infravalorada para las aplicaciones sociales. El contenido digital se siente más significativo cuando está vinculado a un lugar real.

Fuente: https://dev.to/kevinten10/building-spatial-memory-why-i-built-a-pinterest-for-the-physical-world-and-what-i-learned-bpm

Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi