schedulix

Job-Scheduling mit Open-Source-Software

05.09.2018 von Ludger Schmitz
Admins arbeiten mit einer großen Zahl von Skript-Programmen. Eine mächtige und dabei kostenlose Alternative ist das Open-Source-Programm schedulix, das die Arbeit organisierter und übersichtlicher macht.
Die schedulix-Entwickler und IndependIT-Gründer Dieter Stubler und Ronald Jeninga (r.).
Foto: IndependIT

Ein klassisches Bordmittel der Unix- und Linux-Betriebssysteme ist der Dienst "cron": Damit definierte Prozesse wird das System zu vorgegebenen Zeiten ausführen. Ansonsten sind die Steuerungsmöglichkeiten eher begrenzt. Deshalb ist es längst üblich, mit Script-Sprachen komplexere Abläufe relativ einfach zu gestalten.

Allerdings wächst mit der Zahl der so automatisierten Abläufe auch die Menge von kleinen Script-Programmen, die bald kaum mehr zu überblicken ist. In größeren IT-Umgebungen starten immerhin täglich rund um die Uhr tausende unterschiedliche Prozesse. Darüber hinaus nehmen solche Programme üblicherweise keine Rücksicht darauf, ob die notwendigen Ressourcen - Hard- und Software ebenso wie Daten-Input - tatsächlich zur Verfügung stehen. Genauso wichtig wie das Time Scheduling ist es also, strukturierte Prozesse mit ihren Ressourcen und Abhängigkeiten zum Ablauf zu bringen.

schedulix ist ein Open-Source Tool

Für die heute im Backend dominierende Linux-Welt gibt es ein paar Tools, die sich mehr oder minder für die automatisierte Prozesssteuerung eignen. Eines der ausgefeilteren sei hier vorgestellt, zumal es selbst Open Source ist und mit professionellem Support erhältlich ist. Es heißt schedulix und kommt von der Firma IndependIT aus dem bayerischen Schrobenhausen.

schedulix hat eine interessante Historie. Die Admin-Umgebung ist nicht im Laufe eines Open-Source-Projekts entstanden, sondern von den Entwicklern und IndependIT-Gründern Ronald Jeninga und Dieter Stubler, die Administratoren einer großen, komplexen IT-Umgebung waren, innerhalb von drei Jahren entwickelt worden. Deren Lösung BICsuite erschien bereits 2003 und war proprietär - ausgerichtet auf die Automatisierung von Data-Warehouse-Operationen.

Zehn Jahre später ließ sich das Duo überzeugen, dass ihr Scheduling-System eine große Lücke in der Open-Source-Welt füllen könnte. "Wir möchten das Thema Job Scheduling jetzt auch in der Linux-Welt bekannter machen", erklärt Diplom-Informatiker Dieter Stubler. "Wir hoffen, dass auch mittelständische und kleinere Unternehmen die Vorteile einer professionellen IT-Automatisierung nutzen wollen."

Enterprise Job Scheduling

Die in der Mainframe-Welt selbstverständlichen Steuerungs- und Automatisierungswerkzeuge kommen in der heute üblichen Systemlandschaft nicht mehr zwangsläufig zum Einsatz. In der dezentralen Server-Welt gibt es keine vergleichbar effizienten Verarbeitungsmethoden wie im Großrechnerumfeld. Gleichzeitig macht die Heterogenität der heutigen Umgebungen diese Aufgabe anspruchsvoller.

Die überall verwendeten, selbst entwickelten Skriptprogramme sind schlecht dokumentiert und so zahlreich, dass oft nur noch die alten Hasen durchblicken. Das behindert jüngere Admins und ist für die Zukunft der Unternehmens-IT ein Risikofaktor.

schedulix ermöglicht einen anderen Ansatz: Mit dieser Lösung lassen sich Abläufe modellieren und schließlich automatisieren. Dabei ist übersichtlich zu erkennen, für welche Prozesse welche Jobs bereits bestehen und welche Parameter mit ihnen verbunden sind. Das macht den IT-Betrieb übersichtlicher und hilft, viele Arbeiten zu vermeiden, da sich kleine Job-Module vielfach verwenden lassen.

Process Decomposition

Die Vorteile zeigen sich im laufenden Betrieb: Die meisten IT-Abteilungen starten in der Nacht- und Hintergrundverarbeitung große und komplexe Programme mit langen Laufzeiten. Tritt dabei ein Fehler auf, muss oft das gesamte Programm neu gestartet werden und es entstehen unplanmäßige Wartezeiten, die den Produktivbetrieb einschränken können. Aus diesem Grund haben die Entwickler von schedulix ihre Lösung so ausgelegt, dass sich sämtliche Teilprozesse granular zerlegen und in Abhängigkeiten bringen lassen.

Die klar abgegrenzte Funktionalität jedes Jobs reduziert nicht nur den Aufwand für Entwicklung und Wartung. Sie vereinfacht auch Überwachung, Fehlersuche und Wiederanlauf. Die Potenziale für Parallelverarbeitung und Lastverteilung auf mehrere Systeme lassen sich einfacher ausschöpfen.

Die Voraussetzung für diese als "Process Decomposition" bezeichnete Methode ist, dass der Code der Teilprozesse frei von Aspekten der Ablaufsteuerung bleiben kann. Das gelingt aber nur, wenn das Scheduling-System alle notwendigen Funktionen der Ablaufsteuerung zur Verfügung stellt. Dazu Jeninga: "Nur wenn ein Scheduling-System alle notwendigen Konstrukte zur Abbildung der Programmlogik wie etwa Variablen und Parameter, Sequenzen, Verzweigungen, Schleifen, Parallelisierung und Synchronisation und Ausnahmebehandlungen bereitstellt, kann der Code der Teilprozesse frei von intransparenten Ablaufsteuerungselementen bleiben. Das macht nur schedulix so sauber."

Die Features von schedulix

schedulix kann mehr, als nur die zeitlichen Abläufe von IT-Prozessen zu steuern. Es berücksichtigt beispielsweise Abhängigkeitsbeziehungen, so dass ein Teilprozess C von den Teilprozessen A und B abhängig werden kann. Teilprozess C startet dann erst, wenn A und B erfolgreich abgeschlossen wurden. Falls zwischen A und B keine Abhängigkeitsbeziehungen bestehen, lassen sich diese Teilprozesse parallel ausführen. Die Teilprozesse von B können laufen, obwohl in A ein Unterprozess noch nicht gestartet ist. Dabei lassen sich A, B und C hierarchisch beliebig tief in weitere Teilprozesse zerlegen, zwischen denen ebenfalls Abhängigkeitsbeziehungen bestehen können.

Eine wichtige Rolle spielt dabei der Exit-Status von Prozessen. Er ist frei definierbar, das heißt: schedulix erlaubt hier nicht nur Success, Warning oder Failure, sondern ermöglicht die freie Definition beliebiger eigener Exit-Status. Der Exit-Code eines Betriebssystem-Prozesses wird auf diese Exit-Status abgebildet. Damit lassen sich unter anderem Verzweigungen und Schleifen implementieren. So kann zum Beispiel ein Prozess, der neue Daten in eine Datenbank zu laden hat, einen Exit-Code zurückgeben, der auf einen Exit-Status No_New_Data abgebildet wird, um im Falle, dass keine neuen Daten geladen waren, aufwändige Folgeprozesse zu überspringen.

Mehrere Exit-Status lassen sich zu Exit-Status-Profilen zusammenfassen, welche unter anderem definieren, wie der jeweilige Exit-Status vom System zu behandeln ist. So kann unterschieden werden, ob ein Exit-Status final ist (beispielsweise Success) oder es sich um einen restartable Status handelt, der eine Wiederholung beziehungsweise einen Neustart des Betriebssystem-Prozesses ermöglicht. Ein Exit-Status kann auch als "pending" definiert werden, was bedeutet, dass das System diesen Job so behandelt, als würde er noch laufen. Damit lassen sich Teilprozesse in andere Workflow-Systeme umleiten, deren Erledigung über eine API an den Job zurückgemeldet werden.

Mit Hilfe von Triggern ermöglicht das System, auf Basis des Exit-Status weitere Aktionen anzustoßen, etwa im Falle eines Fehlers eine E-Mail an den Administrator zu versenden. Asynchrone Trigger können schon während der Laufzeit eines Prozesses eingesetzt werden, um etwa Laufzeitüberschreitungen frühzeitig zu eskalieren.

Abläufe melden sich selbständig nicht nur bei ihrem Abschluss, sondern ein Admin kann sich jederzeit tief in die Teilprozess-Hierarchie hineinklicken. So erkennt er, welcher Betriebssystem-Prozess dafür verantwortlich ist, dass ein Ablauf zu langsam läuft oder gescheitert ist.

Teilprozesse in Folder-Struktur organisieren

Die Liste der verfügbaren Teilprozesse würde bald so unübersichtlich wie Zettelwirtschaft, weshalb sich diese in einer Folder-Struktur organisieren lassen. Das bietet eine interessante Möglichkeit: Einem Folder lassen sich Ressourcen zuordnen. Diese stehen dann allen Jobs unter diesem Folder zur Verfügung. Und über sogenannte Folder-Environments lassen sich gleich die Ausführungsumgebungen zuordnen, zum Beispiel Entwicklung, Test oder Produktion.

Über Ressourcen können Admins unter anderem die möglichen Ausführungsorte eines Jobs bestimmen. Die Verfügbarkeit von Ressourcen ist für Ausführungsumgebungen konfigurierbar. Dadurch sind Lastkontrolle und Loadbalancing unkompliziert zu implementieren. Die Ressourcenanforderungen lassen sich für jeden Job definieren, also für kleine Teilprozesse auch begrenzen, um keine Kapazitäten zu blockieren und den Hauptabläufen mehr Raum zu geben. Wenn ein Job besonders wichtig ist, kann er eine höhere Priorität bekommen, wodurch er Vorrang vor anderen wartenden Jobs erhält.

schedulix sichert den Zugang zum System bis auf die Ebene von Jobs durch IDs und Passwörter. Die Benutzung ist ohne Client-Software möglich, weil sie über Standard-Webbrowser erfolgt. Seine Steuerung ist per Kommandozeile oder aus Programmen (Java, Python, Perl etc.) möglich. Die modellierten Abläufe und die Echtzeit-Runtime-Daten speichert schedulix in einer relationalen Open-Source-Datenbank, also etwa Postgres oder MySQL.

Soweit ein knapper Abriss der schedulix-Funktionen. In den meisten IT-Umgebungen von mittelständischen Unternehmen sollten die Fähigkeiten ausreichen. Ein schedulix-Forum bietet weitere Hilfe bei Installation und Betrieb. Der Hersteller IndependIT bietet auch einen Support-Vertrag auf Subskriptionsbasis und darüber hinausgehende Consulting-Leistungen an.

schedulix ist funktional identisch mit der kommerziellen Basic-Edition der BICsuite, die auch noch die Installation und die Integrationsmöglichkeit von proprietären Datenbanksystemen umfasst. Für größere IT-Umgebungen offeriert IndependIT die Editionen "Professional" und "Enterprise". Wichtige Zusatzfunktionen sind beispielsweise die Auditierbarkeit von Ablaufereignissen und Operator-Aktionen sowie die Zuordnung unterschiedlicher Privilegien und Zugriffsrechte auf Objekte. Weiterhin wird ab der Professional-Edition der Export und Import beziehungsweise das Deployment zwischen getrennten BICsuite-Installationen in Entwicklung, Test und Produktion unterstützt. (hv)