En este artículo explicamos cómo adaptar la ejecución de trabajos de Payload CMS para un despliegue serverless en Vercel, por qué la solución con colas y schedulers en proceso no funciona en entornos serverless y cómo migrar paso a paso para mantener la funcionalidad sin depender de procesos de larga duración.

Resumen del problema: Payload CMS incluye una cola de jobs que, con la opción autoRun activada, arranca un temporizador en el proceso Node que comprueba periódicamente si hay tareas pendientes. En servidores tradicionales o plataformas como Railway esto funciona porque el proceso permanece vivo. En Vercel, sin embargo, las funciones serverless se inicializan para atender una petición y se destruyen poco después, por lo que no hay un proceso persistente que mantenga el reloj interno. Además las funciones tienen timeout limitado, por lo que un scheduler pensado para ejecutarse indefinidamente se interrumpiría.

Solución general: sustituir el trigger en proceso por llamadas HTTP programadas. En lugar de confiar en setInterval dentro del servidor, exponemos una ruta API protegida que ejecuta la lógica del job bajo demanda y configuramos Vercel Cron Jobs para invocar esa ruta según la frecuencia deseada.

Paso 1 Deshabilitar autoRun en configuración de Payload: evita que Payload intente arrancar su scheduler interno en entornos serverless. Usa una variable de entorno para permitir autorun solo en desarrollo local o en servidores tradicionales, por ejemplo ENABLE_PAYLOAD_AUTORUN=false. Así la misma base de código funciona en local con programación en proceso y en Vercel con programación por HTTP.

Paso 2 Extraer la lógica ejecutable: convierte la lógica del task en una función reutilizable que el handler del task y la ruta API pueden llamar. Por ejemplo crea una función runProcessTrackers que realice todo el procesamiento de trackers y devuelva un resultado comprensible. Mantén el handler original para entornos donde sí quieras scheduling en proceso, pero condiciona el schedule a una variable ENABLE_PAYLOAD_TASK_SCHEDULE.

Paso 3 Crear una ruta API protegida para disparar el job: expone una ruta en tu app que llame a runProcessTrackers cuando se invoque. Protege la ruta usando un secreto CRON_SECRET almacenado en variables de entorno. La comprobacion puede verificar el header Authorization como Bearer CRON_SECRET o aceptar un parametro secret en la query para pruebas manuales. Si la autorizacion falla devuelve 401. Esta ruta sera la que Vercel Cron invoque.

Paso 4 Variables de entorno: añade al entorno de Vercel las variables necesarias para evitar doble ejecucion y para la seguridad. Ejemplos de variables a configurar ENABLE_PAYLOAD_AUTORUN=false ENABLE_PAYLOAD_TASK_SCHEDULE=false CRON_SECRET=valor-largo-aleatorio sin comillas. Mantén tambien DATABASE_URI y PAYLOAD_SECRET seguras en el proyecto.

Paso 5 Configurar Vercel Cron Jobs: en el archivo vercel.json añade una seccion crons con la ruta API y la expresion cron deseada. Vercel enviara automaticamente el header Authorization con Bearer seguido del valor de CRON_SECRET cuando invoque la ruta desde su cron, por lo que la seguridad queda integrada. Usa la expresion standard cron por ejemplo para ejecutar cada minuto usa asteroide separado por espacios asterisco espacio asterisco espacio asterisco espacio asterisco espacio asterisco.

Comprobaciones y pruebas locales: el comando vercel dev no simula crons, por eso en desarrollo ejecuta tu servidor y prueba la ruta manualmente usando curl o peticiones desde el navegador incluyendo el header o el parametro secret. Revisa los logs para confirmar que la tarea hizo su trabajo y que los resultados aparecen en Payload Admin o en la base de datos.

Checklist de despliegue en Vercel: configurar variables de entorno del proyecto en Project Settings Environment Variables incluyendo DATABASE_URI PAYLOAD_SECRET ENABLE_PAYLOAD_AUTORUN=false ENABLE_PAYLOAD_TASK_SCHEDULE=false CRON_SECRET con un valor largo aleatorio. Incluir vercel.json con la seccion crons. Hacer push o desplegar con Vercel CLI. Verificar la ruta https colon doble slash nombre-de-tu-app punto vercel app slash api slash payload-cron pasando secret o dejando que Vercel envie el header.

Notas tecnicas importantes: los entornos serverless no mantienen timers en memoria. Por tanto cualquier trabajo que dependa de un setInterval en el proceso principal no se ejecutara de forma fiable en Vercel. La estrategia robusta es transformar schedulers en endpoints HTTP seguros y recurrir al sistema de crons de la plataforma o a servicios externos de scheduling. Esto permite mantener la misma logica de negocio reutilizable y facilita escalabilidad y observabilidad.

Beneficios para empresas y casos de uso: aplicar este enfoque es ideal cuando desarrollas aplicaciones a medida o software a medida que deben desplegarse en infraestructuras serverless. Adoptando patrones de ejecucion on demand se mejora la resiliencia y se reduce el coste operativo. Si tu empresa necesita integrar inteligencia artificial o agentes IA que lancen procesos programados, este patron encaja bien con pipelines que ejecutan tareas de inferencia o recoleccion periodica.

Sobre Q2BSTUDIO: en Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en inteligencia artificial ciberseguridad y servicios cloud aws y azure. Ayudamos a empresas a migrar arquitecturas tradicionales a modelos serverless y a diseñar soluciones seguras para jobs programados y procesamiento por lotes. Si necesitas una aplicacion a medida o quieres incorporar capacidades de IA para empresas contamos con experiencia en agentes IA y soluciones de inteligencia de negocio con Power BI.

Si quieres profundizar en el desarrollo de aplicaciones a medida visita nuestra pagina de desarrollo de aplicaciones y software multiplataforma como punto de partida Desarrollo de aplicaciones y software multiplataforma. Si tu proyecto requiere integrar modelos de inteligencia artificial o estrategias de IA para empresas consulta nuestros servicios de inteligencia artificial Servicios de inteligencia artificial.

Resumen final: para ejecutar trabajos de Payload CMS en Vercel transforma los schedulers en proceso por endpoints HTTP protegidos y usa Vercel Cron Jobs para invocarlos. Deshabilita autoRun en entornos serverless, extrae la logica a funciones reutilizables, crea una ruta cron autenticada, configura variables de entorno y registra la tarea en vercel.json. Este patron ofrece programacion fiable en entornos serverless y mantiene la flexibilidad para ejecutar en servidores tradicionales cuando lo necesites.

Palabras clave incluidas aplicaciones a medida software a medida inteligencia artificial ciberseguridad servicios cloud aws y azure servicios inteligencia de negocio ia para empresas agentes IA power bi para mejorar posicionamiento y visibilidad. Si necesitas ayuda en la migracion o en crear una arquitectura serverless segura y eficiente contacta con Q2BSTUDIO para una consultoria especializada.