Learning to Fly: How Angry Birds Reached the Heights of Store Performance |…

Preview:

Citation preview

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?

fabrizio.branca@aoemedia.com

http://www.aoemedia.com

http://www.fabrizio-branca.de

@fbrnc Follow me on twitter!

My blog

Recommended