magento imagine 2013: fabrizio branca - learning to fly: how angry birds reached the heights of...
TRANSCRIPT
Learning To Fly: How Angry
Birds Reached the Heights of
Store Performance
Insert photo of speaker
here
891 pixels h x 688 pixels w
Learning To Fly:
How Angry Birds
Reached the
Heights of Store
Performance
Lead Magento Developer
Fabrizio Branca
San Francisco, CA
Janine
Fiona
that’s me
It’s a boy!
AOE media, a Magento Gold Partner and leading provider for
Open Source-based Portal development, Web Content
Management and e-Commerce with its headquarters in San
Francisco, California and Wiesbaden, Germany and more than
120 people in seven offices world-wide.
Magento Imagine 2012 Meet Magento 2012 Meet Magento 2011
Part II Part I
Lessons Learned ...from running a
High Performance Magento Store
original title of this presentation!
PC games (download)
Plush toys, shirts, ...
> 24.000.000 likes > 500.000 followers
Social Media Impact
1.000.000 unique visitors. per day.
concurrent users.
Orders.
10
5 6 7
8
9
per second. Yes, per second!
S3 Assets Storage
Varnish Array EC2
Frontend Array
CloudFront CDN for Skin
RDS MySQL
S3 Deployment
Cache
ELB Load Balancer
CloudFront CDN for Assets
Monitoring
Backend Array EC2 EC2
EC2
Worker Array EC2
Braintree
Mail DRM
Giftcards
Logging
EC2
Route 53 DNS-Service
shop.angrybirds.com
Varnish Array
Frontend Array Worker Array EC2
Deployment x
ELB Load Balancer
Varnish ArrayEC2
Frontend ArrayBackend Array EC2 EC2
EC2
EC2
Deployment x+1 Release Y
ELB Load Balancer
Route 53 DNS-Service
shop.angrybirds.com
Deployment
Downtime
Number of lost carts
Number of lost sessions and logins
Stores …and GeoIP redirection!
Themes
Growing Data
Trimming the fat!
Orders
Promotions
cms / banners
Aoe_CacheCleaner
Aoe_QuoteCleaner
Varnish Reverse Proxy
Magento
Protecting Magento
more traffic, more stores,
more products, more urls,…
less requests hitting Magento!
90%
Varnish Tweaking
Cache Hitrate
80%
Varnish Tweaking
Cache Hitrate
98.6%
Varnish Tweaking
Cache Hitrate
Request a page (HTTP Request)
deliver static page
Request
Delivering static content
Placeholders for dynamic parts.
Cache-Control headers
Ajax call request dynamic parts
and transfers the id of the currently visited product
JSON response with dynamic content
Replace placeholder
Write session id to cookie
Render the page
Browser Varnish Magento
Aoe_Static
Reduce Number of Requests Do ajax requests instead of full page loads! »Add to basket
»Displaying the mini cart
Don’t do ajax requests! »Login status and username
»(Number of) cart items
»Geo location
Cache 404 pages and redirects!
Normalize urls!
… hitting Magento
Use cookies or localStorage
Cache in a Cache
Magento
Varnish
Aoe_AsyncCache Aoe_VarnishAsyncCache
Updates
Bottleneck Database
Database Tuning
db.m2.4xlarge
Provisioned IOPS Storage
Percona Toolkit
This is not an iPhone!
“High-Memory Quadruple
Extra Large DB Instance”
RDS
(MySQL)
RDS
(MySQL)
Cache Backend
Aoe_DbCache
Database Splitting
Sessions
FPC RDS
(MySQL) Redis
Cache Backend
Redis
Bottleneck File I/O
0
lib
community
core
local
Number of *.php files by location
Less file operations
Aoe_ClassPathCache Magento
Compiler
Solution File I/O
…also check Magento 2!
Report Generation
Don’t try this at home! on production
Read Replica Background
Process
Delta Pre-
processing
Processing Crons
cron.sh
cron.php
Aoe_Scheduler with multiple cron groups
will block other crons
performance issues, race conditions!
SCHEDULER_WHITELIST='a,b,c’
cron.sh cron2.php
SCHEDULER_BLACKLIST='a,b,c'
cron.sh
Aoe_Scheduler
Code Quality Modules
Don’t let them bring you down!
Uh-Oh!
Code Quality Modules
Not enterprise
ready
Not production
ready
Not cloud
ready
Bad
performance
Security
Continuous Quality Assurance
Code Reviews Profiling,
stress tests Automate
Aoe_Profiler
Everything sounds better with “continuous”
Question everything!
Part of the dev process!
Broken Testcases
Switch to Selenium 2
Nobody pays attention to test results
Menta
Lesson Learned Plan extra time!
Number of unexpected problems
Number of components
What’s next?
Move quotes Cache Backend
+ php-fpm
+ PHP 5.4
Web server EC2 instance
sizes
MySQL? MongoDB?
Less bigger instances vs.
more smaller ones?
Thank you, Team! You’re awesome!
Thank you! Any questions?
http://www.aoemedia.com
http://www.fabrizio-branca.de
@fbrnc Follow me on twitter!
My blog