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

Cron jobovi za aplikacije koje rade na više instanci Serverless pozadinski jobovi, jedno izvršavanje po rasporedu, sve zabeleženo

Prestanite sa upravljanjem crontab-a na nestabilnim instancama. Clockwork pruža serverless pozadinske jobove upravljane API-jem sa automatskim ponavljanjima, logom svakog pokretanja i nula duplih pokretanja, bez obzira na broj instanci.

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"}'

(Zamka lokalnog crontab-a)

Zašto tradicionalni crontab-i ne funkcionišu u distribuiranim sistemima

Pokretanje lokalnog cron demona na VPS-u je jednostavno dok ne počnete da skalirate. Kada deploy-ujete više instanci aplikacije, tradicionalni cron-ovi vode do race condition-a, preklapajućih izvršavanja i tihih grešaka.

Tradicionalni / interni Cron

  • Race condition-i: više instanci istovremeno pokreće isti skripta za naplatu.
  • Tihe greške: nema ugrađenih upozorenja ako job ne uspe da se izvrši.
  • Bez ponavljanja: ako pokretanje ne uspe, ništa ne pokušava ponovo do sledećeg zakazanog termina.
  • Hard-coded rasporedi koji zahtevaju potpuni redeploy aplikacije za izmene.

Verne Software Clockwork

  • Distribuirani lokovi garantuju jedinkratno izvršavanje kroz ceo klaster.
  • Bez tihih otkaza: svako okidanje se beleži zajedno sa odgovorom koji je vraćen.
  • Automatska ponavljanja, sa zabeleženim ishodom svakog pokušaja.
  • Dinamičko upravljanje rasporedima putem REST API-ja — bez potrebe za redeploy-om.

(Ključne funkcionalnosti)

Precizno inženjerstvo za pozadinske jobove

(01)

Jedno izvršavanje po rasporedu

Svako dospelo pokretanje se preuzima u bazi pre nego što se okine, pa drugi worker koji vidi isti job zatiče ga već zauzetog. Jedno okidanje po zakazanom terminu, čak i ako vaša arhitektura skalira na 100 instanci.

(02)

Dinamička API kontrola

Kreirajte, pauzirajte, ažurirajte ili brišite rasporede programatski. Dozvolite vašim korisnicima da definišu sopstvene pozadinske zadatke direktno iz vašeg SaaS dashboard-a.

(03)

Ponavljanja koja preživljavaju deploy

Neuspelo pokretanje se ponavlja do tri puta: nakon jednog minuta, pa nakon pet. Stanje ponavljanja čuva se uz sam job, a ne u memoriji, pa ponavljanje na čekanju preživljava restart workera ili deploy.

(04)

Zakazivanje tačno u minut

Scheduler se budi svakog minuta i okida ono što je dospelo. Svako pokretanje se računa iz samog cron izraza, pa rasporedi ne odlaze u drift kao ručno napisana petlja sa intervalima.

(05)

Vidljivost & logovi

Potpune audit staze za svaki okidač. Vidite tačno kada se job okidao, koji payload je poslat i odgovor koji je primio.

(06)

Standardna cron sintaksa

Standardni POSIX cron izrazi sa pet polja, razrešeni u UTC-u. Svaki raspored se validira pri kreiranju, pa se izraz koji nikada ne bi mogao da se okine odbija odmah umesto da tiho nikada ne radi.

(Nautilus ekosistem)

Savršen par sa Verne Relay-om

Clockwork upravlja kada, Relay upravlja kako. Koristite Clockwork za okidanje zakazanih događaja i rutujte ih kroz Relay za sigurnu isporuku sa eksponencijalnim backoff-om. Zaštitite čitav pipeline sa Auth.

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

(Iskustvo programera)

Zakažite job putem API-ja

Dinamički upravljajte ponavljajućim zadacima koristeći bilo koji jezik. Samo navedite cron izraz i ciljni endpoint.

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)

Često postavljana pitanja

Kako Clockwork sprečava dupla izvršavanja?

Svako dospelo pokretanje se preuzima uslovnim update-om u bazi pre nego što se bilo šta okine: drugi worker koji vidi isti job zatiče red već pomeren i ne radi ništa. To vam daje jedno okidanje po zakazanom terminu, bez obzira na broj instanci. Sama isporuka je at-least-once — neuspeo pokušaj se ponavlja — pa napravite endpoint idempotentnim i koristite zaglavlje X-Clockwork-Attempt da zaštitite sporedne efekte.

Šta se dešava ako ciljni endpoint nije dostupan kada se cron okine?

Svako pokretanje ima do tri pokušaja: prvi, pa ponavljanja nakon jednog i nakon pet minuta. Mrežni otkazi, 5xx i 429 se ponavljaju; ostali 4xx odgovori ne, jer bi identičan pokušaj dobio isti odgovor. Svaki pokušaj se beleži sa odgovorom koji je vraćen, a ponavljanje na čekanju preživljava restart workera.

Mogu li zakazati jednokratne zadatke (odložene jobove)?

Da. Pored ponavljajućih cron izraza, Clockwork API podržava precizno zakazivanje po vremenskom žigu za zadatke sa jedinkratnim izvršavanjem — na primer, slanje emaila 24 sata nakon registracije.

Već koristimo Vercel Cron, pg_cron na Supabase-u ili GitHub Actions — zašto menjati?

Svaki od njih je dobar unutar svoje platforme i staje na njenoj ivici. Vercel Cron zakazuje Vercel funkcije, a besplatni nivo je namerno uzak. pg_cron radi unutar vaše Supabase baze i dohvata samo ono što baza dohvata. GitHub Actions zakazuje preko best-effort reda i, po sopstvenoj dokumentaciji, pod opterećenjem može da okine kasnije. Clockwork poziva bilo koji HTTPS endpoint na bilo kom hostu, po rasporedu koji zadate, uz log izvršavanja za svako okidanje.

Kako da testiram job bez čekanja na raspored?

Napravite odloženi job minut unapred pomoću POST /v1/clockwork/delayed, ispratite ga u logu izvršavanja i obrišite ga. Jednokratno pokretanje koristi istog worker-a i iste logove kao i ponavljajuće.

Postoji li besplatni nivo?

Da — 3.000 API zahteva mesečno na svim engine-ima, uključujući cron, bez kartice. Posle toga je 3 € na 10.000 zahteva, a mesečni limit potrošnje drži račun pod kontrolom.

(Počnite danas)

Preuzmite kontrolu nad vašim pozadinskim jobovima

Eliminišite anksioznost od crontab-a. Izgradite danas pouzdane, skalabilne i vidljive zakazane zadatke za vašu platformu.

Kada vam ovo ne treba

Ako vodite jednu aplikaciju na jednoj mašini, crontab je sasvim u redu i treba da ostane. Isto važi za posao koji nikada ne napušta svoju platformu: Vercel Cron odgovara Vercel funkciji, pg_cron odgovara jobu koji dodiruje samo vašu Supabase bazu, a GitHub Actions raspored je dovoljan za noćni zadatak koji sme da kasni.

Clockwork zarađuje svoje mesto na granici gde se to zaustavlja, a ta granica dolazi ranije nego što se očekuje. Druga instanca, gde dve kopije istog crontab-a dvaput pokrenu isti obračun. Job koji mora da pozove servis na drugom hostu. Raspored koji vaši sopstveni klijenti podešavaju iz vaše kontrolne table. Pokretanje koje je palo u 03:00 a niko nije saznao.

Ta četiri slučaja Clockwork i rešava: jedno izvršavanje po rasporedu bez obzira na broj instanci, bilo koji HTTPS endpoint na bilo kom hostu, rasporedi kreirani i otkazani preko API-ja, i log svakog okidanja sa odgovorom koji je dobio. Prvih 3.000 zahteva svakog meseca je besplatno.