Obsidian Scheduler 1.1 Released!

We’ve been working hard to make Obsidian Scheduler even better. Version 1.1 is now available.

Features added in this release include

  • Perfectly distributed load balancing across runnings hosts within seconds of pool membership changes
  • Header icons indicating the number of active hosts
  • Ability to disable targeted scheduler instances without shutting them down
  • Ad hoc job submission support
  • Job State/Schedule UI enhancements

Our demo has been updated with this latest release. Check it out at http://demo.carfey.com and download the update here.

Scheduler Goals

As software professionals, we need our job schedulers to be reliable, easy to use and transparent.

When it comes to job schedulers, transparent means letting us know what is going on. We want to have available to us information such as when was the job scheduled to run, when did it start, when did it complete, which host ran it (in pool scenarios). We want to know if it failed, what the problem was. We want the option to be notified either being emailed, paged, and/or messaged when all or specific jobs fails. We want detailed information available to us should we wish to investigate problems in our executing jobs. And we want all of this without having to write code, create our own interface, parse log files or do extra configuration. The scheduler should just work that way.

We want our scheduler to be easy to use. We want an intuitive interface where we can control everything. Scheduling jobs, changing schedules, signing up for alerts, configuring workflow, investigating problems, previewing the runtime schedule of our environments, temporarily disable/re-enable pool participants, resubmit failed jobs, review job errors should all be at our fingertips and easy to use. The changes should take effect immediately in all pool participants and be logged. If we want to add/remove extra nodes based on load need, we should just be able to do so without any drama.

We want our scheduler to be reliable. It should participate in load balancing and fault tolerance without any extra work. It needs to notify us when something goes wrong. It needs to be incredibly fast so that it stays out of the way and lets the jobs run.

As you’re probably starting to see, to solve all these types of problems software long ago established using a single data store, typically a database. For reasons that are beyond me, job schedulers either don’t use a database or only provide it as an optional configuration setup, an afterthought. This is extremely short-sighted. By not driving your solution off a database, most of the needs identified above become impossible or at best, impractical. Even when used optionally, your job scheduler doesn’t provide the user interface that provides the easy access to the information you require. It’s like a reference book without an index or glossary. You can go find the information you want, but it will be much more work than it needs to be.

Carfey Software’s scheduler has all these features and more. Sign up for your trial licence now at www.carfey.com.

The Problems With Schedulers

Job scheduling is a common need in business software environments. The first thing that likely comes to mind is cron. While cron is a very useful tool, it fails to provide for even basic business needs including logging, history and monitoring and availability (beyond the availability of the host it runs on).

Open source tools such as Quartz, cron4j and Spring’s scheduler are common choices. These schedulers are all moderate improvements over cron in that you can run them within existing jvm instances, be it a running servlet container or even a J2EE server. Generally, though, these schedulers fall short of even the most basic software expectations.

Let’s first of all dispense with Spring’s scheduler – using TimerTask. Spring’s focus is not automation or scheduling. This is clear when we start to review the feature set and usage of scheduling in Spring. While some may argue for Spring’s wiring via static configuration (I would not), this is much less pracitcal when it comes to scheduling jobs. Can you work around this static configuration by rolling your own solution around it? Sure, but you’d be violating a basic principle of Spring and do you really want to introduce into your software project the maintenance of code to handle deficencies in an afterthought feature of a framework with an alternate focus? This is besides that fact that there is no built in failover, logging or monitoring.

What about other java schedulers whose focus is in fact scheduling and execution? Some of these acknowledge that they are nothing more than cron in java, but others are clear improvements over Spring’s scheduler. The most popular and comprehensive open source tool available is Quartz. Let’s evaluate Quartz.

Quartz does provide much control over when a job runs. Time of day, days of week, days of month, days of year and any combination of these with support for custom calendars. Apart from the custom calendars, you probably recognize what it supports as being very similar to cron. It probably wouldn’t surprise you that quartz uses cron patterns as a basis for their configurations. Unfortunately, they do not use a true cron pattern adding an extra seconds field at the beginning of each pattern. For anyone who has been using cron for even a short period of time, it’s truly bewildering and frustrating that they chose to not adhere to the established pattern and that when they did so, made their changes non-optional and at the beginning of each pattern. Quartz also does not support some functionality in cron such as day-of-week combined with day-of-month.

This is about all Quartz does moderately well. Our next blog post will identify all the things a world-class, full-featured scheduler needs to support and the right way to do so.

Great New Product

Carfey Software is proud to announce the soon-to-be released Carfey Scheduler. This product is a significant step forward in the software marketplace for scheduling, workflow, automation and monitoring. It is a Java-based product, but can work within virtually any software environment.

This incredible new product is easily administered with an intuitive web-based interface where detailed and categorized monitoring logs can be searched and reviewed. With full fault tolerance, fail-over, recoverability and load balancing, Carfey Software is setting a new benchmark in this space.

Go to carfey.com to be notified shortly when you can have your own trial licence.