Technologie & Architektur
-
Gesamtarchitektur & Integration in Magento
Pacemaker ist ein vollständig in PHP implementiertes Magento-Modul und hat somit Zugriff auf alle Prozesse, die in Magento laufen und alle zur Verfügung stehenden Ressourcen. Die Anbindung an Drittsysteme erfolgt im Normalfall über Standardschnittstellen wie Webservices, CSV und XML Dateien. So lassen sich schnell und einfach zusätzliche Konnektoren zu anderen System umsetzen, wenn diese nicht bereits vorhanden sind.

Struktur & Komponenten
Pacemaker selbst verfügt über eine modulare Struktur, um Wartbarkeit und die Weiterentwicklung so einfach wie möglich zu gestalten. Die strikte Trennung von Zuständigkeiten stellt zusätzlich sicher, dass Änderungen nicht zu unerwünschten Nebenläufigkeiten führen und Schwierigkeiten bei Updates verursachen. Die zahlreichen Module lassen sich in die folgenden, übergeordneten Komponenten zusammenfassen:
- Process Pipeline Framework
- Import Framework
- Pipeline-Based Imports
- Order Workflow

Anpassbar- und Erweiterbarkeit
Alle Komponenten von Pacemaker sind so implementiert, dass sie schnell und einfach an die eigenen Gegebenheiten angepasst und bei Bedarf erweitert werden können. Das Zusammenspiel zwischen Process Pipeline und Import Framework erfolgt dabei über sogenannte Exekutoren, die z. B. aus dem Step einer Pipeline durch den Aufruf eines CLI Befehls den Import Prozess starten. Abhängigkeiten im Quellcode zwischen den beiden Frameworks wurden bewußt vermieden.
Hierbei wurde das Process Pipelines Framework als reine Magento Extension implementiert und kann somit über die Möglichkeiten die das Magento Framework bietet z. B. um neue Pipelines und Steps erweitert werden. Viele Anpassungen lassen sich jedoch bereits durch Anpassungen der den Pipelines zugrundeliegenden XML Dateien erledigen, was die Anforderungen hinsichtlich Programmierkenntnisse erheblich reduziert. Die bereits mit ausgelieferten Pipelines sind dabei eine sehr gute Ausgangsbasis für erste Schritte.
Im Falle des Import Frameworks wurde hingegen ein anderer Weg eingeschlagen. Da das Import Framework einen generischen und systemunabhängigen Ansatz verfolgt und somit auch für andere Systeme eingesetzt werden kann wurde hier das Symfony Framework als Basistechnologie verwendet. Das Import Framework verfolgt einen komplett deklarativen Ansatz und ermöglicht mittlerweile eine Vielzahl von Anpassungen über die Konfiguration.
Wie wurde das Pipeline Pattern umgesetzt?
Bei der Umsetzung orientiert sich Pacemaker an Vorbildern wie Jenkins, Gitlab-CI oder Travis-CI. Wie bei diesen Systemen werden Prozesse über eine Konfigurationsdatei modelliert (im XML-Format, um konform mit Magento zu bleiben). Dabei kann über sog. Conditions festgelegt werden, wann eine Pipeline gestartet werden soll. Beispielsweise soll eine Import Pipeline nur gestartet werden, wenn auch passende Dateien vorhanden sind und wenn nicht gerade die Indizierung läuft.
Zum Ausführen eines Steps (Tasks) wird eine Nachricht an die Message-Queue übergeben. Diese bleibt solange in der Queue, bis sie durch einen Runner erfolgreich verarbeitet wurde. Damit kann sichergestellt werden, dass auch beim Ausfall eines Systems Nachrichten nicht verloren gehen und die Nachrichten asynchron und dezentral verarbeitet werden können.

Pipelines vs. CRONJobs
Pacemaker adaptiert das in der Datenverarbeitung seit langem bewährte Pipeline Pattern und eröffnet damit für das Magento Ökosystem bisher ungenutzte Möglichkeiten. Durch die Integration als echtes Magento Modul haben Entwickler direkten Zugriff auf in Magento laufende Prozesse und können diese kontrollieren und koordinieren. Dadurch lassen sich Transparenz, Performance und Skalierbarkeit von Magento um ein Vielfaches steigern und Probleme wie inkonsistente Daten zuverlässig vermeiden.
Leichtgewichte Prozesse
Konditionierung & Priorisierung
Asynchrone & parallele Ausführung
Skalierbarkeit & Dezentralisierung
Visualisierung & Monitoring
Welche Architektur hat das Import Framework?
Das Pacemaker Import Framework verfolgt - neben der Implementierung von schnellen und speicheroptimierten Importprozessen - das Ziel, Anpassungen und Erweiterungen möglichst ohne Programmieraufwand, rein deklarativ durchführen zu können. Dieser deklarative Ansatz in Kombination mit generisch wiederverwendbaren Komponenten bietet ein hohes Potenzial zur Einsparung von Zeit und Kosten.
Bei den Komponenten des Import Frameworks handelt es sich im Großen und Ganzen um Komponenten, die die Funktionalität für den Import der jeweiligen Entitäten kapseln. Die Komponenten können nahezu beliebig miteinander kombiniert werden, so nutzt der Produktimport beispielsweise auch die Komponenten für den Import der Attribute und der Kategorien, um diese dynamisch anzulegen, falls sie noch nicht vorhanden sind.

Vorteile und Funktionalitäten
Das Pacemaker Import Framework wird mit einer Reihe leistungsstarker Komponenten ausgeliefert, die Sie dabei unterstützen, sehr leistungsfähige, grundsolide und einfach zu bedienende Import-Dienste zu erstellen, die nahezu 100% mit dem Standard-CSV-Format von Magento 2 kompatibel sind.
Deklarativer Ansatz
Workflow Engine
Archivierung/Artefakte
Bunch Support
Konsistente Daten
Mehrere Operationen
File Handling
Multithreading
CLI
Delta Import
Common Entity
Produkttypen
Dyn. Optionswerte
Dyn. Kategorien
Dyn. Bildtypen
Admin UI
Caching
Batch Processing
Time Stamp Detection
Change-Set Detection
Single Transaction
Pipeline-Based Imports
Einen signifkanten Mehrwert stellt das im Laufe vieler Projekten erworbene Prozess Know-How dar. Verpackt in ready-to-use Pipelines können Pacemaker-Kunden sofort starten und haben vom ersten Moment an die Sicherheit, dass ihre Prozesse zuverlässig und stabil laufen. Bei Bedarf lassen sich neue Funktionalitäten als zusätzlicher Schritt problemlos per XML Datei in eine bestehende Pipeline integrieren.

Import des Katalogs
Eine der häufigsten Einsatzgebiete für Pacemaker ist die Integration von Drittsystemen. Hauptsächlich handelt es sich dabei um PIM oder ERP Systeme, bei denen Daten entweder in Magento importiert oder aus Magento an das angebundene System übertragen werden. Speziell für den Import des Produktkatalogs, zu dem neben den Produkten die Attribute-Sets, Attribute und natürlich die Kategorien gehören, bringt Pacemaker eine Pipeline mit, die dafür sorgt, dass der Katalog, sofern entsprechende Daten in einem konfigurierbaren Verzeichnis abgelegt werden, aktualisiert wird.
Dabei wird sichergestellt, dass
- die zu verarbeitenden Dateien in ein temporäres Verzeichnis verschoben werden
- die Indizierung des Katalogs gestoppt wird
- die Dateien in der richtigen Reihenfolge importiert werden
- die Datei für den Refresh des Bilder-Cache exportiert wird (für die tatsächliche Aktualisierung ist ein Zusatzmodul notwendig)
- und abschließend die Indizierung des Katalogs wieder gestartet wird
Anschließend ist der Katalog wieder aktuell. Während des gesamten Prozesses stellt die Pipeline sicher, dass zu jeder Zeit der Shop online bleibt und Kunden weiter einkaufen können.
Import von Lagerbeständen
Neben dem Katalog zählen aktuelle Lagerbestände sicherlich mit zu den wichtigsten Informationen im laufenden Betrieb. Um sicherzustellen, dass die Lagerbestände in möglichste kurzen Abständen aktualisiert werden, wird Pacemaker mit einer extrem reduzierten Pipeline ausgeliefert, die in kurzen Abständen ein Delta-Update der Lagerbestände vornimmt. Da die zu verarbeitende Datei lediglich SKU und Lagerbestand umfasst, ist die Laufzeit und damit der Einfluß auf das System praktisch nicht spürbar.
Import von Preisen
Analog zu den Preise beinhaltet Pacemaker eine Standardpipeline für den Import von Preisen. Wie auch bei den Lagerbeständen gehören Preise zu den Bestandsdaten und unterliegen - zumindest zum Großteil - einer höheren Aktualiserungsfrequenz. Um kontinuierlich sicherzustellen, dass die im Shop angezeigten Preise aktuell sind, enthält auch der Preisimport nur die notwendigsten Daten und sorgt somit dafür, dass die Laufzeit auf ein Minimum reduziert werden kann.
Import von Bildern & Videos
Pacemaker bringt auch eine Standardpipeline für den Import von Bildern und Videos mit. Der Import von Bildern und Videos stellt sich häufig, insbesondere aufgrund der großen Datenmengen, als eine komplexe Anforderung dar. Bildern können zum Einen bereits mit den Produkten importiert werden, zum Anderen steht dafür eine dedizierte Pipeline zur Verfügung. Beide Möglichkeiten bringen dabei einen bereits vielfach verwendeten Workflow mit und lassen sich, bei Bedarf schnell und einfach um intelligente Funktionen wie z. B. einem Delta-Cache Management (durch das zusätzliche und kostenpflichtige Modul Image Cache) erweitern.
Order Workflow
Bei dieser Komponente handelt es sich um die zentrale Logik zur Übertragung der Bestellung in das zuständige ERP bzw. Warenwirtschaftssystem (im folgenden "Zielsystem" genannt), sowie die Synchronisation des Bestellstatus zwischen den Systemen.

Order Export
Dieses Modul erkennt anhand konfigurierbarer Regeln, ob eine Bestellung exportiert werden soll. Dabei können die Bedingungen für den Export (z.B. je nach Status der Bestellung) an deren Zahlungsart geknüpft werden. Wird eine solche Bestellung erkannt, so wird eine entsprechende Export-Pipeline dafür initialisiert. Dieser Vorgang kann je Website (Mandant) individuell eingestellt werden. Die Export-Pipeline gliedert sich in bis zu vier Schritte:
- Transformation
- Transport
- Response
- Notification
- Je nach Zielsystem können diese Schritte deaktiviert bzw. zusammengelegt werden.
Bei dem Schritt Transformation wird die Magento-Bestellung in ein Zielformat überführt. Dabei kann ein beliebiges Dateiformat bequem über ein Template im Magento-Backend definiert werden. Spezifische Formate können über entsprechende Interfaces programmatisch erweitert werden. So z.B. auch mittels des von uns entwickelten SAP-Plugins für Pacemaker.
Bei dem Schritt Transport wird die zuvor transformierte Bestellung an das Zielsystem übertragen. Dabei kann im Standard die Bestellung innerhalb des lokalen Dateisystems abgelegt werden. Über entsprechende Erweiterungen können (s)FTP, REST, SOAP, usw. als zusätzliche Handler hinzugefügt werden. Je nach Art der Übertragung kann die Verarbeitung der Rückantwort des Zielsystems direkt innerhalb dieses Schrittes oder erst mit dem nächsten Schritt verarbeitet werden .
Der Schritt Response verarbeitet asynchrone Antworten des Zielsystems. Dabei wird im Standard eine vordefinierte Datei eingelesen, welche die Auftrags-ID (des Zielsystem) erwartet. Wie bei den zuvor beschriebenen Schritten existieren auch hier zahlreiche Extension Points, um die Verarbeitung der Antwort an das jeweilige Zielsystem anzupassen.
Der Schritt Notification ermöglicht es, eine Benachrichtigung zu versenden, sobald die Bestellung einen entsprechenden Status erreicht hat. So kann damit beispielsweise die Bestellbestätigung erst verschickt werden, wenn die Bestellung auch vom Zielsystem akzeptiert wurde.
Line Items
Line Items ist eine Erweiterung, die bereits bei der Erzeugung der Bestellung in Magento aktiv wird. Dabei werden über zusätzliche Attribute die einzelnen Positionen der Bestellung nach vorab konfigurierten Regeln durchnummeriert. Diese Anforderung ergibt sich aus der Funktionsweise vieler ERP- und Warenwirtschaftssysteme.
Durch dieses Modul wird die Nummerierung explizit bei der Erzeugung der Bestellung vorgenommen. Dadurch wird eine höhere Stabilität des Gesamtsystems (damit ist die gesamte E-Commerce Infrastruktur gemeint, nicht nur die Magento-Instanz) gewährleistet, als bei der impliziten Nummerierung während des Export-Vorgangs bzw. der Verarbeitung der Antwort.
Durch dieses Modul lassen sich rein konfigurativ über das Backend z.B. Nummerierungen wie 0010, 0020, 0030, etc. oder ähnliches realisieren. Die Konfigurationen können je Mandant (Website) und somit auch je Zielsystem individuell gestaltet werden.