Blog

News

Magento, eine kritische Betrachtung

Im Open-Source Bereich ist Magento zur Zeit eine der beliebtesten eCommerce Lösungen. Wir hatten vor kurzem die Gelegenheit in einigen Projekten mit Magento zu arbeiten und sind damit in der Lage das Potential genauer einzuschätzen. Mit diesen Beitrag wollen wir ein kritischen Blick auf das Shop-System werfen und die Frage beantworten, ob und unter welchen Umständen wir diese Lösung unseren Kunden empfehlen würden und worin potentielle Probleme begründet liegen.

1) Betrachtung aus Sicht des Entwicklers

Auf den ersten Blick sieht Magento sehr vielversprechend aus. MVC-Design-Pattern, Events, viele Module, Konzepte mit Collection usw.,  sind Eigenschaften die einem erfahrener Entwickler und Softwarearchitekten den Eindruck aufzwingen, dass es sich bei Magento um moderne, gut konzipierte Software handelt.

Nach kurzer Zeit merkt man jedoch, dass nicht alles Gold ist, was glänzt. Funktionen tun andere Dinge als die Dokumentation vorgibt,  soweit überhaupt eine Dokumentation vorhanden ist. Collections verhalten sich dann leider auch anders als erwartet. Wichtige Funktionalität ist an Orten im Code untergebracht, an denen man sie nicht ansatzweise suchen würde.

Insbesondere bei der Verbindung zwischen Application und Datenbanklayer schlägt die Vielzahl von Abstraktionsschichten voll durch und führt zu einer Flut an SQL-Statements. Diese werden dann auf Entity-Tabelle, Flat-Tabellen, EAV-Tabellen und Index-Tabellen ausgeführt.

Insgesamt stellt dies zwar aus Sicht der Datenhaltungstheorie ggf. eine optimale Lösung dar, allerdings führt Sie zu maximaler Komplexität und daher äußerst schlechter Performance.

2) Community vs. Commercial Licence

Magento hat eine Dual-Licencing Strategie. Die Community Edition steht unter OSL. Daneben gibt es eine kommerzielle Enterprise Lizenz. Die Enterprise Version hat einige zusätzliche Features. Die Interessantesten unter Ihnen sind die Einbindung von Apache SOLR für die Suche und der Full-Page-Cache. Zumindest offiziell gibt es auch einen Support.

In der Praxis liefert dieser jedoch kaum einen Vorteil. Tickets werden ewig oder gar nicht bearbeitet. Da es sich bei einen Shopsystem immer um eine stark anwendungsbezogen angepasste Anwendung handelt, ist man bei der Anpassung ohnehin meist sich allein gestellt, selbst wenn Probleme in den Core Komponenten auftreten.

Full-Page-Cache ist zwar eine nette Sache, aber selbst mit selbigem, ist Magento so langsam, dass das Nutzererlebnis nicht überzeugen kann. Für eine eCommerce Anwendung ist das in unseren Augen eine maximal ungünstige Situation. Entweder man lebt damit, das die Performance schlecht ist, dann bleibt bestenfalls (ein Teil) der Kundschaft aus. Oder man investiert sehr viel Zeit und Geld in Performancetuning.

3) Was wirklich nervt

Ein paar Bugs muss man jeder Software verzeihen. Die entscheidende Frage ist aber wie schwer die Bugs wiegen bzw. welcher Aufwand zum Fixen durch Updates oder Workarounds entsteht. Magento ist hier ein sehr negatives Beispiel. Es verlangt von einem Entwickler nicht nur eine hohe Frustrationsgrenze ab, sondern auch von Kunden, da einige Fehler erst im produktiven Betrieb (also unter Volllast) zu Tage treten. Die ist für ein Kunden mit ausführlicher und gut organisierte Test- und Stagingphasen besonders ärgerlich. Insgesamt hat Magento unseres Erachtens noch zu viele Fehler, insbesondere wenn es im Enterprise Bereich eingesetzt werden soll.

4) Fazit

Unser Fazit ist, das die Qualität von Magento ingesamt nicht stimmig ist. Die Enterprise Edition ist ihr Geld unseres Erachtens nicht wert, da ein funktionierender Support quasie nicht existiert. Die Performance ist nicht ein Problem, sondern das Problem, womit wir praktisch jedem Kunden abraten würden auf Magento zu bauen.

Für kleiner und mittlere Projekte ist Magento einfach zu viel Code und viel zu komplex (Design Paradigma). Man ist daher mit einem kleineren performanteren Shop wie Presta vermutlich besser bedient. Für größere Projekte im Enterprisebereich ist Magento vor allem wegen seiner Performanceprobleme nicht geeignet. Wichtige Funktionen müssen zum Teil per Java oder JavaScript nachgerüstet werden.

Der Designoverhead (Abstraktionsschicht) sorgt dafür dass ein Export von Produkten aus Magento gut 50 Stunden dauern. Ein SQL-Statement an dieser Stelle  wäre sicher deutlich performanter. Wir sind der Auffassung, dass für vergleichbare Investitionssummen eine, auf eigenen funktionalen Anforderungen basierende Anwendung mit einem PHP-Framework der Wahl entwickelt werden kann. Dann kann man die Funktionalität abbilden, die wirklich gebraucht wird und eine Performance erreichen, die im Falle Magentos nur mit viel bis sehr viel Tuning zu erreichen wäre.

Unseres Erachtens liegt die wesentliche Ursache des Problems darin, dass es sich bei Magento um ein künstliches Open Source Projekt handelt, dass weniger den Nutzen einer breiten Community von Anwendern (die allerdings sicher existieren würde) als mehr die strategischen Ziele des Herstellers und dessen Kapitalgebern im Auge hat. Die Tatsache, dass Ebay die Mehrheit der Anteile an  Magento Inc. übernommen hat verstärkt diesen Eindruck weiter

zurück zur Übersicht