Your SlideShare is downloading. ×
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird

265
views

Published on

Sep 08, 2012 …

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.

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
265
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Cloud Deployment und(Auto)Scalingam Beispiel vonAngrybirdPresented byDaniel PötzingerDeveloper Conference Hamburg 2012:
  • 2. CIOAOE media„Agilist“Open SourceDeveloper
  • 3. 100PEOPLE6COUNTRIES13YEARS2700%GROWTHOpenSourceCOMMUNITYCLIENTS
  • 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. 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. Irregular Traffic Behaviour
  • 7. DRM ServerMail ServiceProducts +WarehouseReportingOrdermgmtManage Warehouse FullfillmentGiftcardsBraintreeDas Angry Birds Magento UniversumStorefronts
  • 8. DRM ServerMail ServiceProducts +WarehouseReportingOrdermgmtManage Warehouse FullfillmentGiftcardsBraintreeDas Angry Birds Magento UniversumStorefrontsShipwireFindest das beste„Paketrouting“Verwaltet weltweiteWarenhäuser +Bestand
  • 9. Why Amazon Cloud ?
  • 10. ✓Scales quickly on demand✓Pay only what you need
  • 11. Powerfull AWS ServicesRightscale ServicesAmazon Webservices & Amazon ConsoleCloudFrontElasticCacheS3EC2 RDS ELB R53
  • 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. Cloud Architecture
  • 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. Um zu Skalieren muss man denFlaschenhals finden undeliminieren
  • 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. HTTP CachingFrontend(Magento)Varnish(Reverse Proxy) TrafficOffload expensive requestsTrafficCDNBrowserTrafficPurging
  • 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. 10.000+MÖGLICHE Seiten / Sekunde aus ELB +Varnish
  • 20. Application Tuning istgaaanz Individuell!
  • 21. Application Tuning braucht Profiling1. Isoliertes Profiling•XDebug + kcachegrind•XHProf2. Profiling unter Last•jMeter•IS Monitoring•XDebug...3.Profiling unter Echtlast• Newrelic
  • 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. 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. 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. 10.000MÖGLICHE Bestellungen pro Stunde
  • 26. Autoscaling•Gruppen mit Policys• min, max• Votingrules for scale up/down•fehlerhafte Instanzenersetzen• Provisionierungszeit undPolicies abstimmen• „Calm time“TrafficFrontendArrayEC2EC2EC2EC2EC2EC2
  • 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. ContinuousDeployment
  • 29. Don‘t be scared ofreleasing toproduction
  • 30. late night bugfixing?
  • 31. So muss ein Deploymentaussehen
  • 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. Definition Continuous DeploymentWe want on-demand deploymentof tested features and fixesin a quick and reliable way
  • 34. Alles zu automatisierenWir erreichen das durchBuildTestingDeployment
  • 35. das alles häufigausführen..undflickr deploys 3times a day...
  • 36. The DeploymentPipeline
  • 37. SeleniumAcceptance TestsCommitand BuildBuild Downstream and Test StrategySVNBackupStorageUnit TestsInstall on„latest“PerformanceTestsAngry Birds Deployment PipelineFeedback to Developers
  • 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. Angry Birds Deployment PipelineInstall onDeploymentSystemCopy to S3CloudDeploymentStagingIntegrationTestsAOE + RovioClouddeploymentproduction
  • 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. 0Sekunden Downtime
  • 42. Don‘t be scared ofreleasing toproductionEs geht nicht nur um den Quellcode!
  • 43. EnvironmentConfigurationSource CodeDataDeployment
  • 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. 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. The real life
  • 47. Day 1 - Release 1
  • 48. Day 2 - Release 2 - „get ready for Space“
  • 49. New releasedeployedSpace gamelaunchedArray scales upUSA wakes upDay 3 - „People want it so badly“
  • 50. 40% averageCPU usage.1-2 FE Serversare enoughDay 4 - Release 3 „Performance Improvement“
  • 51. 5000(echte) Besucher gleichzeitig
  • 52. Danke fürs zuhören!Fragen?Follow us on Twitter:AOE: @aoemediaDaniel P: @danpoetz

×