Upload
aoe
View
258
Download
4
Embed Size (px)
Citation preview
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
S3 EC2 RDS ELB Route 53
Management
Deployments
Auto-Scaling
Monitoring
Logging
Scripting API
Magento in der Cloud
Share nothing?
Code
Cache Session
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 Array EC2
Frontend Array
CloudFront CDN for Skin
RDS MySQL
S3 Deployment
ElastiCache Cache Backend
ELB Load Balancer
CloudFront CDN for Assets
Monitoring
Backend Array EC2 EC2
EC2
Worker Array EC2
Braintree
Mail DRM
Giftcards
Logging
EC2
Route 53 DNS-Service
shop.angrybirds.com
Deployment X+1 Release Y
S3 Deployment
Route 53 DNS-Service
shop.angrybirds.com
Deployment X
Varnish Array EC2
Frontend Array Backend Array EC2 Worker Array EC2
ELB Load Balancer
EC2
EC2 EC2 EC2
Cache
warming
Direkter Zugriff mit
lokalem Hosteintrag
zum Testen
RDS MySQL
Deployment X+1 Release Y
Varnish Array
Frontend Array
ELB Load Balancer
Worker Array EC2
Deployment X
EC2
Frontend ArrayBackend Array EC2
ELB Load Balancer
EC2
EC2 EC2 EC2
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