Series · complete
Building a distributed job scheduler
at and cron as a service in Go, from the design decisions to the load tests.
- 01
Building a distributed job scheduler without a queue
at and cron as a service, in Go: six services, MySQL as the queue, Cassandra for history. The decisions behind it, their trade-offs, and what load-testing it on an AWS-shaped bench found, including a bug of mine.
Nov 11, 2026 · 11 min read
- 02
Distributed job scheduler: the design decisions in depth
Why the jobs table is the queue, why MySQL and not Postgres, why Cassandra only for history, and how leases, fencing tokens and idempotency keys keep at-least-once honest. With the alternatives I rejected and the SQL behind each decision.
Nov 11, 2026 · 12 min read
- 03
Load-testing a distributed job scheduler on an AWS-shaped bench
An EKS and RDS lookalike on one PC, a cron platform with 30,000 jobs due at 09:00:00, and ten tests. Nothing was lost; the 300 jobs/s ceiling turned out to be an N+1 of mine.
Nov 11, 2026 · 11 min read