Your SlideShare is downloading. ×
Magento Imagine 2013: Fabrizio Branca - Learning To Fly: How Angry Birds Reached the Heights of Store Performance
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

Magento Imagine 2013: Fabrizio Branca - Learning To Fly: How Angry Birds Reached the Heights of Store Performance


Published on

Apr 11, 2013

Apr 11, 2013

Published in: Technology

1 Like
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Learning To Fly: How AngryBirds Reached the Heights ofStore Performance
  • 2. Insert photo of speakerhere891 pixels h x 688 pixels wLearning To Fly:How Angry BirdsReached theHeights of StorePerformanceLead Magento DeveloperFabrizio Branca
  • 3. San Francisco, CAJanineFionathat’s meIt’s a boy!
  • 4. AOE media, a Magento Gold Partner and leading provider forOpen Source-based Portal development, Web ContentManagement and e-Commerce with its headquarters in SanFrancisco, California and Wiesbaden, Germany and more than120 people in seven offices world-wide.
  • 5. MagentoImagine2012 MeetMagento2012 MeetMagento2011Part II Part I
  • 6. Lessons Learned...from running aHigh PerformanceMagento Storeoriginal title ofthis presentation!
  • 7. PCgames (download)Plushtoys, shirts, ...
  • 8. >24.000.000 likes >500.000 followersSocial MediaImpact
  • 9. 1.000.000unique visitors. per day.
  • 10. concurrent users.
  • 11. Orders.105 6789per second.Yes, per second!
  • 12. S3Assets StorageVarnish ArrayEC2Frontend ArrayCloudFrontCDN for SkinRDSMySQLS3DeploymentCacheELBLoad BalancerCloudFrontCDN for AssetsMonitoringBackend ArrayEC2 EC2EC2Worker ArrayEC2BraintreeMailDRMGiftcardsLoggingEC2Route
  • 13. Varnish ArrayFrontend Array Worker ArrayEC2Deployment xELBLoad BalancerVEC2FroBackend ArrayEC2 EC2EC2EC2Deployment x+1Release YELBLoad BalancerRoute 53DNS-Serviceshop.angrybirds.comDeployment
  • 14. DowntimeNumber oflost cartsNumber oflost sessionsand logins
  • 15. Stores…and GeoIPredirection!
  • 16. Themes
  • 17. GrowingDataTrimmingthe fat!OrdersPromotionscms / bannersAoe_CacheCleanerAoe_QuoteCleaner
  • 18. VarnishReverse ProxyMagentoProtectingMagentomore traffic,more stores,more products,more urls,…less requestshitting Magento!
  • 19. 90%VarnishTweakingCache Hitrate
  • 20. 80%VarnishTweakingCache Hitrate
  • 21. 98.6%VarnishTweakingCache Hitrate
  • 22. Request a page (HTTP Request)deliver static pageRequestDelivering static contentPlaceholders for dynamic parts.Cache-Control headersAjax call request dynamic partsand transfers the id of the currently visited productJSON response with dynamic contentReplace placeholderWrite session id to cookieRender the pageBrowser Varnish MagentoAoe_Static
  • 23. ReduceNumber of RequestsDo ajax requests instead of full page loads!»Add to basket»Displaying the mini cartDon’t do ajax requests!»Login status and username»(Number of) cart items»Geo locationCache 404 pages and redirects!Normalize urls!… hitting MagentoUse cookies orlocalStorage
  • 24. Cache ina CacheMagentoVarnishAoe_AsyncCache Aoe_VarnishAsyncCacheUpdates
  • 25. BottleneckDatabase
  • 26. DatabaseTuningdb.m2.4xlargeProvisioned IOPS StoragePercona ToolkitThis is notan iPhone!“High-MemoryQuadrupleExtra Large DBInstance”
  • 27. RDS(MySQL)RDS(MySQL)Cache BackendAoe_DbCacheDatabaseSplitting
  • 28. SessionsFPCRDS(MySQL)RedisCache BackendRedis
  • 29. BottleneckFile I/O
  • 30. libcommunitycorelocalNumber of *.php files by locationLess fileoperations
  • 31. Aoe_ClassPathCacheMagentoCompilerSolutionFile I/O…also checkMagento 2!
  • 32. ReportGenerationDon’t try this at home!on productionRead Replica BackgroundProcessDelta Pre-processing
  • 33. ProcessingCronscron.shcron.phpAoe_Scheduler with multiple cron groupswill block other cronsperformance issues,race conditions!SCHEDULER_WHITELIST=a,b,c’ cron2.phpSCHEDULER_BLACKLIST=a,b,ccron.shAoe_Scheduler
  • 34. Code QualityModulesDon’t let thembring you down!Uh-Oh!
  • 35. Code QualityModulesNot enterprisereadyNot productionreadyNot cloudreadyBadperformanceSecurity
  • 36. ContinuousQuality AssuranceCode Reviews Profiling,stress testsAutomateAoe_ProfilerEverything sounds betterwith “continuous”Questioneverything!Part of the dev process!
  • 37. BrokenTestcasesSwitch toSelenium 2Nobody pays attentionto test resultsMenta
  • 38. Lesson LearnedPlan extra time!Number ofunexpectedproblemsNumber ofcomponents
  • 39. What’s next?Move quotes Cache Backend+ php-fpm+ PHP 5.4Web server EC2 instancesizesMySQL?MongoDB?Less bigger instancesvs.more smaller ones?
  • 40. Thank you,Team!You’re awesome!
  • 41. Thank you!Any questions?fabrizio.branca@aoemedia.comhttp://www.aoemedia.com me on twitter!My blog