Cloud Deployment und(Auto)Scalingam Beispiel vonAngrybirdPresented byDaniel PötzingerDeveloper Conference Hamburg 2012:
CIOAOE media„Agilist“Open SourceDeveloper
100PEOPLE6COUNTRIES13YEARS2700%GROWTHOpenSourceCOMMUNITYCLIENTS
Und Sie?• Wer betreibt einen Magento Shop?• Wer hat Erfahrung mit cloud hosting/ AWS?• Wer betreibt eine Seite mit mehr al...
Monitoring(munin, collectd)Cluster & CloudInfrastructureProvisionierungAutoscalinggeteilte ResourcenApplikationsArchitektu...
Irregular Traffic Behaviour
DRM ServerMail ServiceProducts +WarehouseReportingOrdermgmtManage Warehouse FullfillmentGiftcardsBraintreeDas Angry Birds M...
DRM ServerMail ServiceProducts +WarehouseReportingOrdermgmtManage Warehouse FullfillmentGiftcardsBraintreeDas Angry Birds M...
Why Amazon Cloud ?
✓Scales quickly on demand✓Pay only what you need
Powerfull AWS ServicesRightscale ServicesAmazon Webservices & Amazon ConsoleCloudFrontElasticCacheS3EC2 RDS ELB R53
Powerfull AWS ServicesRightscale ServicesAmazon Webservices & Amazon ConsoleCloudFrontElasticCacheS3EC2 RDS ELBArchitectur...
Cloud Architecture
RDS„Deployment Definition“+ AutoscalingVarnish ArrayFrontend Array Backend Array Worker ArrayCloud FrontCDN for SkinELBR53...
Um zu Skalieren muss man denFlaschenhals finden undeliminieren
CPUBandbreiteStorage (DB)Traffictypische FlaschenhälseOffloading, Optimisation,Caching, add more CPU (scale)...Offloading, O...
HTTP CachingFrontend(Magento)Varnish(Reverse Proxy) TrafficOffload expensive requestsTrafficCDNBrowserTrafficPurging
HTTP Caching1. Seiten cachebar machen• HTTP Cache Header verstehen und Browser Cache nutzen•Reverse Proxy Cache nutzen2. D...
10.000+MÖGLICHE Seiten / Sekunde aus ELB +Varnish
Application Tuning istgaaanz Individuell!
Application Tuning braucht Profiling1. Isoliertes Profiling•XDebug + kcachegrind•XHProf2. Profiling unter Last•jMeter•IS M...
Application Tuning - Beispiele• Loglevel reduzieren und Logging deaktivieren• Viele Datenbank Abfragen optimiert• Cleanup ...
wichtige Cachingregeln1. Ziel ist eine hohe Hitrate2. Caches dürfen nicht geflutet werden3. Cache Backend müssen „weise“ a...
Andere Tipps1. System und Versionsabhängigen Cacheprefix einführen2. Cache Warmup Script haben und im Deployment nutzen3. ...
10.000MÖGLICHE Bestellungen pro Stunde
Autoscaling•Gruppen mit Policys• min, max• Votingrules for scale up/down•fehlerhafte Instanzenersetzen• Provisionierungsze...
(AWS) Lessons learned1. 404s können sehr teuer sein• Lasttest mit accesslog•Cachen oder Weiterleiten2. Cloudfront mit S3 b...
ContinuousDeployment
Don‘t be scared ofreleasing toproduction
late night bugfixing?
So muss ein Deploymentaussehen
Und Sie?• Wer macht Continuous Integration?• Wer Scrum, Kanban oder XP?• Wer automatisiert Akzeptanztest?• Bei wem sind di...
Definition Continuous DeploymentWe want on-demand deploymentof tested features and fixesin a quick and reliable way
Alles zu automatisierenWir erreichen das durchBuildTestingDeployment
das alles häufigausführen..undflickr deploys 3times a day...
The DeploymentPipeline
SeleniumAcceptance TestsCommitand BuildBuild Downstream and Test StrategySVNBackupStorageUnit TestsInstall on„latest“Perfo...
‣ Filesystem‣ Database‣ Install Binaries‣ settings.phpMagento Installation Package‣ htdocs [Magento Source]‣ media‣ .modma...
Angry Birds Deployment PipelineInstall onDeploymentSystemCopy to S3CloudDeploymentStagingIntegrationTestsAOE + RovioCloudd...
Deployment „Version 89“Varnish ArrayAutoscalingFrontend ArrayBackendArrayWorkerArrayCloud DeploymentELBDeployment „Version...
0Sekunden Downtime
Don‘t be scared ofreleasing toproductionEs geht nicht nur um den Quellcode!
EnvironmentConfigurationSource CodeDataDeployment
DevOps?„the cultural aspect of concentrating on business results rather thantechnical details. Devops incorporates a lot o...
Beispiel: Provisionierung einer Varnish Instanz1. EC2 Instanz von „nackter“ AIM starten2.Infrastruktur Installieren:1. RS ...
The real life
Day 1 - Release 1
Day 2 - Release 2 - „get ready for Space“
New releasedeployedSpace gamelaunchedArray scales upUSA wakes upDay 3 - „People want it so badly“
40% averageCPU usage.1-2 FE Serversare enoughDay 4 - Release 3 „Performance Improvement“
5000(echte) Besucher gleichzeitig
Danke fürs zuhören!Fragen?Follow us on Twitter:AOE: @aoemediaDaniel P: @danpoetz
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Nächste SlideShare
Wird geladen in …5
×

Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird

1.025 Aufrufe

Veröffentlicht am

Sep 08, 2012

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.

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.025
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
6
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird

  1. 1. Cloud Deployment und(Auto)Scalingam Beispiel vonAngrybirdPresented byDaniel PötzingerDeveloper Conference Hamburg 2012:
  2. 2. CIOAOE media„Agilist“Open SourceDeveloper
  3. 3. 100PEOPLE6COUNTRIES13YEARS2700%GROWTHOpenSourceCOMMUNITYCLIENTS
  4. 4. Und Sie?• Wer betreibt einen Magento Shop?• Wer hat Erfahrung mit cloud hosting/ AWS?• Wer betreibt eine Seite mit mehr als 100Seitenaufrufen / Sekunde?•mehr als 1000 Seiten/Sekunde?
  5. 5. Monitoring(munin, collectd)Cluster & CloudInfrastructureProvisionierungAutoscalinggeteilte ResourcenApplikationsArchitekturCache StrategyAlgorithmenServicesHTTP & CoHTTP ProtocolProxy CachesSite OptimisationUser Monitoring &AnalyticsBesser werden und Bottlenecks finden...Profiling(xdebug, newrelic)Performance BausteineStabil und schnell ausliefern mit....Continuous DeliveryPerformanceTests
  6. 6. Irregular Traffic Behaviour
  7. 7. DRM ServerMail ServiceProducts +WarehouseReportingOrdermgmtManage Warehouse FullfillmentGiftcardsBraintreeDas Angry Birds Magento UniversumStorefronts
  8. 8. DRM ServerMail ServiceProducts +WarehouseReportingOrdermgmtManage Warehouse FullfillmentGiftcardsBraintreeDas Angry Birds Magento UniversumStorefrontsShipwireFindest das beste„Paketrouting“Verwaltet weltweiteWarenhäuser +Bestand
  9. 9. Why Amazon Cloud ?
  10. 10. ✓Scales quickly on demand✓Pay only what you need
  11. 11. Powerfull AWS ServicesRightscale ServicesAmazon Webservices & Amazon ConsoleCloudFrontElasticCacheS3EC2 RDS ELB R53
  12. 12. Powerfull AWS ServicesRightscale ServicesAmazon Webservices & Amazon ConsoleCloudFrontElasticCacheS3EC2 RDS ELBArchitecture RequirementsHochverfügbar (Multiple Failover andLoadbalancing)Frontend und BackendarbeitentrennenManagen von HintergrundtasksUnabhängig von SchnittstellenFast Fast Fast & Scalablekeine Downtime
  13. 13. Cloud Architecture
  14. 14. RDS„Deployment Definition“+ AutoscalingVarnish ArrayFrontend Array Backend Array Worker ArrayCloud FrontCDN for SkinELBR53DNSRDSS3DeploymentElastic CacheCache BackendCloud FrontCDN for AssetsS3Assets StorageEC2 EC2EC2EC2 EC2 EC2EC2 EC2MonitoringAPI
  15. 15. Um zu Skalieren muss man denFlaschenhals finden undeliminieren
  16. 16. CPUBandbreiteStorage (DB)Traffictypische FlaschenhälseOffloading, Optimisation,Caching, add more CPU (scale)...Offloading, Optimisation,Scale Storage UP (H/V),Replace Storage...Offloading (CDN, Proxy)Optimize Size of the SiteScale Network IS...
  17. 17. HTTP CachingFrontend(Magento)Varnish(Reverse Proxy) TrafficOffload expensive requestsTrafficCDNBrowserTrafficPurging
  18. 18. HTTP Caching1. Seiten cachebar machen• HTTP Cache Header verstehen und Browser Cache nutzen•Reverse Proxy Cache nutzen2. Dynamic zum Client verschieben3. Ajax oder ESI für dynamische / personalisierte Teileverwenden4. JS und CSS packen und minifizieren + Timestamp5. CDN für statische Assets verwenden6.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 Profiling1. Isoliertes Profiling•XDebug + kcachegrind•XHProf2. 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 Cachingregeln1. Ziel ist eine hohe Hitrate2. Caches dürfen nicht geflutet werden3. Cache Backend müssen „weise“ ausgewählt werden4. Aufpassen den Cache nicht auf einmal zu verlieren.5. Cachen ist einfach. Aber wichtig ist die caches gutaufzuräumen6. Einzelne Cacheeinträge mussen „on-demand“aktualisiert oder gelöscht werden
  24. 24. Andere Tipps1. System und Versionsabhängigen Cacheprefix einführen2. Cache Warmup Script haben und im Deployment nutzen3. E-Mail Service für das (Massen) versenden von Mailsverwenden4. „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• min, max• Votingrules for scale up/down•fehlerhafte Instanzenersetzen• Provisionierungszeit undPolicies abstimmen• „Calm time“TrafficFrontendArrayEC2EC2EC2EC2EC2EC2
  27. 27. (AWS) Lessons learned1. 404s können sehr teuer sein• Lasttest mit accesslog•Cachen oder Weiterleiten2. Cloudfront mit S3 backendkann kein GZIP3.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 DeploymentWe want on-demand deploymentof tested features and fixesin a quick and reliable way
  34. 34. Alles zu automatisierenWir erreichen das durchBuildTestingDeployment
  35. 35. das alles häufigausführen..undflickr deploys 3times a day...
  36. 36. The DeploymentPipeline
  37. 37. SeleniumAcceptance TestsCommitand BuildBuild Downstream and Test StrategySVNBackupStorageUnit TestsInstall on„latest“PerformanceTestsAngry Birds Deployment PipelineFeedback to Developers
  38. 38. ‣ Filesystem‣ Database‣ Install Binaries‣ settings.phpMagento Installation Package‣ htdocs [Magento Source]‣ media‣ .modman [Custom Packages]‣ changelog.txt1.set maintenance mode2.Delta Package prepare3.apply Database4.sync files5.run modman deploy-all6.adjust Settings7.Post install:fix p. / cache clean / ...
  39. 39. Angry Birds Deployment PipelineInstall onDeploymentSystemCopy to S3CloudDeploymentStagingIntegrationTestsAOE + RovioClouddeploymentproduction
  40. 40. Deployment „Version 89“Varnish ArrayAutoscalingFrontend ArrayBackendArrayWorkerArrayCloud DeploymentELBDeployment „Version 88“Start new release by✓ cloning old deployment✓ adjusting release numberRDSmySQLS3Varnish ArrayAutoscalingFrontend ArrayBackendArrayWorkerArrayELBWFE FE FE BE BE BEV V VV V VWFE FE FE BE BE BER53DNS
  41. 41. 0Sekunden Downtime
  42. 42. Don‘t be scared ofreleasing toproductionEs geht nicht nur um den Quellcode!
  43. 43. EnvironmentConfigurationSource CodeDataDeployment
  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.“„Cloud Sprint“[ Dev + Ops and the Cloud ]Infrastructure as a Code[Provisioning with Chef]http://www.agileweboperations.com/lean-agile-devops-related
  45. 45. Beispiel: Provisionierung einer Varnish Instanz1. EC2 Instanz von „nackter“ AIM starten2.Infrastruktur Installieren:1. RS Logging und Monitoring (syslog-ng, collectd)2.Tags bekommen3.Varnish installieren4. Monitoring (Collectd) Installieren3. Infrastruktur konfigurieren:1. aktuelle Varnish Konfiguration aus Deployment einrichten2. 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 demrichtigem 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. New releasedeployedSpace gamelaunchedArray scales upUSA wakes upDay 3 - „People want it so badly“
  50. 50. 40% averageCPU usage.1-2 FE Serversare enoughDay 4 - Release 3 „Performance Improvement“
  51. 51. 5000(echte) Besucher gleichzeitig
  52. 52. Danke fürs zuhören!Fragen?Follow us on Twitter:AOE: @aoemediaDaniel P: @danpoetz

×