php in the enterpriseblog.preinheimer.com/talks/php in the enterprise... · gomez vs other frontend...

Post on 09-Oct-2020

9 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

PHP in the EnterpriseStories from the Front LinePaul Reinheimer

Wednesday, March 10, 2010

Paul Reinheimer @preinheimerfirstname@preinheimer.com

http://preinheimer.comhttp://wonderproxy.com

Wednesday, March 10, 2010

Mansef Group

Wednesday, March 10, 2010

"Enterprise" Stats

70 Million Uniques/Day

Four Major Properties from "tube" sites to dating

Wednesday, March 10, 2010

Topics

Memcached

Sphinx

GeoIP

Gomez vs Other

Frontend Performance

HipHop

MySQL

Circonus

Mobile Content Protection

Wednesday, March 10, 2010

Using PHP

Wednesday, March 10, 2010

Wednesday, March 10, 2010

Wednesday, March 10, 2010

Memcached

Data Federation

Slabs, stores, promises

Serializer

Wednesday, March 10, 2010

Promises

Wednesday, March 10, 2010

Promises

memcached doesn't lie, it just doesn't make promises

Wednesday, March 10, 2010

Promises

it makes a promise

Wednesday, March 10, 2010

Promises

data will no longer be available after it expires

Wednesday, March 10, 2010

Promises

When memcached doesn't have the information you need, get it elsewhere.

Use a read-through caching callback or put it in your caching object.

memcached is allowed to lose data!

Wednesday, March 10, 2010

Wednesday, March 10, 2010

Wednesday, March 10, 2010

48

60

75

96

120

150

187

234

292

366

460

0 25 50 75 100

Wednesday, March 10, 2010

48

60

75

96

120

150

187

234

292

366

460

0 25 50 75 100

Wednesday, March 10, 2010

Sphinx

There's another talk, it's good

Wednesday, March 10, 2010

GeoIP

Big Deal for us

Price selection

Billing Cascades

Internal and External systems

QA Nightmare

Wednesday, March 10, 2010

Challenge

Aid appropriate teams to make dealing with GeoIP as trivial as possible without

affecting workflow

Wednesday, March 10, 2010

Problem - Proxies Suck

Slow

Buy Now

Wednesday, March 10, 2010

Problem - Web Proxies Suck

Wednesday, March 10, 2010

Solution

Find a real Proxy Service

Wednesday, March 10, 2010

Solution

Create a real Proxy Service

Wednesday, March 10, 2010

Gomez vs Other?

Download performance from clients

Use google for real client data

Find bottlenecks

Wednesday, March 10, 2010

Methodology

Generate an exact 10KB file

Place it on all PH web servers

Place it on the CDN

Place it on all media servers (NY and NL)

Write a test script to runs on 0.1% of requests

Report the time it takes to load that image (in ms) from each server

Wednesday, March 10, 2010

Redacted

Wednesday, March 10, 2010

Wednesday, March 10, 2010

Wednesday, March 10, 2010

Frontend Performance

YSlow

Website Optimizer

CSS Sprites

Request Minimization & Compression

Wednesday, March 10, 2010

Mandate

Increase sales

Decreasing page load time

Don't interfere with current work flow

Leave infrastructure behind for trivial future use

Wednesday, March 10, 2010

Read

Wednesday, March 10, 2010

Read Moar

Wednesday, March 10, 2010

Stats

Wednesday, March 10, 2010

Stats

Wednesday, March 10, 2010

Stats

47 48 49 50 51 52 1

Normal Optimized

10-20% Increase in Sales

40% Decrease in Bounce Rate

Wednesday, March 10, 2010

Wednesday, March 10, 2010

HipHop for PHP

Twice as fast

Not yet using it in production

Wednesday, March 10, 2010

MySQL

Wednesday, March 10, 2010

Data Federation

Wednesday, March 10, 2010

Data Federation - Functional Partitions

Users Website

Content

Wednesday, March 10, 2010

Data Federation - Functional Partitions

Users Website

Content

Wednesday, March 10, 2010

Circonus

Systems Monitoring Demo

Wednesday, March 10, 2010

Mobile Content Protection

Wednesday, March 10, 2010

Challenge

$key = magicSauce($ip);

Wednesday, March 10, 2010

Problem

Wednesday, March 10, 2010

Problem

Wednesday, March 10, 2010

Problem

Wednesday, March 10, 2010

Problem

Wednesday, March 10, 2010

Problem

Wednesday, March 10, 2010

Solution

$session['ip'] = $_SERVER['REMOTE_ADDR'];

Wednesday, March 10, 2010

if($SERVER['REMOTE_ADDR']) != $session['ip']){ $key = magicSauce(FALSE);}else{

$session['ip'] = $_SERVER['REMOTE_ADDR'];

}

Wednesday, March 10, 2010

Thank You

We're Hiring!

Intermediate & Senior front end integrators

Intermediate & Senior back end (PHP) developers

Wednesday, March 10, 2010

top related