Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird

1,587 views
1,454 views

Published on

Continuous Delivery und Autoscaling von Enterprise Web-Applicationen in der Amazon Cloud

In diesem Vortrag zeigen wir am Beispiel des neuen Angrybird-Onlineshops, der zu Spitzenzeiten bis zu 10 Bestellungen pro Sekunde aufnehmen kann und dabei hochverfügbar ist, wie eine automatisch skalierende Cloud Infrastruktur sowie die nötigen Konzepte aussehen können.
Wir beschreiben die Herausforderungen und unsere Lösungen, um den Shop für ein Multi-Server-Setup vorzubereiten und zu betreiben. Spezielle Anforderungen an eine solche Architektur sowie die Integration von Reverse Proxies (Varnish), die Nutzung eines CDNs, verschiedene Cache-Strategien und weitere Optimierung sind ebenfalls Bestandteil dieses Vortrags. Außerdem stellen wir unsere automatisierte Cloud-Deployment-Strategien vor, angefangen von den Entwicklungsumgebungen, über den continuous Integration Server und unser Testing Framework bis hin zum A/B-Deployment in der Cloud.

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,587
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
16
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird

  1. 1. Developer Conference Hamburg 2012:Cloud Deployment und(Auto)Scalingam Beispiel vonAngrybird Presented by Daniel Pötzinger
  2. 2. CIOAOE media „Agilist“ Open Source Devel oper
  3. 3. 100 6 PEOPLE COUNTRIES 13 YEARS 2700% GROWTHCLIENTS Open Source COMMUNITY
  4. 4. 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?
  5. 5. Performance Bausteine Applikations Cluster & Cloud HTTP & Co Architektur Infrastructure HTTP Protocol Cache Strategy Provisionierung Proxy Caches Algorithmen Autoscaling Site Optimisation Services geteilte ResourcenBesser werden und Bottlenecks finden... User Monitoring & Profiling Monitoring Performance Analytics (xdebug, newrelic) (munin, collectd) TestsStabil und schnell ausliefern mit.... Continuous Delivery
  6. 6. Irregular Traffic Behaviour
  7. 7. Das Angry Birds Magento Universum DRM Server Storefronts Reporting Products + Ordermgmt Mail Service Warehouse Giftcards Manage Warehouse Fullfillment Braintree
  8. 8. 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
  9. 9. Why Amazon Cloud ?
  10. 10. ✓ Scales quickly on demand✓ Pay only what you need
  11. 11. Powerfull AWS Services EC2 S3 RDS Cloud Elastic ELB R53 Front Cache Amazon Webservices & Amazon Console Rightscale Services
  12. 12. 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
  13. 13. Cloud Architecture
  14. 14. 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
  15. 15. Um zu Skalieren muss man den Flaschenhals finden und eliminieren
  16. 16. 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...
  17. 17. HTTP Caching CDN Browser (Magento) Frontend Traffic Traffic Purging Varnish (Reverse Proxy) Traffic Offload expensive requests
  18. 18. 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)
  19. 19. 10.000+ MÖGLICHE Seiten / Sekunde aus ELB + Varnish
  20. 20. Application Tuning istgaaanz Individuell!
  21. 21. Application Tuning braucht Profiling 1. Isoliertes Profiling •XDebug + kcachegrind •XHProf 2. Profiling unter Last •jMeter •IS Monitoring •XDebug... 3.Profiling unter Echtlast • Newrelic
  22. 22. 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
  23. 23. 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
  24. 24. 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...
  25. 25. 10.000MÖGLICHE Bestellungen pro Stunde
  26. 26. 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“
  27. 27. (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
  28. 28. ContinuousDeployment
  29. 29. Don‘t be scared ofreleasing toproduction
  30. 30. late night bugfixing?
  31. 31. So muss ein Deploymentaussehen
  32. 32. 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?
  33. 33. Definition Continuous Deployment We want on-demand deployment of tested features and fixes in a quick and reliable way
  34. 34. Wir erreichen das durchAlles zu automatisieren Build Testing Deployment
  35. 35. flic kr tim dep es loy ad s3 ay....und .das alles häufig ausführen
  36. 36. The DeploymentPipeline
  37. 37. 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
  38. 38. 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 / ...
  39. 39. Angry Birds Deployment Pipeline Install on Cloud Integration Cloud Deployment Copy to S3 Deployment Tests deployment System Staging AOE + Rovio production
  40. 40. Cloud Deployment R53Deployment „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
  41. 41. 0Sekunden Downtime
  42. 42. Don‘t be scared of Es geht nicht nur um den Quellcode!releasing toproduction
  43. 43. Configuration DataEnvironment Deployment Source Code
  44. 44. DevOps?„the cultural aspect of concentrating on business results rather thantechnical details. Devops incorporates a lot of lean principles, focusing onimproving 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]
  45. 45. 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
  46. 46. The real life
  47. 47. Day 1 - Release 1
  48. 48. Day 2 - Release 2 - „get ready for Space“
  49. 49. Day 3 - „People want it so badly“ USA wakes up Space game launched Array scales up New release deployed
  50. 50. Day 4 - Release 3 „Performance Improvement“40% averageCPU usage.1-2 FE Serversare enough
  51. 51. 5000(echte) Besucher gleichzeitig
  52. 52. Danke fürs zuhören!Fragen? Follow us on Twitter: AOE: @aoemedia Daniel P: @danpoetz

×