37
High Performance Multi-Server Magento in der Cloud Fabrizio Branca Meet Magento #6.12 in Leipzig

High Performance Multi-Server Magento in der Cloud

  • Upload
    aoe

  • View
    258

  • Download
    4

Embed Size (px)

Citation preview

Page 1: High Performance Multi-Server Magento in der Cloud

High Performance Multi-Server Magento in der Cloud

Fabrizio Branca Meet Magento #6.12 in Leipzig

Page 2: High Performance Multi-Server Magento in der Cloud

San Francisco

Page 3: High Performance Multi-Server Magento in der Cloud

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?

Page 4: High Performance Multi-Server Magento in der Cloud

Angry Birds

Page 5: High Performance Multi-Server Magento in der Cloud

Angry Birds

Page 6: High Performance Multi-Server Magento in der Cloud

Angry Birds

Page 7: High Performance Multi-Server Magento in der Cloud

Angry Birds

Page 8: High Performance Multi-Server Magento in der Cloud

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

Page 9: High Performance Multi-Server Magento in der Cloud

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

Page 10: High Performance Multi-Server Magento in der Cloud

Lösungsbausteine

Page 11: High Performance Multi-Server Magento in der Cloud

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

Page 12: High Performance Multi-Server Magento in der Cloud

Magento in der Cloud

Page 13: High Performance Multi-Server Magento in der Cloud

Share nothing?

Code

Cache Session

Storage

Assets Produktbilder,

CMS-Bilder,

Skalierte Bilder

Daten-

bank

JS/CSS

Bundles

Server

Page 14: High Performance Multi-Server Magento in der Cloud

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

Page 15: High Performance Multi-Server Magento in der Cloud

Sonstige Module

Aoe_Scheduler Aoe_Apilog

Page 16: High Performance Multi-Server Magento in der Cloud

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

Page 17: High Performance Multi-Server Magento in der Cloud

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

Page 18: High Performance Multi-Server Magento in der Cloud

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

Page 19: High Performance Multi-Server Magento in der Cloud

Downtime während eines Deployments:

Page 20: High Performance Multi-Server Magento in der Cloud

Alle Warenkörbe, aktive Logins und Sessions

bleiben beim Deployment / Rollback

erhalten.

Page 21: High Performance Multi-Server Magento in der Cloud

Magento, schnell!

Page 22: High Performance Multi-Server Magento in der Cloud

Magento Frontend Caching

Optimierungsfelder

Page 23: High Performance Multi-Server Magento in der Cloud

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

Page 24: High Performance Multi-Server Magento in der Cloud

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

Page 25: High Performance Multi-Server Magento in der Cloud

95% der Hits sind cachebar!

5% dynamischer Inhalt

Startseite

Kategorien

Produkte

CMS

Warenkorb

Checkout

Kundenkonto

Caching

Page 26: High Performance Multi-Server Magento in der Cloud

Varnish Reverse Proxy

Magento

http://www.fabrizio-branca.de/make-your-magento-store-fly-using-varnish.html

Caching

Page 27: High Performance Multi-Server Magento in der Cloud

Lösungen

Aoe_Static

Caching +

Handling von

dynamischem Content

Magneto_Varnish

Purging

Page 28: High Performance Multi-Server Magento in der Cloud

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

Page 29: High Performance Multi-Server Magento in der Cloud

Continuous Integration und Deployment

Page 30: High Performance Multi-Server Magento in der Cloud

Keine Angst vor Production-Deployments!

Page 31: High Performance Multi-Server Magento in der Cloud

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

Page 32: High Performance Multi-Server Magento in der Cloud

Performance Tests

Acceptance Tests

Unit-Tests

PHPUnit

Installation auf

„Latest“ System

Build

Deployment Pipeline

Page 33: High Performance Multi-Server Magento in der Cloud

Cloud Deployment

Production

Integration Tests

AOE + Rovio

Cloud Deployment

Staging Copy to S3

Deployment Pipeline

Installation auf

Deployment System

Page 34: High Performance Multi-Server Magento in der Cloud

Deployment des neuen Releases

Space game launch

Array skaliert hoch

USA wacht auf

Launch!

Page 35: High Performance Multi-Server Magento in der Cloud

Besucher/Tag

Page 36: High Performance Multi-Server Magento in der Cloud

(echte) Besucher gleichzeitig!

Page 37: High Performance Multi-Server Magento in der Cloud

Danke!

http://www.aoemedia.de

http://www.fabrizio-branca.de @aoemedia @fbrnc