(Verne Clockwork · Cron-as-a-Service)

Cron jobs para apps que corren en más de una instancia Jobs en segundo plano sin servidor, una ejecución por programación, todo registrado

Deja de gestionar crontabs en instancias frágiles. Clockwork ofrece tareas en segundo plano sin servidor, controladas por API, con reintentos automáticos, registro de cada ejecución y cero duplicados por muchas instancias que despliegues.

curl -X POST https://api.vernesoft.com/v1/clockwork/jobs \
  -H "Authorization: Bearer vrn_clockwork_•••" \
  -d '{"name":"billing","schedule":"0 0 1 * *","url":"https://api.yourdomain.com/billing"}'

(La trampa del crontab local)

Por qué los crontabs tradicionales fallan en sistemas distribuidos

Ejecutar un demonio cron local en un VPS es fácil hasta que escalas. Con múltiples instancias, los crons tradicionales provocan condiciones de carrera, ejecuciones solapadas y fallos silenciosos.

Cron tradicional / interno

  • Condiciones de carrera: varias instancias disparan el mismo script de facturación simultáneamente.
  • Fallos silenciosos: sin alertas integradas si un job no se ejecuta.
  • Sin reintentos: si una ejecución falla, nada vuelve a intentarlo hasta la siguiente programada.
  • Horarios codificados que requieren redeploys completos de la aplicación para modificarse.

Verne Software Clockwork

  • Los bloqueos distribuidos garantizan ejecución única en todo el clúster.
  • Sin fallos silenciosos: cada disparo queda registrado con la respuesta que devolvió.
  • Reintentos automáticos, con el resultado de cada intento registrado.
  • Gestión dinámica de horarios vía API REST — sin redeploys necesarios.

(Características principales)

Ingeniería de precisión para jobs en segundo plano

(01)

Una ejecución por programación

Cada ejecución pendiente se reclama en la base de datos antes de dispararse, así que un segundo worker que vea el mismo job lo encuentra ya tomado. Un disparo por franja programada, aunque tu arquitectura escale a 100 instancias.

(02)

Control dinámico por API

Crea, pausa, actualiza o elimina horarios mediante programación. Permite que tus usuarios definan sus propias tareas directamente desde tu panel de control SaaS.

(03)

Reintentos que sobreviven a los despliegues

Una ejecución fallida se reintenta hasta tres veces: al minuto y a los cinco minutos. El estado del reintento vive con el job y no en memoria, así que un reintento pendiente sobrevive a un reinicio del worker o a un despliegue.

(04)

Planificación precisa al minuto

El planificador despierta cada minuto y dispara lo que toca. Cada ejecución se calcula desde la propia expresión cron, así que las programaciones no se desvían como un bucle de intervalos hecho a mano.

(05)

Observabilidad & registros

Trazas de auditoría completas para cada disparo. Ve exactamente cuándo se ejecutó un job, qué payload se envió y la respuesta recibida.

(06)

Sintaxis cron estándar

Expresiones cron POSIX estándar de cinco campos, resueltas en UTC. Cada programación se valida al crearla, así que una expresión que nunca podría dispararse se rechaza de entrada en vez de no ejecutarse en silencio.

(Ecosistema Nautilus)

El complemento perfecto para Verne Relay

Clockwork gestiona el cuándo, Relay gestiona el cómo. Usa Clockwork para disparar eventos planificados y enrútalo a través de Relay para entrega segura con backoff exponencial. Asegura todo el pipeline con Auth.

Clockwork (Timer fires)Relay (Retries & fan-out)Client Application

(Experiencia de desarrollador)

Planifica un job vía API

Gestiona tus tareas recurrentes de forma dinámica en cualquier lenguaje. Solo proporciona una expresión cron y el endpoint de destino.

curl -X POST https://api.vernesoft.com/v1/clockwork/jobs \
  -H "Authorization: Bearer $VERNE_CLOCKWORK_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Monthly Billing Run",
    "schedule": "0 0 1 * *",
    "url": "https://api.yourdomain.com/billing/process",
    "method": "POST",
    "body": "{\"batch\":\"auto\"}"
  }'

(FAQ)

Preguntas frecuentes

¿Cómo evita Clockwork las ejecuciones duplicadas?

Cada ejecución pendiente se reclama con un update condicional en la base de datos antes de disparar nada: un segundo worker que vea el mismo job encuentra la fila ya avanzada y no hace nada. Eso te da un disparo por franja programada, por muchas instancias que ejecutes. La entrega en sí es al-menos-una-vez — un intento fallido se reintenta —, así que haz tu endpoint idempotente y usa la cabecera X-Clockwork-Attempt para proteger los efectos secundarios.

¿Qué ocurre si el endpoint de destino no está disponible cuando se dispara el cron?

Cada ejecución tiene hasta tres intentos: el primero y luego reintentos al minuto y a los cinco minutos. Los fallos de red, los 5xx y el 429 se reintentan; otras respuestas 4xx no, ya que un reintento idéntico obtendría la misma respuesta. Cada intento se registra con la respuesta que devolvió, y un reintento pendiente sobrevive a un reinicio del worker.

¿Puedo planificar tareas puntuales (delayed jobs)?

Sí. Además de las expresiones cron recurrentes, la API de Clockwork soporta planificación precisa por marca de tiempo para tareas de ejecución única — por ejemplo, enviar un email 24 horas después del registro.

Ya usamos Vercel Cron, pg_cron en Supabase o GitHub Actions: ¿por qué cambiar?

Cada uno funciona bien dentro de su plataforma y se detiene en su borde. Vercel Cron programa funciones de Vercel y su plan gratuito es deliberadamente estrecho. pg_cron corre dentro de tu base de datos de Supabase y solo alcanza lo que la base alcanza. GitHub Actions programa sobre una cola de mejor esfuerzo y, según su propia documentación, puede dispararse tarde bajo carga. Clockwork llama a cualquier endpoint HTTPS en cualquier host, en el horario que fijes, con un log de ejecución por disparo.

¿Cómo pruebo un job sin esperar a su horario?

Crea un job diferido a un minuto vista con POST /v1/clockwork/delayed, míralo en el log de ejecuciones y bórralo. Una ejecución puntual usa el mismo worker y los mismos logs que una recurrente.

¿Hay plan gratuito?

Sí: 3.000 solicitudes API al mes en todos los motores, cron incluido, sin tarjeta. Después son 3 € por cada 10.000 solicitudes, y un tope de gasto mensual mantiene la factura acotada.

(Empieza hoy)

Toma el control de tus tareas en segundo plano

Elimina la ansiedad del crontab. Construye hoy tareas planificadas fiables, escalables y observables para tu plataforma.

Cuándo no necesitas esto

Si ejecutas una aplicación en una máquina, crontab está bien y deberías quedártelo. Lo mismo vale para el trabajo que nunca sale de su plataforma: Vercel Cron sirve para una función de Vercel, pg_cron sirve para un job que solo toca tu base de datos de Supabase, y una programación de GitHub Actions basta para una tarea nocturna que puede permitirse llegar tarde.

Clockwork se gana su sitio en la frontera donde eso se detiene, y esa frontera llega antes de lo que se espera. La segunda instancia, donde dos copias del mismo crontab lanzan dos veces la misma facturación. El job que tiene que llamar a un servicio en otro host. La programación que tus propios clientes configuran desde tu panel. La ejecución que falló a las 03:00 sin que nadie se enterara.

Esos cuatro casos son los que responde Clockwork: una ejecución por programación por muchas instancias que despliegues, cualquier endpoint HTTPS en cualquier host, programaciones creadas y canceladas por API, y un registro de cada disparo con la respuesta que obtuvo. Las primeras 3.000 solicitudes de cada mes son gratis.