High Performance
Multi-Server Magento
in der Cloud
Fabrizio Branca
Meet Magento #6.12 in Leipzig
San Francisco
Und Sie?!
• Wer war bei meinen Caching/Varnish Vortrag letztes Jahr?
• Wer betreibt einen Magento Shop auf mehr als einem
Frontend-Server?
• Wer hat Erfahrungen mit Amazon AWS oder Cloud-Hosting
im Allgemeinen?
• Wer betreibt einen Shop mit mehr als 500 Bestellungen am
Tag?
• 1000 Bestellungen am Tag?
• 10 pro Minute?
Angry Birds
Angry Birds
Angry Birds
Angry Birds
DRM Server
Mail Service
Giftcards
Braintree
Warehouse
Inventory
3 Storefronts
(US, EU, ASIA)
Custom
Reporting
Splitshipping
Warehouse /
Inventory
Management
Fullfillment
Banner
Management
Custom Tax,
Custom Shipping
Catalog
Rules
…
Das Angry Birds Magento Universum
Anforderungen
• Gutes, flexibles Shopsystem
• Hochverfügbar / Ausfallsicher
• Lastspitzen
• Schnell
• Backendserver unabhängig von den Frontend-Instanzen
• Effizientes und unabhängige Abarbeitung von
Hintergrund-Tasks
• Shop-Betrieb darf nicht von neu hinzukommenden oder
wegfallenden Server-Instanzen oder neuen Deployments
beeinträchtigt werden
Lösungsbausteine
Cloud Services
RightScale Services
Amazon AWS Console
Cloud-
Front
Elasti-
Cache
S3EC2 RDS ELB Route 53
Management
Deployments
Auto-Scaling
Monitoring
Logging
Scripting API
Magento in der Cloud
Share nothing?
Code
CacheSession
Storage
Assets
Produktbilder,
CMS-Bilder,
Skalierte Bilder
Daten-
bank
JS/CSS
Bundles
Server
Magento Anpassungen für die Cloud
• MinifyJavaScript + CSS während des Builds
• JavaScript + CSS mit Zeitstempel versehen und auf
allen Servern verfügbar machen
• Deployment Name im Cache Prefix
• Cache-Warmup Script als Teil des Deployments
• Health-Checks für Varnish
• Automatisches und manuelles Varnish Purging
• E-Mail Service
• Asset-Handling
Aoe_JsCssTstamp
Aoe_Static
Sonstige Module
Aoe_Scheduler Aoe_Apilog
S3
Assets Storage
Varnish ArrayEC2
Frontend Array
CloudFront
CDN for Skin
RDS
MySQL
S3
Deployment
ElastiCache
Cache Backend
ELB
Load Balancer
CloudFront
CDN for Assets
Monitoring
Backend ArrayEC2 EC2
EC2
Worker ArrayEC2
Braintree
MailDRM
Giftcards
Logging
EC2
Route 53
DNS-Service
shop.angrybirds.com
Deployment X+1
Release Y
S3
Deployment
Route 53
DNS-Service
shop.angrybirds.com
X
Varnish ArrayEC2
Frontend ArrayBackend ArrayEC2 Worker ArrayEC2
ELB
Load Balancer
EC2
EC2EC2EC2
Cache
warming
Direkter Zugriff mit
lokalem Hosteintrag
zum Testen
RDS
MySQL
Deployment X+1
Release Y
Varnish Array
Frontend Array
ELB
Load Balancer
Worker ArrayEC2
Deployment X
EC2
Backend ArrayEC2
ELB
Load Balancer
EC2
EC2EC2EC2
Deployment / Rollback
Route 53
DNS-Service
shop.angrybirds.com
Downtime während eines Deployments:
Alle Warenkörbe,
aktive Logins und Sessions
bleiben beim
Deployment / Rollback
erhalten.
Magento, schnell!
Magento Frontend Caching
Optimierungsfelder
Frontend-Optimierungen
JavaScript / CSS
• Bundling (Magento)
• Minifying (mit YUI Compressor)
• Gzip-Komprimierung (Apache)
• Zeitstempel im Dateiennamen für lange Cachedauer
Cache-Header senden
CDN (Cloudfront)
• Produktbilder (+ skalierte Versionen), CMS-Bilder,...
• Skin
• JS/CSS
Aoe_JsCssTstamp
Magento-Optimierungen
Logging reduzieren
Uncachebare Features entfernen
Caching
• Asynchronous Cache Clearing Queue
• Alte Cache-Einträge löschen
Cookie Storage von Benutzername und Warenkorbinhalt
Ajax-Warenkorb
und... Profiling, Profiling, Profiling,…
(xdebug + kcachegrind, Newrelic, xhprof)
Aoe_AsyncCache
Aoe_CacheCleaner
95% der Hits
sind cachebar!
5% dynamischer
Inhalt
Startseite
Kategorien
Produkte
CMS
Warenkorb
Checkout
Kundenkonto
Caching
Varnish
Reverse Proxy
Magento
http://www.fabrizio-branca.de/make-your-magento-store-fly-using-varnish.html
Caching
Lösungen
Aoe_Static
Caching +
Handling von
dynamischem Content
Magneto_Varnish
Purging
Lessons learned
• 404s sind teuer
=> cache or redirect
• Cloudfront mit S3 Backend
kann kein gzip
=> deploy time bundeling/compression
• Kein Reports auf der Live-Datenbank!
• Man kann nicht alles vorhersagen
=> Aber man kann vorbereitet sein, schnell zu reagieren
=> continuous deployment
Continuous
Integration und
Deployment
Keine Angst vor
Production-Deployments!
Magento Installationspaket
Datenbank-
Tabellen
Dateien*
‣htdocs [Magento Source]
‣.modman [Custom Packages]
Installer
Settings
‣URLs
‣Datenbank-Parameter
‣…
* http://www.webguys.de/magento/turchen-08-magento-projekte-mit-dem-module-manager-clever-strukturieren/
Dateien
‣media
ChangeLog
System-
storage
SVN
GIT
Settings
Performance
Tests
Acceptance
Tests
Unit-Tests
PHPUnit
Installation auf
„Latest“
System
Build
Deployment Pipeline
Cloud
Deployment
Production
Integration
Tests
AOE + Rovio
Cloud
Deployment
Staging
Copy to S3
Deployment Pipeline
Installation auf
Deployment
System
Deployment des
neuen Releases
Space game
launch
Array skaliert
hoch
USA wacht auf
Launch!
Besucher/Tag
(echte) Besucher gleichzeitig!
Danke!
http://www.aoemedia.de
http://www.fabrizio-branca.de
@aoemedia
@fbrnc

High Performance Multi-Server Magento in der Cloud