Der schnelle Shop. Performance-Optimierung für Spitzenlasten
Weihnachten steht vor der Tür – und daher wird so mancher Onlineshop in diesen Wochen immer wieder an seine Kapazitätsgrenzen getrieben werden. Je mehr Besucher im Shop nach Produkten suchen und im Checkout unterwegs sind, desto größer wird die Last für die technische Infrastruktur und desto länger werden die Wartezeiten für die Kunden. Genau das ist gerade auf mobilen Endgeräten ein schwerwiegendes Problem. Stehengelassene Warenkörbe und erhöhte Absprungraten sind die Folge. Damit ein Shop jederzeit und auch bei absoluten Spitzenlasten stets für alle schnell verfügbar ist, bedarf es solider Hardware und einer ausgefeilten Softwareumgebung. Wir fassen zusammen, wie wir im Hosting von Onlineshops für maximale Performance sorgen.
Inhaltsverzeichnis
Wie wird ein Onlineshop schnell?
Es ist immer wieder zu hören, dass ein Onlineshop nur auf extrem leistungsfähiger Hardware wirklich schnell zu bekommen ist. Das stimmt so aber nicht – wenigstens nicht ganz. Richtig ist, dass die Hardware eine sehr wichtige Rolle für die Performance spielt – aber es gibt eben noch eine ganze Reihe von weiteren wichtigen Faktoren, mit denen sich auch unter Volllast kurze Serverantwort- und Seitenladezeiten sicherstellen lassen. Und zwar auch für die Darstellung des Shops auf vergleichsweise schlanker Hardware mit bisweilen recht langsamer Internetverbindung – Smartphones zum Beispiel.
Sehr wichtig ist dabei die Softwareumgebung auf dem Server, die sehr genau auf den Shop und seine besonderen Anforderungen und Bedürfnisse zugeschnitten sein muss. Außerdem ist ein Full-Page-Cache unbedingt vonnöten, damit der Shop jederzeit möglichst schnell auf die eingehenden Anfragen reagieren kann. Auch das PageSpeed Modul für Apache und Nginx Webserver ist längst ein wichtiger Bestandteil des Performance-Werkzeugkastens im Onlineshop-Hosting und sorgt für deutlich kürzere Seitenladezeiten im Browser. Wer seine Inhalte in größtmöglicher Geschwindigkeit ausliefern lassen möchte, sollte zusätzlich zu den Optimierungen am eigenen Server auf ein CDN zurückgreifen. Und wer seinen Kunden im Shop eine schnelle, leistungsfähige Suche bereitstellen möchte, muss dafür (auf Softwareebene oder sogar mit zusätzlicher Hardware) noch einen Suchserver einplanen.
Schließlich bedarf es noch geeigneten Messinstrumenten für die dauernde automatisierte Überwachung von Server und Shop im Hinblick auf die Leistungsdaten, um im laufenden Betrieb beobachten zu können, wie schnell das System zu welchem Zeitpunkt tatsächlich arbeitet und wo neuralgische Punkte und etwaiger Verbesserungsbedarf liegen.
Die Performance von Onlineshops muss also durch eine ganze Reihe von möglichen Instrumenten verbessert, überwacht und optimiert werden, wenn ein Shop zuverlässig auch bei Spitzenlasten wie in der Vorweihnachtszeit maximale Leistung bringen soll. Um einen groben Überblick zu liefern, erläutern wir in den folgenden Abschnitten kurz, was genau in den einzelnen Bereichen zu beachten ist und welche Möglichkeiten für Verbesserungen jeweils bestehen.
1. Die solide Grundlage: Leistungsfähige Hardware
Ohne leistungsfähige Hardware wird ein Shop spätestens bei erhöhtem Besucheraufkommen zu schwächeln beginnen und recht bald unter der übergroßen Last in die Knie gehen. Aber hier ist im Hinblick auf die damit verbundenen Kosten viel Augenmaß gefragt, weshalb wir von allzu überdimensionierter Hardware und potenziell sehr kostspieligen Diensten wie AWS abraten.
Wer einen Shop mit überschaubaren Klickzahlen und einem kleinen Sortiment betreibt, braucht bei weitem nicht die schnellste verfügbare Hardware – und schon gar kein Server-Cluster. Für sehr hoch frequentierte Shops mit einer fünf- bis sechsstelligen Zahl von Produkten muss allerdings schon weitaus mehr Hardware-Power im Rechenzentrum stehen. Und auch zwischen den Shopsystemen bestehen mitunter gewaltige Unterschiede, was den Hardwarebedarf angeht. Ein beeindruckendes Beispiel für diesen Umstand bietet der Vergleich der Performance von Magento 1 und Magento 2. So gesehen ist die Frage nach der richtigen Hardware nicht pauschal zu beantworten.
Gleichwohl lassen sich einige wichtige Grundsätze für die Wahl der Hardware formulieren. Schon zu Beginn sei darauf hingewiesen, dass für einen Server neben den auch sonst für Rechner sehr wichtigen Kennzahlen insbesondere die Geschwindigkeit der Internetanbindung entscheidend ist. Das Minimum hierbei sind 100 Mbit/s und bereits für mittlere Setups empfehlen wir die Anbindung mit 1 Gbit/s. Aber auch im Hinblick auf die Rechenleistung der CPU darf nicht gekleckert werden. Je nach Shopgröße sollte hier sogar durchaus etwas geklotzt werden. Analog verhält es sich beim Arbeitsspeicher, denn Shops brauchen wirklich viel RAM – je größer der Shop und je mehr Besucher er hat, desto mehr Speicher sollte bereitstehen, denn jede Nutzer-Session benötigt RAM. Anstelle von Festplatten sollten für den laufenden Shopbetrieb immer SSDs eingesetzt werden, weil die Zugriffszeiten hier im Vergleich mit herkömmlichen HDDs schlicht in einer ganz anderen Liga spielen und Onlineshops viele gleichzeitige Zugriffe verursachen.
2. Antwortzeiten verkürzen: Optimierte Softwareumgebung
Auf der Grundlage eines soliden und leistungsfähigen Linux Betriebssystems mit Long Term Support (LTS) muss ein gut konfigurierter Webserver betrieben werden, wobei wir seit geraumer Zeit Nginx den Vorzug vor Apache geben. Und auch die eingesetzte PHP Version sollte möglichst aktuell gewählt werden, da die Weiterentwicklung der Skriptsprache fortwährend spürbare Performance-Verbesserungen mit sich bringt.
Zusätzlich zum grundlegenden Zuschnitt der Softwareumgebung lassen sich noch einige weitere wirkungsvolle Faktoren aufzählen – etwa die Frage nach dem PHP Interpreter. Der FastCGI Process Manager PHP-FPM etwa ist ein besonders leistungsfähiger PHP Interpreter, mit dem sich auch und besonders auf stark frequentierten Seiten deutliche Geschwindigkeitsvorteile beim Ausführen von PHP-basierten Anwendungen wie Onlineshops erzielen lassen. Und auch PHP kann durch Caching beschleunigt werden. So lässt sich durch den PHP OPcache vorkompilierter Code im Arbeitsspeicher vorhalten, was die Server-Performance beim Ausliefern von Webinhalten merklich verbessert. Einen weiteren – relativ selten beschrittenen – Weg zu erheblichen Performance-Vorteilen bietet die virtuelle Maschine HHVM (HipHop Virtual Machine), mit der PHP in kompilierbaren Bytecode überführt wird. HHVM empfiehlt sich für Systeme, die noch nicht mit PHP 7 betrieben werden können.
Das Problem der unzähligen Datenbankabfragen, die im Betrieb eines Shops fortwährend anfallen und sich dank des langsamen MySQL Standards sehr negativ auf die Performance auswirken, wird unter Entwicklern und Shopbetreibern sehr oft diskutiert. Hier hilft Redis und stellt eine einfache, nicht-relationale Datenbankstruktur mit Schlüssel-Wert-Paaren bereit. Darin können Daten zwischengespeichert und extrem schnell abgerufen werden. Bestimmte Caches und die Sessionverwaltung werden daher in Redis ausgelagert.
3. Alle Seiten und Inhalte ständig auf Lager: Full-Page-Cache (FPC)
Aber auch mit allen bisher genannten Technologien für Optimierungen an der Performance lässt sich ein auf PHP und MySQL basierender Shop vom Prädikat “extrem langsam” allenfalls auf ein “relativ langsam” verbessern. Sollen die Seiten des Shops wirklich schnell ausgeliefert werden, bedarf es eines noch etwas tieferen Griffs in die Trickkiste. Denn ein integraler Bestandteil in der Performance-Optimierung von Onlineshops ist der Einsatz eines Full-Page-Caches, der die Seiten fertig gerendert vorhält, anstatt sie für die im Betrieb eingehenden Anfragen eigens zu generieren. Dynamische Elemente – etwa die Ausgabe einer Recommendation Engine wie Nosto – werden von einem Full-Page-Cache ausgenommen, damit beispielsweise personalisierte Inhalte generiert und ausgeliefert werden können.
Manche Shopsysteme bringen hierfür bereits out-of-the-box entsprechende Module mit. Es gibt aber auch Lösungen, die sich – jeweils mit der entsprechenden Extension – systemübergreifend einsetzen lassen. Das bekannteste und auch sehr häufig eingesetzte Beispiel hierfür ist der Proxy-Cache Varnish, der einen eigenen, optimierten Webserver mitbringt. Für kleinere Shops sind aber oft auch einfachere Lösungen ausreichend. Ein Full-Page-Cache ist also unverzichtbar – welche Technologie genau dabei am Ende zum Einsatz kommt, hängt aber vom Shopsystem, möglichen Kompatibilitätsproblemen mit anderen Erweiterungen und der zu erwartenden Belastung im laufenden Betrieb ab.
4. Geringe Seitenladezeiten: Optimierte Performance im Browser
Die bisher beschriebenen Möglichkeiten zur Optimierung der Performance von Onlineshops für den laufenden Betrieb und absolute Spitzenlasten tragen vor allem zur Verbesserung der Leistung auf dem Server, also zur Verkürzung der Antwortzeit, bei. Zusätzlich muss jedoch die Performance im Browser in den Blick genommen werden. Denn wer die Geschwindigkeit seines Shops mithilfe von Googles Service PageSpeed Insights misst, muss wissen, dass dabei die Antwortzeit des Servers außer Acht gelassen wird, so dass ausschließlich die Dauer und etwaige Verbesserungsmöglichkeiten für den Seitenaufbau auf dem jeweiligen Endgerät beurteilt werden. Das heißt, nun geht es um Performance-Optimierung “im Browser” (mehr dazu in unserem Blog-Beitrag zum Thema PageSpeed).
Für möglichst kurze Seitenladezeiten durch die optimale Aufbereitung der Shopseiten und Inhalte zur schnellen Darstellung im Browser sorgt das PageSpeed Modul für Apache und Nginx Webserver. Nach der Integration des Moduls lässt sich der Geschwindigkeitszuwachs mit bloßem Auge im Frontend erkennen – und zwar sehr deutlich. Das von Google entwickelte Tool erzeugt eine optimierte Version der Seite mit einer mehr oder weniger grundlegend veränderten Struktur der darin eingebundenen Ressourcen. Die Sortierung der nacheinander geladenen Dateien wird für eine möglichst schnelle Darstellung der Seite angepasst, wofür die Codestruktur entsprechend neu generiert wird. Das ist insbesondere für das Ausliefern der Shopseiten auf mobilen Endgeräten wie Smartphones enorm wichtig, da Kunden mittlerweile auch unterwegs gern schnell noch ein paar Besorgungen in Onlineshops erledigen. Wer auf mobilen Geräten mit besonders schlanken Seiten präsent sein will, sollte zudem den Einsatz der Technologie AMP (Accelerated Mobile Pages) für den Shop erwägen – um die Inhalte noch einmal für die Darstellung in mobilen Browsern zu optimieren.
5. Inhalte dezentral vorhalten: Content Delivery Networks (CDN)
Der Einsatz eines Content Delivery Networks (CDN), das mithilfe von zehntausenden verteilten Servern Inhalte (insbesondere große Mediendateien) dezentral speichert und daher besonders schnell ausliefern kann, ist insbesondere für große Shops mit internationaler Reichweite sinnvoll. Aber auch mittelgroße Shops mit mehr als einer Handvoll Besuchern pro Stunde können mit diesem Kunstgriff sehr wirkungsvoll an ihrer Performance arbeiten. Denn wer beispielsweise auf seinen Produktseiten aufwendige multimediale Inhalte wie hochauflösende Bilder und Videos einsetzt, kann durch den Einsatz eines CDN nicht nur schnellere Seitenladezeiten realisieren, sondern auch merkliche Entlastungen für den eigenen Server erreichen: Wenn der permanente Upload großer Datenmengen ausgelagert wird, werden Bandbreite und Ressourcen für die übrigen Aufgaben im Betrieb des Shops frei.
6. Intelligente Lastverteilung: Suche auslagern
Die Einrichtung eines Suchservers wie Solr oder Elasticsearch (ein Vergleich der beiden Lösungen findet sich in unserem Blog-Beitrag über Suche in Onlineshops) für eine leistungsfähige Suchfunktion, die Kunden bereits während der Eingabe Ergebnisse vorschlägt und in der Lage ist, “unscharfe” Suchanfragen zu beantworten, ist zunächst vor allem im Hinblick auf die Usability eines Shops sinnvoll. Aber im Betrieb eines gut frequentierten Shops kann auf diese Weise die Zahl der zu bearbeitenden SQL-Queries deutlich reduziert werden, was dem Datenbankserver mehr Raum für andere Aufgaben lässt. Und beim Betrieb eines Clusters kann der Suchserver sogar noch auf eigene Hardware ausgelagert werden, so dass das System auch einen Riesenandrang im Shop mit im Sekundentakt eingehenden Suchanfragen routiniert bewältigen kann.
7. Die Leistung im Blick behalten: Performance-Monitoring
Schließlich – aber nicht zuletzt – sei noch darauf hingewiesen, dass Performance-Optimierung in Onlineshops nicht als einmalige Maßnahme verstanden werden darf. Ein Shop lässt sich nicht im Zuge des Launchs oder Relaunchs ein für allemal und für alle Fälle schnell machen. Denn zum einen lassen sich die Verbesserungsmöglichkeiten einiger der oben erwähnten Aspekte und Technologien im Detail erst durch iterative Verfahren, also durch abwechselnde Veränderung und Beobachtung von bestimmten Parametern ermitteln. Und zum anderen ist die Performance des Shops im laufenden Betrieb, also unter Realbedingungen entscheidend – und nicht die Messwerte auf dem Prüfstand.
Um nun aber im Livebetrieb des Shops jederzeit genauen Aufschluss darüber zu erhalten, ob, inwieweit und inwiefern sich bestimmte Maßnahmen und geänderte Einstellungen auf die Leistung des Shops auswirken und wie sich das System bei echten Spitzenlasten verhält, bedarf es neben den von Google bereitgestellten Tools zur Analyse des Shops einer geeigneten Lösung für umfassendes Application Performance Management (APM).
Das als SaaS-Lösung angelegte APM-Tool New Relic etwa liefert in Echtzeit Daten aus sämtlichen relevanten Bereichen, die sich dank individuell konfigurierbarer Dashboards für Mitarbeiter und Dienstleister in maßgeschneiderten Oberflächen anzeigen lassen. Im Onlineshop-Monitoring mit New-Relic lässt sich daher sehr genau nachvollziehen, wie der Shop wann arbeitet und wo im Hinblick auf die Performance noch Verbesserungsbedarf besteht, damit das kommende Weihnachtsgeschäft noch glatter läuft als das letzte. Und übrigens sollte man Lasttests sehr rechtzeitig vor saisonalen Spitzen durchführen, um – vor dem großen Ansturm – noch genügend Zeit für Optimierungen zu haben.
Fazit
Spitzenlasten gibt es alle Jahre wieder – und das nicht nur in der Adventszeit, sondern auch im Zuge von wirkungsvoll umgesetzten Kampagnen im Suchmaschinenmarketing (Google Ads) oder im Social Media Marketing (SMM), bei der Durchführung von Gewinnspielen und anderem mehr. Doch auch im alltäglichen Betrieb bei Normallast verdient die Performance eines Shops besonderes Augenmerk. Immerhin leisten kurze Antwortzeiten und schneller Seitenaufbau im Browser – gerade auf mobilen Endgeräten – einen enorm wichtigen Beitrag zu einer positiven Customer Experience. Überragende Performance ist zu jedem Zeitpunkt ausgesprochen wichtig und in der Optimierung der Leistung eines Shops liegt daher weitaus mehr als das bloße Herauskitzeln von guten Messwerten. Was das in der Praxis bedeutet, haben wir übrigens kürzlich am Beispiel eines unserer Kunden im Managed Magento Hosting in einem Blog-Beitrag zur Performance-Optimierung für Magento Onlineshops demonstriert.