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
Das Angry Birds Magento Universum
                                                                        DRM Server


 3 Storefronts       Custom            Banner        Catalog
  (US, EU, ASIA)    Reporting        Management       Rules

                                                                      Mail Service
 Warehouse                           Custom Tax,
                   Splitshipping   Custom Shipping
                                                       …
 Inventory




                                                                  Giftcards


                       Warehouse /
  Fullfillment          Inventory                     Braintree
                       Management
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



   EC2            S3    RDS   Cloud-   Elasti-   ELB     Route 53
                              Front    Cache


                       Amazon AWS Console

   Management                                      Monitoring
   Deployments            RightScale Services       Logging
   Auto-Scaling                                   Scripting API
Magento in der Cloud
Share nothing?
               JS/CSS                 Code
               Bundles



 Assets
Produktbilder,               Server           Daten-
 CMS-Bilder,
Skalierte Bilder
                                               bank



                   Session            Cache
                   Storage
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          Aoe_JsCssTstamp
 • Cache-Warmup Script als Teil des Deployments
 • Health-Checks für Varnish
 • Automatisches und manuelles Varnish Purging
 • E-Mail Service
                                               Aoe_Static
 • Asset-Handling
Sonstige Module


       Aoe_Scheduler   Aoe_Apilog
shop.angrybirds.com




CloudFront            S3                                                 Route 53                  CloudFront
CDN for Assets   Assets Storage                                          DNS-Service                 CDN for Skin

                                                 ELB
                                            Load Balancer


                                                                                             Monitoring     Logging
                                   EC2    EC2          Varnish Array




     EC2         Backend Array     EC2    EC2       Frontend Array            EC2                   Worker Array




                                                                                                  DRM          Mail
    S3           ElastiCache             RDS
 Deployment        Cache Backend         MySQL                                                  Giftcards Braintree
shop.angrybirds.com


                                                                               Direkter Zugriff mit
                                                                              lokalem Hosteintrag
      Route 53                                                                    zum Testen
      DNS-Service

                                                         ELB
                                                     Load Balancer
X    Deployment X+1
     Release Y                                                                      Cache
                                                                                    warming
                                             EC2   EC2        Varnish Array




             EC2    EC2      Backend Array   EC2   EC2      Frontend Array        EC2                 Worker Array




                    S3                         RDS
                Deployment                     MySQL
Deployment / Rollback
                                         shop.angrybirds.com




                                           Route 53
                                           DNS-Service

   ELB                                                                                        ELB
Load Balancer                                                                              Load Balancer
                        Deployment X                  Deployment X+1
                                                      Release Y
  Varnish Array                                                                              EC2   EC2




 Frontend Array   EC2     Worker Array                         EC2   EC2   Backend Array     EC2   EC2
Downtime während eines Deployments:
Alle Warenkörbe,
aktive Logins und Sessions
       bleiben beim
  Deployment / Rollback
         erhalten.
Magento, schnell!
Optimierungsfelder



     Magento    Frontend   Caching
Frontend-Optimierungen
 JavaScript / CSS
 • Bundling (Magento)
 • Minifying (mit YUI Compressor)
 • Gzip-Komprimierung (Apache)
 • Zeitstempel im Dateiennamen für lange Cachedauer
                                                           Aoe_JsCssTstamp
 Cache-Header senden
 CDN (Cloudfront)
 • Produktbilder (+ skalierte Versionen), CMS-Bilder,...
 • Skin
 • JS/CSS
Magento-Optimierungen
 Logging reduzieren
 Uncachebare Features entfernen


 Caching
                                                       Aoe_AsyncCache
 • Asynchronous Cache Clearing Queue
 • Alte Cache-Einträge löschen                         Aoe_CacheCleaner

 Cookie Storage von Benutzername und Warenkorbinhalt
 Ajax-Warenkorb


 und... Profiling, Profiling, Profiling,…
   (xdebug + kcachegrind, Newrelic, xhprof)
Caching

    95% der Hits
   sind cachebar!

                    5% dynamischer
                        Inhalt
 Startseite
 Kategorien              Warenkorb
 Produkte                 Checkout
   CMS                  Kundenkonto
Caching


                                      Varnish                                  Magento
                                      Reverse Proxy




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


        Aoe_Static         Magneto_Varnish
          Caching +            Purging
         Handling von
     dynamischem Content
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
     Dateien*
     ‣htdocs [Magento Source]                                                      Dateien
     ‣.modman [Custom Packages]                                                    ‣media
                                                                                                     System-
                                                                                                     storage
     SVN
     GIT
                                                                                    Datenbank-
                            Installer                                                 Tabellen


                                                                                   Settings
                           ChangeLog                                               ‣URLs
                                                                                   ‣Datenbank-Parameter
                                                                                   ‣…
                                                                                                           Settings

* http://www.webguys.de/magento/turchen-08-magento-projekte-mit-dem-module-manager-clever-strukturieren/
Deployment Pipeline


          Installation auf
                                          Acceptance   Performance
  Build     „Latest“         Unit-Tests
                                             Tests        Tests
              System

                              PHPUnit
Deployment Pipeline



 Installation auf                  Cloud      Integration     Cloud
 Deployment         Copy to S3   Deployment      Tests      Deployment
     System                       Staging     AOE + Rovio   Production
Launch!

                                      USA wacht auf
                     Space game
                     launch
                     Array skaliert
                     hoch
    Deployment des
    neuen Releases
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

  • 1.
    High Performance Multi-Server Magento inder Cloud Fabrizio Branca Meet Magento #6.12 in Leipzig
  • 2.
  • 3.
    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?
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
    Das Angry BirdsMagento Universum DRM Server 3 Storefronts Custom Banner Catalog (US, EU, ASIA) Reporting Management Rules Mail Service Warehouse Custom Tax, Splitshipping Custom Shipping … Inventory Giftcards Warehouse / Fullfillment Inventory Braintree Management
  • 9.
    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
  • 10.
  • 11.
    Cloud Services EC2 S3 RDS Cloud- Elasti- ELB Route 53 Front Cache Amazon AWS Console Management Monitoring Deployments RightScale Services Logging Auto-Scaling Scripting API
  • 12.
  • 13.
    Share nothing? JS/CSS Code Bundles Assets Produktbilder, Server Daten- CMS-Bilder, Skalierte Bilder bank Session Cache Storage
  • 14.
    Magento Anpassungen fürdie Cloud • MinifyJavaScript + CSS während des Builds • JavaScript + CSS mit Zeitstempel versehen und auf allen Servern verfügbar machen • Deployment Name im Cache Prefix Aoe_JsCssTstamp • Cache-Warmup Script als Teil des Deployments • Health-Checks für Varnish • Automatisches und manuelles Varnish Purging • E-Mail Service Aoe_Static • Asset-Handling
  • 15.
    Sonstige Module Aoe_Scheduler Aoe_Apilog
  • 16.
    shop.angrybirds.com CloudFront S3 Route 53 CloudFront CDN for Assets Assets Storage DNS-Service CDN for Skin ELB Load Balancer Monitoring Logging EC2 EC2 Varnish Array EC2 Backend Array EC2 EC2 Frontend Array EC2 Worker Array DRM Mail S3 ElastiCache RDS Deployment Cache Backend MySQL Giftcards Braintree
  • 17.
    shop.angrybirds.com Direkter Zugriff mit lokalem Hosteintrag Route 53 zum Testen DNS-Service ELB Load Balancer X Deployment X+1 Release Y Cache warming EC2 EC2 Varnish Array EC2 EC2 Backend Array EC2 EC2 Frontend Array EC2 Worker Array S3 RDS Deployment MySQL
  • 18.
    Deployment / Rollback shop.angrybirds.com Route 53 DNS-Service ELB ELB Load Balancer Load Balancer Deployment X Deployment X+1 Release Y Varnish Array EC2 EC2 Frontend Array EC2 Worker Array EC2 EC2 Backend Array EC2 EC2
  • 19.
  • 20.
    Alle Warenkörbe, aktive Loginsund Sessions bleiben beim Deployment / Rollback erhalten.
  • 21.
  • 22.
    Optimierungsfelder Magento Frontend Caching
  • 23.
    Frontend-Optimierungen JavaScript /CSS • Bundling (Magento) • Minifying (mit YUI Compressor) • Gzip-Komprimierung (Apache) • Zeitstempel im Dateiennamen für lange Cachedauer Aoe_JsCssTstamp Cache-Header senden CDN (Cloudfront) • Produktbilder (+ skalierte Versionen), CMS-Bilder,... • Skin • JS/CSS
  • 24.
    Magento-Optimierungen Logging reduzieren Uncachebare Features entfernen Caching Aoe_AsyncCache • Asynchronous Cache Clearing Queue • Alte Cache-Einträge löschen Aoe_CacheCleaner Cookie Storage von Benutzername und Warenkorbinhalt Ajax-Warenkorb und... Profiling, Profiling, Profiling,… (xdebug + kcachegrind, Newrelic, xhprof)
  • 25.
    Caching 95% der Hits sind cachebar! 5% dynamischer Inhalt Startseite Kategorien Warenkorb Produkte Checkout CMS Kundenkonto
  • 26.
    Caching Varnish Magento Reverse Proxy http://www.fabrizio-branca.de/make-your-magento-store-fly-using-varnish.html
  • 27.
    Lösungen Aoe_Static Magneto_Varnish Caching + Purging Handling von dynamischem Content
  • 28.
    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
  • 29.
  • 30.
  • 31.
    Magento Installationspaket Dateien* ‣htdocs [Magento Source] Dateien ‣.modman [Custom Packages] ‣media System- storage SVN GIT Datenbank- Installer Tabellen Settings ChangeLog ‣URLs ‣Datenbank-Parameter ‣… Settings * http://www.webguys.de/magento/turchen-08-magento-projekte-mit-dem-module-manager-clever-strukturieren/
  • 32.
    Deployment Pipeline Installation auf Acceptance Performance Build „Latest“ Unit-Tests Tests Tests System PHPUnit
  • 33.
    Deployment Pipeline Installationauf Cloud Integration Cloud Deployment Copy to S3 Deployment Tests Deployment System Staging AOE + Rovio Production
  • 34.
    Launch! USA wacht auf Space game launch Array skaliert hoch Deployment des neuen Releases
  • 35.
  • 36.
  • 37.
    Danke! http://www.aoemedia.de http://www.fabrizio-branca.de @aoemedia @fbrnc