Case Study: #gigacommerce-Onlineshop

01.01.2019 Claudia Tetz-Froböse 7 Minuten Lesezeit


Funktioniert ein Online-Shop mit einer Milliarde Artikel und dem Anspruch sehr niedriger Responsezeiten auf einem Standardserver?

Die Herausforderung

Das war die Startfrage der Aimeos GmbH aus Hamburg zum Pilotprojekt #gigacommerce. Mit Hilfe des Hannoveraner Hostingspezialisten Profihost AG wurden die Grenzen getestet. Basis: Eine Installation der Aimeos Software mit drei unterschiedlichen Frontends. Laravel, Symfony und TYPO3. Der aufgesetzte #gigacommerce-Demoshop hat 1 Milliarde Artikel, die in 10 Millionen Produkten zusammengefasst sind. Jeder Artikel enthält Attribute, Bilder, Preise und Texte wie in einem regulären Online-Shop.

Das Hosting-Setup #gigacommerce zu skalieren und zu optimieren, war eine spannende Herausforderung.

– Christian Roeben, Profihost

Der Lasttest

Getestet wurde mit Loader.io, einem SaaS Anbieter für Lasttests. Die Antwortzeit setzt sich aus der Netzwerklatenz (32ms), der Verarbeitung auf dem Server (18,7ms) und der Übertragungszeit der HTML Seite zusammen (18,3ms). Der größte Einflussfaktor ist die Netzwerklatenz, die sich im realen Betrieb nur schwer weiter reduzieren lässt. Grundsätzlich ist sie kleiner, je näher der Server geografisch beim Kunden steht und je besser die Anbindung des Hosters ist.

Die Tests wurden mit einer ansteigenden Anzahl von Clients durchgeführt, die so viele Anfragen pro Sekunde wie möglich durchführen (Minimum 12 Anfragen/Sekunde). Solange der Server nicht vollständig ausgelastet ist, bleibt dabei die Antwortzeit konstant, die PI*/Sekunde bzw. die benötigte Bandbreite (Bandwidth) steigen bis zum Maximum an. Erst wenn die Clients mehr Anfragen schicken, als der Server verarbeiten kann wird der „Überlauf“ vom Server mit einem HTTP Status 503 beantwortet. Laravel und Symfony sind etwa gleich schnell. TYPO3, als vollständiges Content Management System, verarbeitet etwas weniger Anfragen pro Sekunde. Getestet wurde jeweils eine Aimeos Listen- und eine Detailseite, sowohl mit Cache als auch ohne. Der Cache umfasst dabei NICHT die vollständige Seite („full page cache“) wie bei anderen Shopsystemen, sondern nur einzelne Seitenfragmente wie z.B. die Produktliste oder die Produktdetails. Der Seitenrahmen wird von Laravel, Symfony und TYPO3 zur Verfügung gestellt, in dem die Fragmente vor der Ausgabe an den Client eingefügt werden. Die Verlinkung zu den einzelnen Lasttests gibt es am Ende des Artikels.

Das Fazit

Mit über 600 PI/Sekunde und einer Verarbeitungszeit auf dem Server, die weniger als 20ms betragen kann, ist das Aimeos E-Commerce System eines der schnellsten, universell einsetzbaren Shopsysteme.

Mit aktiviertem Cache kann Aimeos in Kombination mit Laravel/Symfony viermal mehr Anfragen gleichzeitig verarbeiten als ohne Caching.

Mit TYPO3 sind es ca. 1,6 mal mehr Anfragen, was darauf zurückzuführen ist, dass TYPO3 selbst einige Datenbankabfragen pro Seitenaufruf durchführt und mehr Code ausführen muss als die beiden Frameworks. Dadurch werden die CPUs stärker beansprucht und kommen schneller an ihre Grenzen. Der Unterschied ist auch beim ElasticSearch Server zu sehen, der bei TYPO3 maximal halb so stark ausgelastet ist wie bei den Frameworks – jeweils ohne Caching.

Aimeos ist disruptiv. Es reißt die Grenzen dessen ein, was bisher im E-Commerce für möglich gehalten wurde

– Norbert Sendetzky, Aimeos

Auch ohne Cache sind 130-150 PI*/Sekunde und die Antwortzeiten von 162ms inkl. Netzwerklatenz (130ms ohne Latenz) hervorragende Werte, vor allem da das System dabei bis zu eine Milliarde und mehr Artikel skalieren kann. Damit eignet sich Aimeos ganz besonders für Hochlastszenarien, wie sie beispielsweise bei TV-Werbung auftreten.

Die Einstiegsfrage kann also mit einem eindeutigen „Ja“ beantwortet werden.

Es ist tatsächlich möglich einen #gigacommerce Online-Shop mit einer Milliarde Artikel auf einem Profihost-Standard-Server einzurichten und dabei eine sehr hohe Perfomance zu realisieren.

*PI = Page Impressions

Case Study zum Download
Profihost Factsheet

Alle Lasttests im Detail:
Aimeos Laravel/Symfony list page, 189KB (LAMP: CPU 91%, RAM 6GB / ES: CPU 1%, RAM 25GB): max 547 PI/sec, min 109ms)
Laravel/Symfony with content cache list page (0-100 clients)

Aimeos Laravel/Symfony detail page, 66KB (LAMP: CPU 96%, RAM 6,5GB / ES: CPU 1%, RAM 25GB): max 613 PI/sec, min 108ms
Laravel/Symfony with content cache detail page (0-100 clients)

Aimeos Laravel/Symfony list page, 189KB (LAMP: CPU 93%, RAM 8GB / ES: CPU 92%, RAM 25GB): max 130 PI/sec, min 162ms
Laravel/Symfony without content cache list page (0-50 clients)

Aimeos Laravel/Symfony detail page, 66KB (LAMP: CPU 92%, RAM 8GB / ES: CPU 94%, RAM 25GB): max 150 PI/sec, min 161ms
Laravel/Symfony without content cache detail page(0-50 clients)

Aimeos TYPO3 list page, 200KB (LAMP: CPU 95%, RAM 11.5GB / ES: CPU 0%, RAM 25GB): max 97 PI/sec, min 160ms
TYPO3 with content cache list page (0-30 clients)

Aimeos TYPO3 detail page, 70KB (LAMP: CPU 100%, RAM 9.5GB / ES CPU 0%, RAM 25GB): max 106 PI/sec, min 156ms
TYPO3 with content cache detail page (0-30 clients)

Aimeos TYPO3 list page, 200KB (LAMP: CPU 95%, RAM 10.5GB / ES: CPU 47%, RAM 25GB): max 60 PI/sec, min 227ms
TYPO3 without content cache list page(0-30 clients)

Aimeos TYPO3 detail page, 70KB (LAMP: CPU 98%, RAM 10.25GB / ES CPU 25%, RAM 25GB): max 66 PI/sec, min 204ms
TYPO3 without content cache detail page(0-30 clients)

casestudy aimeos wissen 2018
Sehr gut
4.97/5.00