Is cron really meeting your scheduling needs?

The folks over at Airbnb were frustrated with how good old cron was not really managing their scheduled jobs.  To limit the frustration they built Chronos.  This week they decided to open source it.  It’s built on a Java project from the Apache Project Incubator called Mesos and Maven as the backend.

For those who haven’t used it cron is about the simplest scheduling you can do.  Cron works great for kicking off things like backups and basic reporting.  Where cron starts to fail is when you want to do complex jobs that know to start things on a previous jobs success or manage the number of jobs that are running.  The logging and reporting of cron failures is generally pretty rough.  So facing these issues the team decided to write their own replacement.  They additionally needed it to be able to run on multiple machines. 

They started building the system, simple and with functional GUI to make management and reporting easier.  To be redundant a server is chosen to be the “Leader” which keeps track and hands out work to through their API.  If you do connect to a machine that isn’t the “Leader” your request is redirected to the “Leader”.  If the “Leader” goes down a new “Leader” is elected.  The jobs can have defences and can be run in parallel.  The jobs themselves are written in interrupted BASH Shell commands.  It tries it’s best to be flexible and not overly complicated.

If you are looking for a package to manage distributed schedules this one is defiantly worth a look.  Here you can find a good demo talk about how they got to where they are. There are closed source options but they tend to be very complex.  So this is a really nice addition to the open source world.