46

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

  • Upload
    atwix

  • View
    551

  • Download
    0

Embed Size (px)

Citation preview

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

Learning To Fly: How Angry

Birds Reached the Heights of

Store Performance

Page 3: 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

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

San Francisco, CA

Janine

Fiona

that’s me

It’s a boy!

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

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.

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

Magento Imagine 2012 Meet Magento 2012 Meet Magento 2011

Part II Part I

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

Lessons Learned ...from running a

High Performance Magento Store

original title of this presentation!

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

PC games (download)

Plush toys, shirts, ...

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

> 24.000.000 likes > 500.000 followers

Social Media Impact

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

1.000.000 unique visitors. per day.

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

concurrent users.

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

Orders.

10

5 6 7

8

9

per second. Yes, per second!

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

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

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

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

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

Downtime

Number of lost carts

Number of lost sessions and logins

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

Stores …and GeoIP redirection!

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

Themes

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

Growing Data

Trimming the fat!

Orders

Promotions

cms / banners

Aoe_CacheCleaner

Aoe_QuoteCleaner

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

Varnish Reverse Proxy

Magento

Protecting Magento

more traffic, more stores,

more products, more urls,…

less requests hitting Magento!

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

90%

Varnish Tweaking

Cache Hitrate

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

80%

Varnish Tweaking

Cache Hitrate

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

98.6%

Varnish Tweaking

Cache Hitrate

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

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

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

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

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

Cache in a Cache

Magento

Varnish

Aoe_AsyncCache Aoe_VarnishAsyncCache

Updates

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

Bottleneck Database

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

Database Tuning

db.m2.4xlarge

Provisioned IOPS Storage

Percona Toolkit

This is not an iPhone!

“High-Memory Quadruple

Extra Large DB Instance”

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

RDS

(MySQL)

RDS

(MySQL)

Cache Backend

Aoe_DbCache

Database Splitting

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

Sessions

FPC RDS

(MySQL) Redis

Cache Backend

Redis

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

Bottleneck File I/O

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

0

lib

community

core

local

Number of *.php files by location

Less file operations

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

Aoe_ClassPathCache Magento

Compiler

Solution File I/O

…also check Magento 2!

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

Report Generation

Don’t try this at home! on production

Read Replica Background

Process

Delta Pre-

processing

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

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

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

Code Quality Modules

Don’t let them bring you down!

Uh-Oh!

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

Code Quality Modules

Not enterprise

ready

Not production

ready

Not cloud

ready

Bad

performance

Security

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

Continuous Quality Assurance

Code Reviews Profiling,

stress tests Automate

Aoe_Profiler

Everything sounds better with “continuous”

Question everything!

Part of the dev process!

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

Broken Testcases

Switch to Selenium 2

Nobody pays attention to test results

Menta

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

Lesson Learned Plan extra time!

Number of unexpected problems

Number of components

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

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?

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

Thank you, Team! You’re awesome!

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

Thank you! Any questions?

[email protected]

http://www.aoemedia.com

http://www.fabrizio-branca.de

@fbrnc Follow me on twitter!

My blog