am 31. März 2009

Da momentan, meiner Meinung nach, ein Hype um Magento besteht wollte ich kurz einen Erfahrungsbericht zu dem Shopsystem schreiben. Im Januar 2008 habe ich meinen Arbeitgeber gewechselt, der Neue wollte von eine alten Lösung (Perl, Online Katalog) auf ein neues modernes System wechseln. Zu diesem Zeitpunkt war die Seite schon sehr gut besucht, so das man ungefähr abschätzen konnte wie viele Besucher Magento mindestes beliefern sollte. Entschieden haben wir uns also für Magento, zu seiner Zeit als Beta vorhanden. Dies war natürlich ein Risiko und sollte sich leider auch halb bewahrheiten. Als Programmierer versucht man natürlich schnell eine Schnittstelle zu schaffen um die Produkte erstmal in den Shop zu bekommen. Entweder man schreibt direkt in die Datenbank (Nachteil: man muss das ganze System erstmal verstanden haben) oder man nutzt eine Schnittstelle. Magento hat eine nette Schnittstelle die man hätte benutzen können.
Diese war jedoch sehr langsam (ca. 1 Produkt/sec) und somit für uns mit damaligen 85.000 Produkten unbrauchbar. Die Probleme begannen also: Bei fast jeder neuen Version die Magento herausbrachte, wurde die Datenbankstruktur verändert. Was natürlich Probleme darstellt, da man bei jeder Version sein Importscript anpassen musste.
Nun muss man sich vorstellen, nach 2 Tagen hat man die Produkte endlich im Shop und testet ein bisschen die Suche und die Navigation. Dann kam der erste Schock, die Suche dauert über 3 Minuten!!! Ich wusste nicht ob ich lachen oder weinen sollte. Zu diesem Zeitpunkt lief Magento auf meinem Macbook (2 Ghz, 4 GB Arbeitsspeicher). Wir haben also einen Webserver mit Quad Core mit 8 GB RAM und Debian als Betriebssystem eingerichtet. Danach flott Magento darauf kopiert und die Datenbank eingespielt.
Man muss nun dazu sagen, dass die Suche nur 2 Minuten gedauert hat was auch nicht wirklich besser war. Ich meldete mich mit meinen Performanceproblemen im Forum, dort jedoch wollte man nicht wirklich auf uns hören. Es wurde uns immer nur gesagt das Magento eher Enterprise ist und wenn man so viele Produkte hat “ordentliche” Server braucht. Ups ?!? Ordentliche Server? Viele Produkte? Wir fanden die Antwort von Varien nicht wirklich hilfreich und optimierten und spielten etwas mit der MySQL udn APC konfiguration rum.
Alles im allem konnten wir noch gute 10 Sec. bei der Suche rausholen. Wir sind nun im März angelangt wo Varien Magento 1.0 freigeben wollte. Wir konnten das ganze nicht glauben, weil es doch noch recht viele Fehler und Bremsen gab. Dennoch wurde Magento mit den Problemen freigegeben und schon rannten alle in die oben genannten Performanceprobleme.
Diese bekamen dann alle nett gesagt das man für den Shop halt bisschen mehr braucht als nur ein Webpaket bei Anbieter XY. Ich denke im März hat Varien endlich verstanden, dass Sie etwas mit der Datenbank machen müssen, da diese alles andere als performant war. Wenn man sich die Datenbank von Magento anschaut, sieht man sofort den Lösungsansatz der gewählt wurde.
Es sind einfach flache Tabellen dazugekommen die damit blablubb_index heißen. Um diese zu füllen benutzt Magento Cronjobs. Natürlich lief die Suche dann schneller und besser, aber nun hat man die Daten praktisch dreifach in der Datenbank. Einmal in der Index Tabelle, dann in der Fulltext und dann natürlich in product_text,product_varchar,product_int…
Da kommt dem Leser die Frage auf wieso wir dieses Shopsystem trotzdem nutzen. Zum einen ist das Erweitern des Shops meist sehr schnell möglich (basiert auf Zend Framework), die Performance konnte man mit eigenen Scriptänderungen erhöhen, sodass die Suche nun wirklich nur 2-3 Sek. dauert. Zudem haben wir es geschafft das die Produkte aus unserer internen Datenbank mit Replication und ein paar Cronjobs immer aktuell sind (im 5 Minuten Takt). Mittlerweile hat unser Shop fast 200.000 Produkte und läuft immer noch sehr flott.
Ich könnte hier noch einiges über Themes und die Layer Navigation von Magento schreiben, jedoch würde das wohl den Rahmen sprengen. Wenn das in den Kommentaren gewünscht wird, kann ich dazu gerne einen neuen Beitrag schreiben.
Varien ist übrigens die Firma die hinter Magento steht. Varien verdient am Magento Support und bietet Bronze,Silber,Gold Mitgliedschaften und Zertifizierungen an.