PHP-Freelancer - Geschäftslogiken & Transaktionierung
Geschäftsprozesse in PHP abbilden
Die Webseite eines Unternehmens ist "nur" dessen Schnittstelle zum Kunden. Im Hintergrund werden Lagerbestände verwaltet, Pakete kommissioniert, Rechnungen erstellt, Nachbestellungen versendet, Umsatzzahlen kontrolliert, und vieles mehr. Während ab einer Unternehmensgröße von einigen Tausend Mitarbeitern zumeist auf angepasste Komplettlösungen von SAP & Co. gesetzt wird, ist für wachsende DotCom - Firmen die individuelle Entwicklung erste Wahl. Damit können neue Anforderungen - etwa die SEPA-Lastschrift ab 2014 - on demand integriert werden, ohne sich frühzeitig an überdimensionierte Fertigpakete zu binden.
Die Kombination aus günstigen Einzelsystemen - gratis Shopsoftware, günstige Lagerverwaltung, gratis CRM - und selbst erstellten Komponenten ist günstig und flexibel. Die Programmiersprache, für die Sie sich dabei entscheiden, begleitet Sie über mehrere Jahre. PHP ist immer dann unser Favorit, wenn es bereits in Magento, Oxid, SugarCRM etc. eingesetzt wird. So haben Sie das PHP-Know-how und die passenden Server bereits zur Verfügung.
Die Umsetzung individueller Geschäftslogiken ist auch anspruchsvoll. Fehler in der Ausführung ihrer Geschäftsprozesse können erheblichen Schaden verursachen, und Performanceprobleme bremsen im wahrsten Sinne ihr Geschäft aus. Als spezialisierte php Freelancer werfen wir unsere Expertise in die Waagschale, ohne Agenturpreise zu berechnen.
"Die Kombination Einzelsystem und selbst erstellten Komponenten ist günstig und flexibel."
Dokumente: Rechnungen und Lieferscheine als PDF
Nach dem Verkauf beginnt die Arbeit erst. Rechnungen und Lieferscheine per Hand zu erstellen ist dabei inakzeptabel: Zu hoch der personelle Aufwand, zu groß die Fehlerwahrscheinlichkeit. Einfache PDF-Systeme lassen sich bereits an einem Tag erstellen, Komplettlösungen mit Archivierung und Mailversand in wenigen Tagen. Damit werden ihre Dokumente auch zu Spitzenzeiten zuverlässig erstellt, und der Entwicklungsaufwand amortisiert sich oft schon nach wenigen Wochen.
Durch sinnvoll zusammengestellte Packscheine sind die Wegezeiten in der Kommissionierung zu verkürzen, durch performante Systeme die Totzeiten senken. Lieferscheine, die durch eine Schnittstelle mit DHL erstellt werden, verkürzen die Packzeit weiter. Ein Plus für ihre Kunden im Versandhandel: Post-Trackingnummern können schon bei der Erstellung des Lieferscheins dem Kunden bereitgestellt werden.
Lagerverwaltung
Grüner Punkt: Artikel verfügbar. Roter Punkt: Versand verzögert sich. Hinter der bekannten Ampelanzeige für die Warenverfügbarkeit kann eine Menge Logik stecken, möchte man den Kunden weder durch langsame Lieferung verärgern, noch durch zu hoch angegebene Lieferzeiten vergraulen. Es lassen sich etwa angemeldete Retouren bereits vor Eingang als verfügbar anzeigen, oder Reserven für Transportschäden und Vor-Ort-Verkauf bilden.
Das Auslösen der Nachbestellung gehört zu den höheren Features einer Lagerverwaltung und wird selbst bei größeren Unternehmen oft nicht automatisiert.
Für automatische Nachbestellungen gibt es grundsätzlich zwei Möglichkeiten:
- Automatische Erstellung, manueller Versand: Die kostengünstigere Variante. Eine Bestellsituation wird erkannt und die Bestellscheine werden erstellt. Die Erkennung erfolgt anhand von Lagerbeständen und Bestellschwellen, wobei auch tägliche Absatzraten und durchschnittliche Nachlieferzeiten berücksichtigt werden können. Ihre Mitarbeiter können die Bestellscheine dann manuell prüfen und danach drucken, faxen oder mailen.
- Vollautomatische Nachbestellung: Die Bestellsituation wird wie oben erkannt, jedoch ist keine manuelle Nacharbeit mehr nötig. Die Bestellung kann etwa als PDF gespeichert und direkt per eMail versandt werden, oder auch als OpenTrans-XML-Dokument auf dem Zulieferer-Server hinterlegt werden. Dieser Standard wurde von einem Konsortium aus dem Fraunhofer Institut, Bayer, Lufthansa, BWM und anderen erstellt, und erlaubt die vollständige Bestellabwicklung über Systemgrenzen hinweg. Dabei müssen Sie sich nicht blind auf das System verlassen: Zum Beispiel könnten Sie Bestellungen bis 5000 automatisch verschicken lassen, alles darüber wird von einem Mitarbeiter freigeschaltet.
"Lieferzeit berechnen, Bestellungen absenden. Unterstützt oder vollautomatisch."
Transaktionierung: beginn, commit, rollback
Oft laufen Shop, Processing, Datenbanken etc. auf unterschiedlichen Servern. Bei der Kreditkartenabwicklung sind sogar getrennte Systeme für Stamm- und Bewegungsdaten vorgeschrieben, da sich anders die PCI-DSS-Compliance nur schwer erreichen lässt. Verärgerte Kunden sind Ihnen sicher, wenn da etwa die Bestellung abbricht, aber die Zahlung aber ausgeführt wurde. Stichwort ist die Transaktionssicherheit, die sicherstellt, dass zusammengehörige Prozesse (etwa Bestellung und Zahlung) entweder vollständig oder aber gar nicht ausgeführt werden.
Da Geldbewegungen nur selten idempotent sind, sie sich also nicht "sicherheitshalber" mehrmals ausführen lassen, sind sogenannte Transaktionen nötig. Eine Transaktion ist eben dadurch gekennzeichnet, dass es am Ende eine Bestätigung erwartet, welches sämtliche Änderungen speichert. Tritt ein Fehler oder ein Abbruch auf, werden alle Änderungen verworfen - das so genannte rollback. MySql unterstützt mit der InnoDB Engine Transaktionen, ebenso wie praktisch alle SQL-Varianten (MariDB, Percona, Oracle SQL etc.), viele NoSQL-Ausprägungen und sogar Key-Value-Stores wie Redis mit seinem MULTI / EXEC - Befehlen. Das Thema füllt Semester und sprengt den Rahmen einer Seite. Als freiberufliche php Freelancer können wir Sie unterstützen.

Aber dafür sind wir ja da.
Wie aber Transaktionen gestalten, die sich über mehrere Systeme erstrecken? Schließlich können Sie ihrer MySQL-Datenbank nicht beibringen, seine Transaktionen mit einer entfernten MongoDB zu synchronisieren. Die Lösung lautet Zwei-Phasen-Commit, indem sie sich erst von allen Systemen die Bestätigung holen, dass die Transaktion zum commit (ausführen) bereitsteht, und dann reihum den Commit-Befehl erteilen. Das Besondere: Nach der ersten Phase ist die Transaktion bereits in die Logs geschrieben, und kann nach einem Systemabsturz wieder hergestellt werden. Damit ist ihre Anwendung in seiner Gesamtheit noch ACID-Kompatibel, also atomar (Alles oder Nichts), konsistent, isoliert (die Transaktionen beeinflussen sich nicht gegenseitig) und dauerhaft (gespeichert).
Häufig übersehene Fehler: Während MySQL zwar Transaktionen für InnoDB unterstützt, sind alle Änderungen an MyISAM-Tabellen permanent. Damit haben Sie nach einem Rollback inkonsistente Daten. Auch beschränken sich Transaktionen auf DML Befehle wie SELECT und INSERT. DROP TABLE und ALTER TABLE gehören zur DDL Befehlsklasse. Sie committen ihre Transaktion automatisch. Bitte verwenden Sie zudem kein phpmyadmin oder andere Webfronts: Wenn es um Livedaten geht, behalten Sie die Kontrolle und geben Sie Befehle manuell in die Konsole ein. Anders auf der Entwicklungsdatenbank - hier sind mysqladmin und workbench eine echte Erleichterung.
Multiprocessing
Manchmal reicht ein einzelner CPU-Kern nicht. PHP erlaubt Ihnen, Prozesse zu splitten und damit über alle CPU-Kerne zu verteilen - vorausgesetzt, Sie haben parallelisierbar programmiert.
Doch manchmal genügt auch das nicht, und Sie wollen Aufgaben über mehrere Systeme verteilen. Wenn unterschiedliche Systeme zusammenarbeiten sollen, ist die Frage der Kommunikation zwischen den Elementen entscheidend. Eine umfassende Strategie kann remote procedure calls mit SOAP und REST beinhalten, bei dem ein System die Funktionen eines anderen aufruft und seine Funktionen aus Software as a service (SOA) orchestriert. Geht es hingegen um die direkte Kommunikation, bietet sich für kleinere Anwendungen Redis mit seinen PUB/SUB - Messages an, für größere Prozesse empfehlen wir gerne RabbitMQ mit komplex konfigurierbaren Nachrichtenroutings.
Sie sehen also: Ob bei Projektwerk, Twago, 4freelance oder anderen Freelancer-Börsen: Wo andere Freiberufler aufgeben, fangen unsere Projekte als PHP-Freelancer erst an.