Por qué tu API parece lenta: la idea completa en dos bocetos
Un cliente me dijo una vez: "el botón de registro tarda 4 segundos, hay que arreglar la base de datos." La base de datos no tenía ningún problema. La API enviaba un correo de bienvenida antes de responder al usuario. Aquí está todo el problema en un boceto:
La solución: responder primero, trabajar después
El usuario no necesita que el correo ya exista para ver "cuenta creada". Solo necesita la promesa de que existirá. Así que dividimos la línea de tiempo: respondemos de inmediato y empujamos el trabajo lento a una cola que un worker procesa en segundo plano.
En Laravel esto son tres líneas
Se empuja el trabajo a un job en cola y se responde de inmediato:
SendWelcomeEmail::dispatch($user); dentro del controlador, php artisan queue:work en el servidor, y QUEUE_CONNECTION=redis en el entorno. Ese es todo el patrón.
En Tamkeen pasé buena parte de seis meses sacando trabajo de las peticiones y metiéndolo en colas. Mismos servidores, misma base de datos, y endpoints que antes tardaban segundos empezaron a responder en decenas de milisegundos.
Notas de los lectores