High Performance Multi-Server Magento in der Cloud

Preview:

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

Recommended