Shopware 6 | +10.000 Produkte, nicht mit Shopware < 6.4

Wir haben bereits im September 2020 unseren ersten Shop mit Shopware 6 in Produktion gebracht. Dies funktioniert bis auf einige kleine Patches im Core oder Elasticsearch auch wunderbar. Warum Ihr aber keinen Shop mit 10k+ Produkten mit einer Version unter 6.4 deployen solltet erkläre ich in diesem Artikel kurz.

Das soll erstmal keine generelle Kritik an Shopware sein, lediglich ein Hinweis für andere Entwickler / Shopowner, damit diese nicht zu spät in diese Situation kommen. Grundsätzlich gilt, nutzt die neuste Version, das ist allerdings nicht immer möglich (zeitlich, technisch etc.)

Indexierung

Die Indexierung ist aus folgendem Grund ein Problem – mit bin/console dal:refresh:index löst Ihr eine Indexierung von media, category, products etc. aus. Dies ist nicht immer notwendig und gerade wenn Ihr nur categories ändert und mal schnell re-indexieren wollte, aber gleichzeitig 20.000 Produkte habt, dann schnallt euch an. Das ganze dauert je nach Setup ca. 5-10 Stunden.

6.4

In der neuen Version könnt Ihr dem Befehl versch. skip params mitgeben um zum Beispiel das intensive product.indexing auszuschließen. Mehr dazu hier.

Praktisch ist auch das Ihr den /index API Endpunkt dafür nutzen könnt (wenn euer ERP/PIM das ganze steuern soll). Später soll laut Shopware hier auch noch die skip option für die sync-API kommen (siehe hier). Sehr hilfreich wenn man nur einen Call machen möchten z.B.

UPDATE -> 2 Kategorien und SKIP index.***

Nice to have

Anstelle des entfernen der Indizes wäre es cool wenn man zwischen exclude und include wählen könnte. Im obigen Fall

include -> categories

Produktexporte

Produktvergleiche sind die ehemaligen „Exporte“ in Shopware 5. Ich weiß nicht warum dieser Name geändert wurde, aber er führt immer wieder zu Verwirrung. Hier würde ich mir ein „back to the roots“ wünschen. Exporte versteht jeder (Onlinemarketing, IT, Business).

Schön ist das nutzen von Twig im Template und die schnelle Vorschau. Nicht so schön das ist das etwas komplizierte strippen von Texten. Hier wäre eine generelle von Shopware erstellte Twig Funktion nice to have. Nun aber zum eigentlichen Problem, die Performance.

Die ist leider sehr, sehr, sehr schlecht, zmd. aber ziemlich genau 10.000 + Produkten. Ein Shop mit 6000 Produkt(varianten) ist kein Problem und läuft in ca. einer Minute durch. Ein Export mit 22.000 Varianten dauert 4-7 Stunden. Und nein, der Server hat ausreichend Power (NVME SSD, 12GB RAM, 8 VCPUs Nutanix). Wurde auch mehrfach von Entwicklern bei Shopware bestätigt.

Ich kann verstehen, das der Support und Entwickler hier einfach auf die Version 6.4 hinweisen, allerdings sollte dann klar in der Doku oder während der Installation oder irgendwo erwähnt werden, dass die Exporte mit so großen Produktmengen ewig dauern. So fühlt sich der Kunden sonst etwas veräppelt. Auch eine Lösung für alle die < 6.4 nutzen wäre schön gewesen.

Real life example:

Wir haben einen Shop mit 6 Exporten a‘ 23.000 Varianten mit relativ wenig Input

Das ganze wird geloggt und dauert immer relativ gleich lang:

Export Time: Sat Sep  4 18:00:01 CEST 2021. Started
Export Time: Sun Sep  5 15:10:50 CEST 2021. Ended

21 Stunden

Sitemap

Gleich wie beim Exporter ist hier das Problem die Menge an Artikeln. Die Sitemap-Generierung des oben genannten Shops ist teilweise 25h gelaufen. Sprich jedes am gleichen Tag exportierte Produkte ist erst am folgenden Tag sichtbar, wenn überhaupt.

Das ganze wurde in der 6.4.0.0 Version gelöst und findet Ihr hier

Fazit

Wenn Ihr gerade eure Migration plant und zwar noch mit 6.3 und Ihr mehr als 10.000 Produktvarianten aktiv habt oder überlegt euren zweiten Shop zu migrieren, da der erste mit 1000 Artikeln gut lief; wartet noch auf die neuste 6.4.4.0 Version (diese enthält den Produktexporte fix) oder zieht noch die 6.4.x Version nach. Das erspart euch eine ganze Menge Ärger oder das kaufen von externen Plugins oder Workarounds in Eigenentwicklung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.