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

Cron job per app che girano su più di una istanza Job in background serverless, una esecuzione per pianificazione, tutto tracciato

Smetti di gestire crontab su istanze fragili. Clockwork offre job in background serverless guidati da API, con retry automatici, un log di ogni esecuzione e zero duplicati, per quante istanze tu voglia distribuire.

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 trappola del crontab locale)

Perché i crontab tradizionali falliscono nei sistemi distribuiti

Eseguire un demone cron locale su un VPS è semplice finché non si scala. Con più istanze applicative, i cron tradizionali portano a race condition, esecuzioni sovrapposte e fallimenti silenziosi.

Cron tradizionale / interno

  • Race condition: più istanze attivano lo stesso script di fatturazione contemporaneamente.
  • Fallimenti silenziosi: nessun avviso integrato se un job non viene eseguito.
  • Nessun retry: se un'esecuzione fallisce, nulla riprova fino alla successiva pianificata.
  • Orari hard-coded che richiedono il rideploy completo dell'applicazione per essere modificati.

Verne Software Clockwork

  • I lock distribuiti garantiscono l'esecuzione unica sull'intero cluster.
  • Nessun fallimento silenzioso: ogni attivazione viene registrata con la risposta ricevuta.
  • Retry automatici, con l'esito di ogni tentativo registrato.
  • Gestione dinamica degli orari tramite API REST — nessun rideploy necessario.

(Funzionalità principali)

Ingegneria di precisione per i job in background

(01)

Una esecuzione per pianificazione

Ogni esecuzione dovuta viene rivendicata nel database prima di attivarsi, così un secondo worker che vede lo stesso job lo trova già preso. Un'attivazione per slot pianificato, anche se la tua architettura scala a 100 istanze.

(02)

Controllo dinamico via API

Crea, metti in pausa, aggiorna o elimina pianificazioni in modo programmatico. Lascia che i tuoi utenti definiscano i propri task direttamente dalla tua dashboard SaaS.

(03)

Retry che sopravvivono ai deploy

Un'esecuzione fallita viene ritentata fino a tre volte: dopo un minuto, poi dopo cinque. Lo stato del retry risiede con il job anziché in memoria, così un retry in sospeso sopravvive a un riavvio del worker o a un deploy.

(04)

Pianificazione precisa al minuto

Lo scheduler si sveglia ogni minuto e attiva ciò che è dovuto. Ogni esecuzione viene calcolata dall'espressione cron stessa, così le pianificazioni non derivano come un ciclo a intervalli fatto a mano.

(05)

Osservabilità & log

Trail di audit completi per ogni trigger. Vedi esattamente quando un job è stato eseguito, quale payload è stato inviato e la risposta ricevuta.

(06)

Sintassi cron standard

Espressioni cron POSIX standard a cinque campi, risolte in UTC. Ogni pianificazione viene validata alla creazione, così un'espressione che non potrebbe mai attivarsi viene rifiutata subito invece di non eseguirsi mai in silenzio.

(Ecosistema Nautilus)

Il complemento perfetto per Verne Relay

Clockwork gestisce il quando, Relay gestisce il come. Usa Clockwork per attivare eventi pianificati e instradali attraverso Relay per la consegna sicura con backoff esponenziale. Proteggi l'intera pipeline con Auth.

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

(Esperienza sviluppatore)

Pianifica un job via API

Gestisci le tue attività ricorrenti in modo dinamico in qualsiasi linguaggio. Fornisci semplicemente un'espressione cron e l'endpoint di destinazione.

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)

Domande frequenti

Come previene Clockwork le esecuzioni duplicate?

Ogni esecuzione dovuta viene rivendicata con un update condizionale nel database prima di attivare qualsiasi cosa: un secondo worker che vede lo stesso job trova la riga già avanzata e non fa nulla. Questo ti dà un'attivazione per slot pianificato, per quante istanze tu esegua. La consegna in sé è at-least-once — un tentativo fallito viene ritentato — quindi rendi il tuo endpoint idempotente e usa l'header X-Clockwork-Attempt per proteggere gli effetti collaterali.

Cosa succede se l'endpoint di destinazione non è disponibile quando si attiva il cron?

Ogni esecuzione ha fino a tre tentativi: il primo, poi retry dopo un minuto e dopo cinque minuti. I fallimenti di rete, i 5xx e il 429 vengono ritentati; le altre risposte 4xx no, poiché un retry identico otterrebbe la stessa risposta. Ogni tentativo viene registrato con la risposta ricevuta, e un retry in sospeso sopravvive a un riavvio del worker.

Posso pianificare task singoli (delayed job)?

Sì. Oltre alle espressioni cron ricorrenti, l'API Clockwork supporta la pianificazione precisa per timestamp per task a esecuzione singola — ad esempio, inviare un'email 24 ore dopo la registrazione.

Usiamo già Vercel Cron, pg_cron su Supabase o GitHub Actions: perché cambiare?

Ognuno funziona bene dentro la propria piattaforma e si ferma al suo confine. Vercel Cron pianifica funzioni Vercel e il suo piano gratuito è volutamente stretto. pg_cron gira dentro il tuo database Supabase e raggiunge solo ciò che il database raggiunge. GitHub Actions pianifica su una coda best-effort e, per sua stessa documentazione, può partire in ritardo sotto carico. Clockwork chiama qualsiasi endpoint HTTPS su qualsiasi host, secondo la pianificazione che imposti, con un log di esecuzione per ogni scatto.

Come provo un job senza aspettare la sua pianificazione?

Crea un job ritardato di un minuto con POST /v1/clockwork/delayed, guardalo nel log delle esecuzioni e poi eliminalo. Un'esecuzione singola usa lo stesso worker e gli stessi log di una ricorrente.

Esiste un piano gratuito?

Sì: 3.000 richieste API al mese su tutti i motori, cron incluso, senza carta. Poi 3 € ogni 10.000 richieste, con un tetto di spesa mensile che tiene il conto sotto controllo.

(Inizia oggi)

Prendi il controllo dei tuoi job in background

Elimina l'ansia da crontab. Costruisci oggi task pianificati affidabili, scalabili e osservabili per la tua piattaforma.

Quando non ti serve

Se fai girare una applicazione su una macchina, crontab va bene e conviene tenerlo. Lo stesso vale per il lavoro che non lascia mai la sua piattaforma: Vercel Cron è adatto a una funzione Vercel, pg_cron è adatto a un job che tocca solo il tuo database Supabase, e una pianificazione GitHub Actions basta per un'attività notturna che può permettersi di partire in ritardo.

Clockwork si guadagna il posto al confine dove tutto questo si ferma, e quel confine arriva prima di quanto si pensi. La seconda istanza, dove due copie dello stesso crontab lanciano due volte la stessa fatturazione. Il job che deve chiamare un servizio su un altro host. La pianificazione che i tuoi clienti impostano dalla tua dashboard. L'esecuzione fallita alle 03:00 senza che nessuno lo sapesse.

Sono questi quattro casi che Clockwork risolve: una esecuzione per pianificazione per quante istanze tu voglia distribuire, qualsiasi endpoint HTTPS su qualsiasi host, pianificazioni create e cancellate via API, e un log di ogni scatto con la risposta ricevuta. Le prime 3.000 richieste di ogni mese sono gratuite.