Abstrakte Darstellung vernetzter E-Commerce-Systeme und Datenflüsse
← Praxisfälle

Shopware 6 · Redis · Managed SQL · Lastspitzen

Shopware 6RedisManaged SQLOpenSearch

Shopware unter Last: Carts und Sessions sicher skalieren

Ein wachsender Shopware-Betrieb braucht mehr als einen schnelleren Webserver: einen klaren Ort für Daten, Sessions, Carts, Locks, Suche und Hintergrundarbeit.

Wenn Storefront, Session, Warenkorb, Lock und Queue auf einem einzelnen Webserver zusammenlaufen, wird jede Lastspitze zum Architekturtest.

Fall 30 Minuten einordnen
Der BetriebE-Commerce mit hohem Katalog-, Plugin- und Lastprofil

Die Website war nicht das Einzige, was auf dem Webserver passierte.

In einem großen E-Commerce-Betrieb treffen viele Zustände gleichzeitig aufeinander: Storefront-Requests, Warenkörbe, eingeloggte Kunden, Suche, Indexierung, Imports und asynchrone Jobs. Ein einzelner Webserver kann das eine Zeit lang tragen. Er sollte aber nicht die einzige Instanz sein, die sich an eine Session oder einen Lock erinnert.

Die Frage war deshalb nicht: „Wie bekommen wir die Startseite schneller?“ Sondern: „Was darf beim Hinzufügen eines zweiten Webnodes niemals verloren gehen?“

Ausgangslage

Eine Maschine kann viel ausliefern. Sie soll aber nicht alles wissen.

Die Shopware-Storefront lief neben PHP-FPM, Hintergrundarbeit und einem umfangreichen Plugin- und Katalogprofil. Datenbank, Suche und Caching waren relevante Teile des Betriebs. Für steigende Last war ein zweiter Webnode denkbar – aber nur, wenn die zustandsbehafteten Teile vorher sauber ausgelagert werden.

Führende DatenBestellungen, Preise und Bestände brauchen eine belastbare, zentrale SQL-Datenbank.
Flüchtiger ZustandSessions, Cache und Locks müssen für alle Webnodes dieselbe Realität zeigen.
Asynchrone ArbeitIndexierung, E-Mail und Jobs dürfen den Checkout nicht zufällig verdrängen.

Architekturentscheidung

Aus einem Shopware-Monolithen wird ein klar verteilter Betrieb.

Webnodes liefern ausRedis teilt ZustandManaged SQL führt DatenWorker laufen getrennt

Die Webschicht wird austauschbar. Redis übernimmt den gemeinsamen flüchtigen Zustand: Sessions, Cart-/Context-Nähe, Cache und Locks. Die SQL-Datenbank bleibt führend für Bestellungen und Bestände. OpenSearch bearbeitet Suche. Queue-Worker und geplante Aufgaben bekommen klare Zuständigkeiten statt um dieselben Ressourcen wie der Checkout zu konkurrieren.

Der Gegenbeweis

Ein Cache kann die Antwortzeit drücken – und trotzdem der falsche Fix sein.

Ein Test mit HTML-Cache zeigte, wie schnell anonyme Storefront-Seiten werden können. Der Test wurde nicht als Erfolg verkauft, als sich die Warenkorb-Semantik nicht mehr belastbar verhielt. Das war die richtige Entscheidung: Ein Commerce-System ist nicht schneller, wenn der Checkout schneller falsch wird.

Die Konsequenz war, Performance nicht mehr als isolierte Seitenmetrik zu behandeln. Storefront, eingeloggter Zustand, Cart, Checkout und Hintergrundarbeit wurden als unterschiedliche Pfade gedacht und geprüft.

Lastspitzen

Der zweite Node ist der letzte Schritt, nicht der erste.

  • Sessions dürfen bei einem Node-Wechsel nicht verschwinden.
  • Locks müssen für alle PHP-Prozesse gelten, sonst entstehen Doppelarbeit und Race Conditions.
  • Medien, Konfiguration und Secrets müssen auf jedem Webnode kontrolliert identisch sein.
  • Worker und Cron laufen nur dort, wo sie bewusst eingeplant sind – nicht doppelt auf jedem Webserver.
  • Load Tests prüfen Cart und Checkout, nicht nur eine schnelle Startseite.

Ergebnis

Eine Architektur, die Lastspitzen kontrolliert abfängt.

Die entscheidende Leistung war kein einzelner Redis-Schalter und kein Cache-Trick. Es war die klare Trennung von Web-Auslieferung, gemeinsamem Zustand, führenden Daten, Suche und Hintergrundarbeit. Damit kann der Betrieb Webkapazität ergänzen, ohne Warenkorb und Checkout zum Experiment zu machen.

Genau diese Reihenfolge prüfen wir auch bei anderen Shopware-Shops: erst Pfade und Zustand verstehen, dann Last verteilen.

Ist Ihr Shop bei Last langsam oder unberechenbar?

Wir trennen mit Ihnen Symptom, Zustand und wirkliche Ursache.

Shopware-Fall besprechen