Bis zu zehn Bestellungen pro Sekunde mit Magento

High Performance Magento in der Cloud
Kommentare

Magento ist eine großartige Plattform. Die zahlreichen Features lassen sich leicht ergänzen und auf den eigenen Business Case anpassen. Will man Magento im Enterprise-Umfeld betreiben, kommen schnell neue Anforderungen an Prozesse, Stabilität und Performance ins Spiel. Um einen Shop zu betreiben, der problemlos in der Lage ist, mehr als eine Millionen Besucher pro Tag, 5000 davon zur gleichen Zeit und bis zu zehn Bestellungen pro Sekunde zu verarbeiten, muss man über den Tellerrand einzelner Server hinweg schauen und einiges optimieren. Mit dem Angry-Birds-Shop, einem der derzeit Traffic-stärksten Magento Stores, wurde bewiesen, dass dies möglich ist. Was hinter den Kulissen stattfindet, wird in diesem Artikel gezeigt.

PHP Magazin

Der Artikel „High Performance Magento in der Cloud“ von Fabrizio Branca ist erstmalig erschienen im PHP Magazin 2.2013

Die Anforderungen an einen professionellen Shop unterscheiden sich deutlich von einem kleineren Shop. Mit manuellen Anpassungen am Magento-Core und dem Kopieren einzelner Dateien kommt man nicht weit. Auch das synchrone Deployen neuer Features nimmt andere Dimensionen an, wenn mehr als ein Server im Spiel ist. Dazu muss der Shop hochverfügbar und ausfallsicher sein. Auch spontane, unvorhergesehene Lastspitzen dürfen den Shop nicht in die Knie zwingen. Und dass die blitzschnelle Auslieferung von Seiten nicht nur für die Suchmaschinen gut ist, sondern sich auch positiv auf die Verkaufszahlen auswirkt, ist schon lange kein Geheimnis mehr.

Beim Betreiben eines Shops auf mehreren Servern kommen noch weitere Wünsche und Anforderungen hinzu: Die Server für den Backend-Zugang sollten unabhängig von den Frontend-Instanzen sein. Auch Hintergrund-Tasks und die Kommunikation mit externen Services sollten weder das Arbeiten im Backend noch die Auslieferung des Frontends beeinträchtigen.

Während eines Deployments und beim laufenden Betrieb sollte der Besucher nichts von neu hinzukommenden oder wegfallenden Serverinstanzen mitbekommen. Warenkörbe und Logins dürfen nicht verloren gehen und der Checkout-Prozess darf nicht unterbrochen werden.

Herausforderungen

All diese Anforderungen sind eine Herausforderung beim Konzipieren und Implementieren des Shops und des Deployment-Vorgangs. Wäre ein Magento-Server eine „Share Nothing“-Architektur [1], also vollkommen unabhängig von anderen Knoten, dann wären das Skalieren und das Deployment relativ einfach. Allerdings gibt es viele gemeinsame Ressourcen, die unter den Knoten geteilt oder synchronisiert werden müssen. Darunter die Datenbank, der Cache, die Sessions, die Produktbilder und Assets für das Theming, wobei die gebündelten, minifizierten und komprimierten JavaScript- und CSS-Dateien hier nochmal eine besondere Herausforderung darstellen.

Lösungsbausteine

Der Angry-Birds-Webshop [2] ist in der Amazon Cloud gehostet. Für die Verwaltung von Deployments, EC2-Serverinstanzen und andere Amazon-Services wird RightScale verwendet. Neben RightScripts kann auch Chef und Puppet verwendet werden, um die Serverinstanzen je nach Einsatzzweck zu provisionieren. Das zentrale Monitoring und Logging, eine flexible Verwaltung von allen relevanten Parametern, ein ausgereiftes Webinterface mit vielen Funktionen sowie das RightScale-API ermöglichen dabei ein sauberes und effizientes Cloud-Setup und die automatisierte Durchführung von Deployments. Daneben wird Varnish als Reverse Proxy eingesetzt, um „cachebare“ Inhalte effizient auszuliefern und die Last von den Webservern zu nehmen. Abbildung 1 zeigt Amazon-AWS und RightScale als Bausteine für das Cloud Hosting.

Abb. 1: Amazon-AWS und RightScale als Bausteine für das Cloud Hosting

Themen der folgenden Seiten

  • Serverinfrastruktur
  • A/B-Deployment im großen Stil
  • Varnish verleiht dem Shop Flügel
  • Magento-Caching
  • Magento-Optimierungen
  • Qualitätskontrolle
  • Continuous Integration und die Deployment Pipeline
  • Lessons learned
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -