Developer Conference Hamburg 2012:


Cloud Deployment und
(Auto)Scaling
am Beispiel von
Angrybird

                                     Presented by
                                     Daniel Pötzinger
CIO
AOE media


        „Agilist“



               Open Source



                             Devel oper
100              6
     PEOPLE
                 COUNTRIES


                              13
                              YEARS



                          2700%
                          GROWTH

CLIENTS        Open
              Source
              COMMUNITY
Und Sie?
 • Wer betreibt einen Magento Shop?
 • Wer hat Erfahrung mit cloud hosting/ AWS?
 • Wer betreibt eine Seite mit mehr als 100
 Seitenaufrufen / Sekunde?
 •mehr als 1000 Seiten/Sekunde?
Performance Bausteine
                                            Applikations                  Cluster & Cloud
      HTTP & Co
                                            Architektur                    Infrastructure

        HTTP Protocol                        Cache Strategy                 Provisionierung

        Proxy Caches                          Algorithmen                    Autoscaling

        Site Optimisation                        Services                   geteilte Resourcen


Besser werden und Bottlenecks finden...
   User Monitoring &            Profiling              Monitoring           Performance
       Analytics            (xdebug, newrelic)        (munin, collectd)        Tests

Stabil und schnell ausliefern mit....
                                 Continuous Delivery
Irregular Traffic Behaviour
Das Angry Birds Magento Universum
                                                      DRM Server

          Storefronts   Reporting

         Products +
                        Ordermgmt                 Mail Service
         Warehouse




                                             Giftcards




     Manage Warehouse   Fullfillment   Braintree
Das Angry Birds Magento Universum
                        Sh ipw ire
                                          eltw eite                   DRM Server

                         Reporting lt
                           rwa       et w
          Storefronts
                        Ve
                                      äus er +
         Products +      War   enh
                        Ordermgmt
         Warehouse                                                Mail Service

                          Bes   tand
                                            sb este
                                 des   t da
                           Fin                               Giftcards
                                         out ing“
                            „Pa    ketr
     Manage Warehouse    Fullfillment                  Braintree
Why Amazon Cloud ?
✓ Scales quickly on demand
✓ Pay only what you need
Powerfull AWS Services


  EC2    S3         RDS      Cloud     Elastic   ELB   R53
                             Front     Cache



              Amazon Webservices & Amazon Console




                       Rightscale Services
Powerfull AWS Servicesq
                   e Re              u irem ents
                   chite ctur                        r and
                 Ar                       le Failove
                             bar (M  ultip
               H ochv  erfüg
                      balan cing)               eiten
               Load                acken   darb
  EC2    S3        RDS d
                     nten   und B Cloud          Elastic ELB
                F ro
                 trenn  en         Frontgrund     asks
                                                 tCache
                             von H  inter
                  Man  agen

                                            nittstellen
                                ig vo n Sch
                      nab häng
            Amazon UWebservices & Amazon Console
                                       & Sca lable
                           Fast  Fast
                     Fast

                              Down time
                      keine
                       Rightscale Services
Cloud Architecture
Cloud Front                  S3                                        R53          Cloud Front
  CDN for Assets         Assets Storage                                 DNS           CDN for Skin
                                                    ELB
„Deployment Definition“
+ Autoscaling                                                                  API        Monitoring
                                            EC2   EC2
                                                        Varnish Array



  EC2     EC2   EC2                         EC2   EC2
                      Frontend Array                    Backend Array         EC2        Worker Array




        Elastic Cache              S3
         Cache Backend         Deployment
                                                           RDS
                                                            RDS
Um zu Skalieren muss man den
  Flaschenhals finden und
         eliminieren
typische Flaschenhälse
                                 Offloading, Optimisation,
                     CPU         Caching, add more CPU (scale)...


                                 Offloading, Optimisation,
      Traffic     Storage (DB)   Scale Storage UP (H/V),
                                 Replace Storage...


                                 Offloading (CDN, Proxy)
                  Bandbreite     Optimize Size of the Site
                                 Scale Network IS...
HTTP Caching

                                     CDN



            Browser




                                                              (Magento)
                                                               Frontend
  Traffic             Traffic
                                                    Purging

                                   Varnish
                                (Reverse Proxy)    Traffic




                      Offload expensive requests
HTTP Caching
 1. Seiten cachebar machen
     • HTTP Cache Header verstehen und Browser Cache nutzen
     •Reverse Proxy Cache nutzen
 2. Dynamic zum Client verschieben
 3. Ajax oder ESI für dynamische / personalisierte Teile
 verwenden
 4. JS und CSS packen und minifizieren + Timestamp
 5. CDN für statische Assets verwenden
 6.Website performance Optimierungen (YSlow und Co)
10.000+
 MÖGLICHE Seiten / Sekunde aus ELB + Varnish
Application Tuning ist
gaaanz Individuell!
Application Tuning braucht Profiling
 1. Isoliertes Profiling
    •XDebug + kcachegrind
    •XHProf
 2. Profiling unter Last
    •jMeter
    •IS Monitoring
    •XDebug...
 3.Profiling unter Echtlast
    • Newrelic
Application Tuning - Beispiele
 • Loglevel reduzieren und Logging deaktivieren
 • Viele Datenbank Abfragen optimiert
 • Cleanup Cronjobs (Order, Logs, Sessions, Baskets...)
 • Session Storage durch Memcache ersetzen
 • Datenbank Locks und Deadlocks vermeiden:
  • Read Slaves für Reportgenerierung
  • Queueing: Syncrone zu Asyncronen Prozessen machen
  • Replace Search by SOLR / Searchperience
 •Richtiger Umgang mit Caches
wichtige Cachingregeln
 1. Ziel ist eine hohe Hitrate
 2. Caches dürfen nicht geflutet werden
 3. Cache Backend müssen „weise“ ausgewählt werden
 4. Aufpassen den Cache nicht auf einmal zu verlieren.
 5. Cachen ist einfach. Aber wichtig ist die caches gut
 aufzuräumen
 6. Einzelne Cacheeinträge mussen „on-demand“
 aktualisiert oder gelöscht werden
Andere Tipps
 1. System und Versionsabhängigen Cacheprefix einführen
 2. Cache Warmup Script haben und im Deployment nutzen
 3. E-Mail Service für das (Massen) versenden von Mails
 verwenden
 4. „Design for the Cloud“
     • Immer im Kopf haben das man einen Cluster hat
     • Sinnvolles Handling von gemeinsamen Resourcen
     (Assets, Cachebackend)
     • Plan for Failover...
10.000
MÖGLICHE Bestellungen pro Stunde
Autoscaling
                                      •Gruppen mit Policys




                     Frontend Array
                                        • min, max
                                        • Votingrules for scale up/
                                        down

     Traffic
                                        •fehlerhafte Instanzen
                                        ersetzen

               EC2


                     EC2
                                      • Provisionierungszeit und
               EC2


                     EC2
               EC2
                                      Policies abstimmen

                     EC2
                                      • „Calm time“
(AWS) Lessons learned
 1. 404s können sehr teuer sein
    • Lasttest mit accesslog
    •Cachen oder Weiterleiten
 2. Cloudfront mit S3 backend
 kann kein GZIP
 3.Festes ELB timeout von 60sec :-(
 4.Man kann nicht alles vorhersehen!
    => Aber man kann vorbereitet sein Probleme schnell zu fixen
    => continuous    deployment
Continuous
Deployment
Don‘t be scared of
releasing to
production
late night bugfixing?
So muss ein Deployment
aussehen
Und Sie?
 • Wer macht Continuous Integration?
 • Wer Scrum, Kanban oder XP?
 • Wer automatisiert Akzeptanztest?
   • Bei wem sind diese grün?
 • Wer macht Continuous Deployment?
 • Continuos Delivery?
 • DevOps?
Definition Continuous Deployment


 We want on-demand deployment
 of tested features and fixes
 in a quick and reliable way
Wir erreichen das durch

Alles zu automatisieren
   Build
           Testing
                     Deployment
flic
                  kr
            tim        dep
               es            loy
                       ad      s3
                          ay..
..und                         .



das alles häufig
  ausführen
The Deployment
Pipeline
Angry Birds Deployment Pipeline
               Backup
    SVN
               Storage



   Commit                        Install on      Selenium        Performance
              Unit Tests
  and Build                       „latest“    Acceptance Tests      Tests




                 Build Downstream and Test Strategy


                           Feedback to Developers
Magento Installation Package
                             ‣ htdocs [Magento Source]
                             ‣ media maintenance mode
        ‣ Filesystem               1.set
                             ‣ .modman [Custom Packages]
                                   2.Delta Package prepare
        ‣ Database           ‣ changelog.txt
                                   3.apply Database
        ‣ Install Binaries         4.sync files
                                   5.run modman deploy-all
        ‣ settings.php             6.adjust Settings
                                   7.Post install:
                                     fix p. / cache clean / ...
Angry Birds Deployment Pipeline




  Install on                   Cloud     Integration     Cloud
 Deployment    Copy to S3   Deployment      Tests      deployment
   System                     Staging    AOE + Rovio   production
Cloud Deployment
                                           R53
Deployment „Version 88“                    DNS      Deployment „Version 89“


               Varnish Array                        Start new Varnish Array by
                                                               release
  ELB              V   V   V                          ELB          V V V
                                                    ✓ cloning old deployment
                                                    ✓ adjusting release number
    Autoscaling        Backend    Worker               Autoscaling    Backend    Worker
  Frontend Array        Array      Array             Frontend Array    Array      Array
    FE FE FE           BE BE BE    W                   FE FE FE       BE BE BE     W



                                            RDS
                                            mySQL
                                                                          S3
0
Sekunden Downtime
Don‘t be scared of
     Es geht nicht nur um den Quellcode!
releasing to
production
Configuration
                             Data




Environment


                Deployment    Source Code
DevOps?
„the cultural aspect of concentrating on business results rather than
technical details. Devops incorporates a lot of lean principles, focusing on
improving the collaboration between developers and operations folks.“
                                            http://www.agileweboperations.com/lean-agile-devops-related




                        „Cloud Sprint“
                     [ Dev + Ops and the Cloud ]



                  Infrastructure as a Code
                      [Provisioning with Chef]
Beispiel: Provisionierung einer Varnish Instanz
 1. EC2 Instanz von „nackter“ AIM starten
 2.Infrastruktur Installieren:
     1. RS Logging und Monitoring (syslog-ng, collectd)
     2.Tags bekommen
     3.Varnish installieren
     4. Monitoring (Collectd) Installieren
 3. Infrastruktur konfigurieren:
     1. aktuelle Varnish Konfiguration aus Deployment einrichten
     2. Cronjob für die Aktualisierung der Backends und ACLs installieren
     (Script fragt regelmäßig die Right-Scale API nach aktiven EC2 Instancen im aktuellem Deployment mit dem
     richtigem Tag )

     3. Instanz beim richtigem ELB registrieren
The real life
Day 1 - Release 1
Day 2 - Release 2 - „get ready for Space“
Day 3 - „People want it so badly“

                                      USA wakes up
                    Space game
                    launched
                    Array scales up
      New release
      deployed
Day 4 - Release 3 „Performance Improvement“

40% average
CPU usage.

1-2 FE Servers
are enough
5000
(echte) Besucher gleichzeitig
Danke fürs zuhören!

Fragen?

           Follow us on Twitter:

           AOE:      @aoemedia
           Daniel P: @danpoetz

Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird

  • 1.
    Developer Conference Hamburg2012: Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird Presented by Daniel Pötzinger
  • 3.
    CIO AOE media „Agilist“ Open Source Devel oper
  • 4.
    100 6 PEOPLE COUNTRIES 13 YEARS 2700% GROWTH CLIENTS Open Source COMMUNITY
  • 5.
    Und Sie? •Wer betreibt einen Magento Shop? • Wer hat Erfahrung mit cloud hosting/ AWS? • Wer betreibt eine Seite mit mehr als 100 Seitenaufrufen / Sekunde? •mehr als 1000 Seiten/Sekunde?
  • 6.
    Performance Bausteine Applikations Cluster & Cloud HTTP & Co Architektur Infrastructure HTTP Protocol Cache Strategy Provisionierung Proxy Caches Algorithmen Autoscaling Site Optimisation Services geteilte Resourcen Besser werden und Bottlenecks finden... User Monitoring & Profiling Monitoring Performance Analytics (xdebug, newrelic) (munin, collectd) Tests Stabil und schnell ausliefern mit.... Continuous Delivery
  • 8.
  • 9.
    Das Angry BirdsMagento Universum DRM Server Storefronts Reporting Products + Ordermgmt Mail Service Warehouse Giftcards Manage Warehouse Fullfillment Braintree
  • 10.
    Das Angry BirdsMagento Universum Sh ipw ire eltw eite DRM Server Reporting lt rwa et w Storefronts Ve äus er + Products + War enh Ordermgmt Warehouse Mail Service Bes tand sb este des t da Fin Giftcards out ing“ „Pa ketr Manage Warehouse Fullfillment Braintree
  • 11.
  • 12.
    ✓ Scales quicklyon demand ✓ Pay only what you need
  • 13.
    Powerfull AWS Services EC2 S3 RDS Cloud Elastic ELB R53 Front Cache Amazon Webservices & Amazon Console Rightscale Services
  • 14.
    Powerfull AWS Servicesq e Re u irem ents chite ctur r and Ar le Failove bar (M ultip H ochv erfüg balan cing) eiten Load acken darb EC2 S3 RDS d nten und B Cloud Elastic ELB F ro trenn en Frontgrund asks tCache von H inter Man agen nittstellen ig vo n Sch nab häng Amazon UWebservices & Amazon Console & Sca lable Fast Fast Fast Down time keine Rightscale Services
  • 16.
  • 17.
    Cloud Front S3 R53 Cloud Front CDN for Assets Assets Storage DNS CDN for Skin ELB „Deployment Definition“ + Autoscaling API Monitoring EC2 EC2 Varnish Array EC2 EC2 EC2 EC2 EC2 Frontend Array Backend Array EC2 Worker Array Elastic Cache S3 Cache Backend Deployment RDS RDS
  • 18.
    Um zu Skalierenmuss man den Flaschenhals finden und eliminieren
  • 19.
    typische Flaschenhälse Offloading, Optimisation, CPU Caching, add more CPU (scale)... Offloading, Optimisation, Traffic Storage (DB) Scale Storage UP (H/V), Replace Storage... Offloading (CDN, Proxy) Bandbreite Optimize Size of the Site Scale Network IS...
  • 20.
    HTTP Caching CDN Browser (Magento) Frontend Traffic Traffic Purging Varnish (Reverse Proxy) Traffic Offload expensive requests
  • 21.
    HTTP Caching 1.Seiten cachebar machen • HTTP Cache Header verstehen und Browser Cache nutzen •Reverse Proxy Cache nutzen 2. Dynamic zum Client verschieben 3. Ajax oder ESI für dynamische / personalisierte Teile verwenden 4. JS und CSS packen und minifizieren + Timestamp 5. CDN für statische Assets verwenden 6.Website performance Optimierungen (YSlow und Co)
  • 22.
    10.000+ MÖGLICHE Seiten/ Sekunde aus ELB + Varnish
  • 23.
  • 24.
    Application Tuning brauchtProfiling 1. Isoliertes Profiling •XDebug + kcachegrind •XHProf 2. Profiling unter Last •jMeter •IS Monitoring •XDebug... 3.Profiling unter Echtlast • Newrelic
  • 25.
    Application Tuning -Beispiele • Loglevel reduzieren und Logging deaktivieren • Viele Datenbank Abfragen optimiert • Cleanup Cronjobs (Order, Logs, Sessions, Baskets...) • Session Storage durch Memcache ersetzen • Datenbank Locks und Deadlocks vermeiden: • Read Slaves für Reportgenerierung • Queueing: Syncrone zu Asyncronen Prozessen machen • Replace Search by SOLR / Searchperience •Richtiger Umgang mit Caches
  • 26.
    wichtige Cachingregeln 1.Ziel ist eine hohe Hitrate 2. Caches dürfen nicht geflutet werden 3. Cache Backend müssen „weise“ ausgewählt werden 4. Aufpassen den Cache nicht auf einmal zu verlieren. 5. Cachen ist einfach. Aber wichtig ist die caches gut aufzuräumen 6. Einzelne Cacheeinträge mussen „on-demand“ aktualisiert oder gelöscht werden
  • 27.
    Andere Tipps 1.System und Versionsabhängigen Cacheprefix einführen 2. Cache Warmup Script haben und im Deployment nutzen 3. E-Mail Service für das (Massen) versenden von Mails verwenden 4. „Design for the Cloud“ • Immer im Kopf haben das man einen Cluster hat • Sinnvolles Handling von gemeinsamen Resourcen (Assets, Cachebackend) • Plan for Failover...
  • 28.
  • 29.
    Autoscaling •Gruppen mit Policys Frontend Array • min, max • Votingrules for scale up/ down Traffic •fehlerhafte Instanzen ersetzen EC2 EC2 • Provisionierungszeit und EC2 EC2 EC2 Policies abstimmen EC2 • „Calm time“
  • 30.
    (AWS) Lessons learned 1. 404s können sehr teuer sein • Lasttest mit accesslog •Cachen oder Weiterleiten 2. Cloudfront mit S3 backend kann kein GZIP 3.Festes ELB timeout von 60sec :-( 4.Man kann nicht alles vorhersehen! => Aber man kann vorbereitet sein Probleme schnell zu fixen => continuous deployment
  • 32.
  • 34.
    Don‘t be scaredof releasing to production
  • 35.
  • 36.
    So muss einDeployment aussehen
  • 37.
    Und Sie? •Wer macht Continuous Integration? • Wer Scrum, Kanban oder XP? • Wer automatisiert Akzeptanztest? • Bei wem sind diese grün? • Wer macht Continuous Deployment? • Continuos Delivery? • DevOps?
  • 38.
    Definition Continuous Deployment We want on-demand deployment of tested features and fixes in a quick and reliable way
  • 39.
    Wir erreichen dasdurch Alles zu automatisieren Build Testing Deployment
  • 40.
    flic kr tim dep es loy ad s3 ay.. ..und . das alles häufig ausführen
  • 42.
  • 44.
    Angry Birds DeploymentPipeline Backup SVN Storage Commit Install on Selenium Performance Unit Tests and Build „latest“ Acceptance Tests Tests Build Downstream and Test Strategy Feedback to Developers
  • 45.
    Magento Installation Package ‣ htdocs [Magento Source] ‣ media maintenance mode ‣ Filesystem 1.set ‣ .modman [Custom Packages] 2.Delta Package prepare ‣ Database ‣ changelog.txt 3.apply Database ‣ Install Binaries 4.sync files 5.run modman deploy-all ‣ settings.php 6.adjust Settings 7.Post install: fix p. / cache clean / ...
  • 46.
    Angry Birds DeploymentPipeline Install on Cloud Integration Cloud Deployment Copy to S3 Deployment Tests deployment System Staging AOE + Rovio production
  • 47.
    Cloud Deployment R53 Deployment „Version 88“ DNS Deployment „Version 89“ Varnish Array Start new Varnish Array by release ELB V V V ELB V V V ✓ cloning old deployment ✓ adjusting release number Autoscaling Backend Worker Autoscaling Backend Worker Frontend Array Array Array Frontend Array Array Array FE FE FE BE BE BE W FE FE FE BE BE BE W RDS mySQL S3
  • 48.
  • 49.
    Don‘t be scaredof Es geht nicht nur um den Quellcode! releasing to production
  • 50.
    Configuration Data Environment Deployment Source Code
  • 52.
    DevOps? „the cultural aspectof concentrating on business results rather than technical details. Devops incorporates a lot of lean principles, focusing on improving the collaboration between developers and operations folks.“ http://www.agileweboperations.com/lean-agile-devops-related „Cloud Sprint“ [ Dev + Ops and the Cloud ] Infrastructure as a Code [Provisioning with Chef]
  • 53.
    Beispiel: Provisionierung einerVarnish Instanz 1. EC2 Instanz von „nackter“ AIM starten 2.Infrastruktur Installieren: 1. RS Logging und Monitoring (syslog-ng, collectd) 2.Tags bekommen 3.Varnish installieren 4. Monitoring (Collectd) Installieren 3. Infrastruktur konfigurieren: 1. aktuelle Varnish Konfiguration aus Deployment einrichten 2. Cronjob für die Aktualisierung der Backends und ACLs installieren (Script fragt regelmäßig die Right-Scale API nach aktiven EC2 Instancen im aktuellem Deployment mit dem richtigem Tag ) 3. Instanz beim richtigem ELB registrieren
  • 55.
  • 57.
    Day 1 -Release 1
  • 58.
    Day 2 -Release 2 - „get ready for Space“
  • 59.
    Day 3 -„People want it so badly“ USA wakes up Space game launched Array scales up New release deployed
  • 60.
    Day 4 -Release 3 „Performance Improvement“ 40% average CPU usage. 1-2 FE Servers are enough
  • 61.
  • 63.
    Danke fürs zuhören! Fragen? Follow us on Twitter: AOE: @aoemedia Daniel P: @danpoetz