Commerce

Von Magento zu Spryker: Warum ich mich nach zehn Jahren für ein neues Shopsystem entschieden habe.

Andreas Penz

Senior Developer

Seit 2012 arbeite ich bereits mit Magento. Damals war es mit der Version 1.7. schon relativ etabliert und erfreute sich im deutschsprachigen Raum großer Beliebtheit. Nach einer Vielzahl von Projekten mit Magento 1 & 2 habe ich nun aber die “Magento-Welt” gegen Spryker getauscht. Wie es dazu kam, möchte ich euch hier gerne erzählen. 

Magento vs. Spryker - die Ursprünge 

Die Entwicklung von Magento reicht bis in das Frühjahr 2007 zurück. Damals tüftelte eine kleine Firma namens Varien aus Los Angeles an einem individuellen Shopsystem, das sowohl stabiler als auch flexibler als die am Markt bestehenden Lösungen werden sollte. Innerhalb weniger Jahre wurde Magento zu einem der verbreitetsten E-Commerce-Systeme für KMUs und große Unternehmen. Nachdem Varien mehrmals verkauft wurde, ging es zuletzt in die Hände von Adobe und wurde dort in die Adobe Experience Cloud integriert.  

Sieben Jahre später wurde mit der Gründung von Spryker Systems der Grundstein für eine der innovativsten E-Commerce-Technologien auf dem Markt gelegt. Der Ansatz von Spryker kann mit einem Hightech-Legokasten beschrieben werden und gehört mittlerweile zu den am schnellsten wachsenden Unternehmen in Bezug auf Kunden- und Umsatzwachstum. Im “Magic Quadrant for Digital Commerce” von Gartner wird Spryker schon seit einigen Jahren als “Visionary” geführt und für seine Agilität und Flexibilität geschätzt.  

Gemeinsamkeiten

Beide Systeme verfolgen mehr oder weniger dasselbe Business-Goal - Produkte oder Dienstleistungen sollen online durch einen Kunden bestellt und bezahlt werden können. 

Sowohl Magento 2 als auch Spryker sind mit der Programmiersprache PHP gebaut und speichern ihre Daten in einer relationalen Datenbank - der Quellcode kann eingesehen werden. Für die Suche wird in beiden Systemen Elasticsearch eingesetzt und APIs werden in der ein oder anderen Form bereitgestellt.  

Codequalität: Magic vs. Clean Code 

Magento 2 wurde schließlich von Grund auf neu entwickelt und teilt mit seinem Vorgänger nur noch das ein oder andere Konzept. Diese Neuentwicklung, die bereits 2011 gestartet wurde, gestaltete sich anfangs jedoch sehr zäh und nahm erst mit der Übernahme durch Permira wieder Fahrt auf. 2017 erfolgte schließlich die Veröffentlichung.  

Diverse Entscheidungen, die damals getroffen wurden, hatten seinerzeit bestimmt ihre Berechtigung - können aber aus heutiger Sicht durchaus als “Technical Debt” bezeichnet werden. 

So ist beispielsweise seit jeher das mittlerweile antiquiert anmutende Javascript-Framework “KnockoutJS” im Einsatz, das im besten Fall zu Kopfschütteln, aber in den meisten Fällen zu Frustrationen führt. Mittlerweile gibt es zumindest Drittanbieter wie z.B. Hyva, die das Frontend auf einen neuen Stand gebracht haben und mit dem Slogan “We fixed the Magento Frontend” antreten.

 

Sowohl in Magento als auch in Spryker wird mit einem modularen Ansatz gearbeitet. Ziel sollte es sein, die Features zu nutzen, die für das jeweilige Projekt relevant sind. Während Spryker diese Trennung der einzelnen Module strikt verfolgt und man selbst entscheidet, was man verwenden will, wird das bei Magento ein wenig schwieriger. Module wie Kundenbewertungen oder bestimmte Produkttypen werden von vornherein mitgeliefert und können nur mit großem Aufwand entfernt bzw. ausgehebelt werden. 

Standardmäßig wird mit Magento auch eine Fülle an Bloatware mitgeliefert. Drittanbieter wie Amazon, Paypal, Klarna oder Vertex sind bei jeder Installation von vornherein vertreten - unabhängig davon, ob die Services genutzt und benötigt werden. Dies führt nicht nur zu einer größeren Codebasis und einer unnötig erhöhten Komplexität, sondern auch zu potenziellen Sicherheitslücken. Bei Spryker hingegen hat man die freie Wahl, welcher Code installiert und eingesetzt wird. Je nach Belieben können Module jederzeit hinzugefügt oder wieder entfernt werden. 

Spryker orientiert sich klar an den “SOLID-Principles” und der “Separation of Concerns”. Dies führt einerseits zu einer klaren Strukturierung und andererseits zu einer klar verständlichen und sauberen Codebasis. Solche Prinzipien lassen sich in der Magento-Welt allerdings vermissen, was dazu führt, dass die Qualität je nach eingesetztem Modul variiert. 

Eines der größten Unterscheidungsmerkmale von Spryker ist aber meiner Meinung nach die “ahead-of-time" Generierung von Sourcecode. Durch dieses Verfahren wird nicht nur das Debugging erleichtert – es führt auch zu verständlicherem und vor allem besser lesbarem Code. 

So werden zum Beispiel für die Kommunikation innerhalb der Module aber auch für den Datenaustausch zwischen dem Frontend (Yves) und dem Backend (Zed) Transfer-Objekte eingesetzt. Diese Objekte sind einfache Datencontainer, die mittels XML beschrieben und dann über die Kommandozeile generiert werden. Durch den Einsatz dieser Transfer-Objects wird eine klare Trennung zwischen den zur Verfügung stehenden Daten und der Businesslogik vorgenommen.  

Traditioneller Monolith vs Packaged Business Capabilities 

Mit der zunehmenden Popularität und Implementierung von agilen Prozessen - sowohl auf Seite des Kunden wie auch der Seite der Agenturen - werden auch immer mehr Anforderungen an die eingesetzten Systeme gestellt. Geschwindigkeit, Flexibilität und die Fähigkeit, sich an neue Gegebenheiten im Markt anzupassen, haben hierbei oberste Priorität.  

Magento ist seit jeher auf einer monolithischen Architektur aufgebaut. Das bedeutet, dass die gesamte Logik - angefangen vom Backoffice über die Interaktion mit der Datenbank bis hin zur Ausgabe für den Kunden - in einer großen Codebasis zusammengefasst wird.  

Dieser Umstand führt mitunter dazu, dass Änderungen in einem Bereich am anderen Ende des Systems zu unerwünschten Nebeneffekten führen können. Eine saubere Trennung der Business-Logik und der Darstellung für den Endkunden ist mitunter nur sehr schwer möglich. Auch eine Diversifizierung des Entwicklerteams nach Spezialisierung wird dadurch erschwert. 

Spryker verfolgt dagegen den Ansatz der “Packaged Business Capabilities”. Wie der Name schon sagt, werden hierbei einzelne “Business-Pakete” in verschiedene Services aufgeteilt, die unabhängig voneinander arbeiten und durch Schnittstellen miteinander kommunizieren. Hierdurch wird nicht nur die Umsetzung der Anforderungen vereinfacht und beschleunigt - es gibt dem Kunden und dem Entwicklungsteam auch die Möglichkeit neue Ideen schneller umzusetzen und gegebenenfalls wieder zu verwerfen.  

Workflow - Spaghetti vs State Machine 

Einer der größten Herausforderungen im E-Commerce ist die Abbildung und Implementierung von Geschäftsprozessen in der IT-Infrastruktur. Was bei einem simplen B2C-Business-Modell noch einfach umgesetzt werden kann, wird bei komplexeren Geschäftsprozessen im B2B-Bereich zu einer echten Herausforderung.  

Als Beispiel hierfür können wir uns die Abwicklung einer Bestellung vorstellen. Abhängig von den georderten Produkten, der gewünschten Lieferzeit sowie des Lagerbestandes und der Art der Bezahlung muss die Bestellung gesondert abgewickelt werden.  

Abhängig von der Komplexität des Ablaufes führt das bei der Implementierung mit Magento oft zu komplexen "Wenn-Dann-Sonst"-Konstrukten (Spaghetti-Code), die schon nach kurzer Zeit schwer verständlich und nach längerer Zeit nahezu unwartbar erscheinen.  

Eine Lösung dieses Problems liefert Spryker mit der sogenannten State Machine. Prozesse können hierdurch einfach anhand von States (Zuständen), Transitions (Übergängen) und Events modelliert und visuell dargestellt werden. Diese Lösung gibt sowohl dem Entwickler als auch dem Shopbetreiber eine transparente und einfach zu wartende Möglichkeit komplexe Prozesse umzusetzen und zu erweitern. 

Import / Export

Jedes E-Commerce-Projekt benötigt eine Möglichkeit, mit der Außenwelt kommunizieren zu können. 

Produkte und Lagerbestände, Bestellungen und Kundendaten etc. müssen mit anderen Systemen ausgetauscht und abgeglichen werden können. Jedes Softwareprodukt geht hierbei einen eigenen Weg und bietet die Daten in einer Vielzahl von verschiedenen Formaten und Formen bereit.  
 

Magento bietet leider nur eine sehr limitierte Lösung, um mit diesen Daten umgehen zu können. Mit den zur Verfügung stehenden Bordmitteln ist die Grenze des Machbaren leider sehr schnell erreicht und es bleibt dem Entwickler nichts anderes übrig, als selbst an einer Lösung zu basteln. Nur bei sehr wenigen Magento-Projekten, an denen ich mitarbeiten durfte, konnten wir auf eine bereits bestehende Lösung zurückgreifen und es blieb uns nichts anderes übrig als von null zu starten. Die überwältigende Schar an Drittanbietermodulen, die sich diesem Thema widmen verdeutlicht dieses Problem. 

Spryker liefert hingegen bereits ein Framework, um Importe und Exporte schnell und sauber realisieren zu können. Dem Entwickler bleibt hierbei die Arbeit überlassen, die Daten in das richtige Format zu bringen. Der eigentliche Prozess des Imports und Exports wird dann mit den mitgelieferten Tools von Spryker bewerkstelligt.  

Adobe - SaaS vs Open Code 

Durch den Kauf von Magento durch Adobe im Jahr 2018 wurde ein gewisser Paradigmenwechsel spürbar. Die Strategie scheint es zu sein, sich weg von einer einzigen Codebasis, die man selbst betreiben kann, hin zu verteilten “Microservices” zu bewegen, die dann durch Adobe entwickelt und bereitgestellt werden. “Live-Search” und “Product-Recommendations” sind zwei dieser SaaS-Produkte, die bereits jetzt eingesetzt werden können. Wohin die Reise geht und ob Magento immer weiter durch externe Services zerpflückt wird - wird leider durch Adobe nicht klar kommuniziert.  

Auf lange Sicht bedeutet das weniger Kontrolle über das eigene Ecommerce-System und einen “Lock-in” durch Adobe. Die Flexibilität und Erweiterbarkeit, die Magento immer ausgemacht hat, geht mit dieser Strategie bedauerlicherweise ein Stück weit verloren.  

PaaS, On-Premise oder SaaS - die drei Möglichkeiten bieten sich bei Spryker - allerdings nur in Bezug auf das Hosting des Ecommerce-Systems. Die einzelnen Features bleiben Open-Code und können beliebig eingesetzt, modifiziert oder entfernt werden.   

Bye Bye Magento – Hello Spryker

Fazit

Ohne jede Frage war Magento eines der größten und einflussreichsten E-Commerce-Systeme auf dem Markt. Durch die Entwicklungen der letzten Jahre verlor Magento aber immer mehr an Boden, viele Agenturen und Entwickler kehrten der Magento-Welt den Rücken und suchten nach Alternativen.  

Durch die “State-of-the-Art"-Architektur und das Wachstum der letzten Jahre heißt diese Alternative für mich Spryker.  

🔥 Projekte, auf die wir stolz sind