Python treibt Journyx Zeiterfassung
Einleitung
Journyx Timesheet (tm) ist eine kommerzielle Anwendung, die Zeit-, Spesen- und Projektverfolgung ermöglicht. Im Jahr 1996 arbeitete Curt Finch, CEO und Gründer von Journyx, in der Personalvermittlungsbranche, als er eine Gelegenheit erkannte, das Web zu nutzen, um die Zeiterfassungsdaten von Mitarbeitern genau zu erfassen und zu speichern.
Journyx Zeiterfassungsbildschirm Vergrößern
Die erste Version von Timesheet konzentrierte sich auf die Erfassung genauer Kosteninformationen mit dem Ziel, diese Daten bei der Formulierung neuer Projektkostenschätzungen zu verwenden. Seitdem hat sich Timesheet erheblich erweitert, um die Verfolgung von Zeit, Kilometerstand und Ausgaben nicht nur für das Projektmanagement, sondern auch für Abrechnungs- und Gehaltsabrechnungszwecke zu erleichtern. Optionale Module sind für papierlose Spesenabrechnungen, fortgeschrittene Benutzerrollenverwaltung, automatisierte Abrechnung und Gehaltsabrechnung sowie zur Erleichterung des Systemzugangs für getrennte reisende Benutzer verfügbar.
Heute ist Timesheet plattformunabhängig, flexibel genug, um von Kunden an einzigartige organisatorische Bedürfnisse angepasst zu werden, und skaliert für große Unternehmen auf Zehntausende von Benutzern.
Python von Anfang an
Journyx Timesheet verwendet Python von Anfang an. Curt Finch wählte Python zunächst auf Empfehlung eines Freundes, Steve Madere, der Dejanews.com (jetzt Teil von Google) gegründet hatte. Curt beschrieb die Begründung für seine Wahl: "Ich habe mir Java und C angesehen und kam zu dem Schluss, dass 1 Zeile Python 10 Zeilen Java oder 100 Zeilen C entspricht. Entwickler schreiben Code mit einer praktisch konstanten Rate, daher wählte ich Python, die die höchste Sprache war (und ist), die ich je gesehen habe und die auch flexibel genug ist, um allgemein nützlich zu sein."
Architektur
Von Anfang an wurde Timesheet als Webanwendung konzipiert und implementiert. Es verwendet eine dreistufige Webanwendungsarchitektur mit separaten Ebenen für Webpräsentation, Geschäftslogik und Datenspeicherung. Im Laufe der Zeit hat sich die Funktionalität der Anwendung erheblich weiterentwickelt, und Curt's Entscheidung, Python als Implementierungssprache zu verwenden, hat sich als gute Wahl erwiesen.
Python wird derzeit für die gesamte Anwendungslogik in der Timesheet-Anwendung verwendet. Dies umfasst den gesamten Code zwischen der initialen Apache-Bereitstellung, bei der mod_python zur Beschleunigung der Interpreter-Instanziierung eingesetzt wird, über die Anwendungslogik bis hin zum Aufruf der Datenbanktransportebene.
Timesheet verwendet nicht nur die Python-Standardbibliothek, sondern auch mehrere unabhängig entwickelte Open-Source-Python-Subsysteme wie PyXML und die SOAP-Unterstützung von ActZero. PyXML wird verwendet, um bestimmte Geschäftsregeln zu implementieren und jxAPI zu entwickeln, eine SOAP-basierte API zur Anwendungslogik. Es wird daran gearbeitet, diese API zu erweitern, um Vorlagen für die Web Services Description Language für die jxAPI-Funktionen zu definieren. Die Anwendung wird derzeit mit Python 2.1.1 erstellt und ausgeliefert.
Timesheet integriert auch mehrere Nicht-Python-Technologien. Die Unix- und Linux-Distributionen werden mit dem Apache HTTP Server und der PostgreSQL-Datenbank ausgeliefert. Die Timesheet-Distribution für Windows wird mit einer optionalen Microsoft Desktop Engine (MSDE)-Datenbank ausgeliefert und integriert sich mit Microsoft IIS. Timesheet kann so konfiguriert werden, dass eine Vielzahl von Datenbanken von Drittanbietern verwendet wird.
Ergebnisse
Das Timesheet-Projekt war ein spektakulärer Erfolg, generierte Millionenumsätze und ermöglichte Journyx jedes Jahr Wachstum, selbst unter den aktuellen wirtschaftlichen Bedingungen.
Journyx nutzt, wie viele unserer Kunden, Timesheet intern als geschäftskritischen Teil der Unternehmensinfrastruktur. Es wird ausgiebig für Projektverfolgung, Abrechnung und Gehaltsabrechnung eingesetzt.
Bis heute sind etwa 11 Personenjahre in das Journyx Timesheet-Produkt geflossen, was über hundertfünfzigtausend Zeilen Python-Code zur Folge hatte.
Bei der Entwicklung von Journyx waren die beiden größten Vorteile von Python die Geschwindigkeit, mit der Funktionen geschrieben und bereitgestellt werden konnten, und seine echte Write-Once-Run-Anywhere-Plattformübergangsfähigkeit.
Journyx-Entwickler haben festgestellt, dass die Einfachheit und Klarheit von Python in Kombination mit seinen objektorientierten Eigenschaften es zu einer sehr leistungsfähigen und produktiven Sprache machen. Die reichhaltige Standardbibliothek von Python, die Module für Dinge wie Zeichenkettenmanipulation und HTML-Generierung enthält, unterstützt Programmierer zusätzlich bei der Einhaltung aggressiver Entwicklungspläne.
Aufgrund dieser Eigenschaften der Sprache hat Python es Journyx ermöglicht, Funktionen schneller als unsere Konkurrenten hinzuzufügen. Wir konnten SOAP/XML- und WSDL-Unterstützung implementieren und andere Aspekte der Funktionalität der Anwendung weit vor konkurrierenden Produkten erweitern. Einer der Schlüsselfaktoren für diese Effizienz bei Wartung und Verbesserung ist die inhärente Klarheit und Lesbarkeit der Python-Sprache. Andere wichtige Faktoren sind die lebendige und reaktionsschnelle Python-Entwickler-Community und der hohe Grad an Abwärtskompatibilität und Stabilität, den wir bei der Weiterentwicklung des Sprachdesigns beobachtet haben.
Die plattformübergreifende Standardbibliothek von Python und das plattformunabhängige Bytecode-Dateiformat ermöglichen die Bereitstellung von Python-Modulen auf jeder Plattform, unabhängig davon, auf welcher Plattform das Modul vorbereitet wurde. Dies half nicht nur dabei, aufwändige plattformspezifische Entwicklungen zu vermeiden, sondern erleichtert auch den Kundensupport für das Timesheet-Softwareprodukt. Beispielsweise kann ein auf einem Redhat 6.2-System erstelltes Patch-Modul an einen Kunden zur Installation unter Windows XP oder einem anderen Betriebssystem gesendet werden, ohne dass eine Cross-Kompilierung oder Übersetzung jeglicher Art erforderlich ist.
Schlussfolgerung
Python hat es Journyx ermöglicht, ein flexibles, funktionsreiches Produkt für mehrere Plattformen in kürzerer Zeit zu erstellen, als dies mit einer anderen Sprache möglich gewesen wäre. Python war für uns ein wichtiger Wettbewerbsvorteil, und selbst wenn unsere Python-Codebasis an Komplexität und Reife gewinnt, ermöglichen uns die natürlichen Vorteile von Python, eine qualitativ hochwertige geschäftskritische Anwendung zu einem wettbewerbsfähigen niedrigen Preis anzubieten.
Über die Autoren
Curt Finch, Gründer und CEO von Journyx, gründete das Unternehmen 1996 nach einer erfolgreichen Karriere in der Beratungsbranche, in der er an Projekten mit Fortune-100-Unternehmen wie Tivoli, IBM und Prudential Securities beteiligt war und diese leitete.
John Maddalozzo, V.P. of Engineering bei Journyx, kam 1999 zu Journyx, nachdem er zwölf Jahre in der Unix-Kernelentwicklung bei der AIX Engineering Group von IBM tätig war.
