PHP

Mejora del rendimiento en devlog-ist/landing: procesamiento asíncrono de la generación de entradas

El proyecto devlog-ist/landing está enfocado en la creación de un landing page eficiente y atractivo. Una de las optimizaciones recientes se ha centrado en mejorar la velocidad de respuesta de la interfaz de usuario al generar entradas para el blog.

El problema del procesamiento síncrono

Anteriormente, las acciones generate_with_prompt y generate_from_github invocaban el método PostGenerationServiceV2::generate() de manera síncrona. Esto significaba que durante una petición Livewire, la interfaz de usuario quedaba bloqueada mientras se generaba la entrada, provocando esperas de 17 segundos o más. Esta experiencia de usuario deficiente afectaba la percepción de rendimiento general del sitio.

La solución: colas de trabajo asíncronas

Para solucionar este problema, se implementó un sistema de colas de trabajo asíncronas. Ahora, en lugar de ejecutar PostGenerationServiceV2::generate() directamente, las acciones despachan un GeneratePostJob. Este trabajo se encola y se procesa en segundo plano, liberando inmediatamente la interfaz de usuario. El cambio principal radica en la transición de un proceso bloqueante a uno no bloqueante.

Ilustremos este cambio con un ejemplo conceptual:

// Antes: procesamiento síncrono
public function generatePost()
{
    $post = PostGenerationServiceV2::generate($data);
    // ...
}

// Ahora: procesamiento asíncrono
public function generatePost()
{
    GeneratePostJob::dispatch($data);
    // ...
}

En el ejemplo anterior, el primer bloque muestra el código anterior donde la generación de la publicación se realiza de forma síncrona. El segundo bloque muestra el código actualizado, donde se envía un trabajo a la cola para su procesamiento asíncrono. Esto permite que la interfaz de usuario permanezca receptiva.

Beneficios del cambio

  • Mejora de la experiencia del usuario: La interfaz de usuario ya no se bloquea, proporcionando una experiencia más fluida y receptiva.
  • Mayor escalabilidad: El procesamiento asíncrono permite gestionar un mayor número de solicitudes concurrentes.
  • Mayor tolerancia a fallos: Si la generación de una entrada falla, no afecta la disponibilidad de la interfaz de usuario. Los trabajos fallidos se pueden reintentar.

En resumen, el cambio al procesamiento asíncrono de la generación de entradas representa una mejora significativa en el rendimiento y la experiencia del usuario del proyecto devlog-ist/landing.

Mejora del rendimiento en devlog-ist/landing: procesamiento asíncrono de la generación de entradas
Gerardo Ruiz

Gerardo Ruiz

Author

Share: