Millones de datos... o cuando las soluciones de siempre no funcionan nunca

Imagina que después de pasarte años y años trabajando en múltiples sitios, aprender técnicas y soluciones avanzadas, crear código robusto que funciona, te toca trabajar en un sitio que maneja millones de usuarios, con millones de nodos.

Empiezas a trabajar en el proyecto:

  • Todo va bien... hasta que tienes que esperar una semana a que termine un cron.
  • Ese cron va bien... hasta que el sexto día falla por falta de memoria. Así que la aumentas porque llegó al 90%.
  • Ese cron vuelve a ir bien... pero un despliegue a media semana (actualización de seguridad) hace que se caiga la base de datos y falla, así que lo lanzas de nuevo.
  • Ese cron va bien... pero al sexto día, y medio, tienes un fatal error dentro de un if porque el campo estaba vacío. Lo arreglas y lo vuelves a lanzar.
  • ...
  • Después de tres semanas, solamente has arreglado un if sencillito, y el cron no ha terminado aún 🙈.

Esto de arriba, es solamente un caso, pero después de varios años trabajando en un par de sitios "grandes" (y bien conocidos), hay muchas más historias y estrategias a tener en cuenta.

En esta sesión hablaremos de:

  • Cron jobs o queues
  • Uso de memoria
  • To loop or not to loop
  • Migraciones (Drupal y/o no-Drupal)
  • Tiempos de ejecución
  • Búsquedas
  • Edge cases everywhere
  • Optimizaciones