think like an ant, distribute the workload - phpday, italy, 2011

126
Distribute the workload Helgi Þormar Þorbjörnsson PhpDay, Italy, Verona, 13th May, 2011 Saturday, 14 May 2011

Upload: helgi-bormar-borbjoernsson

Post on 16-Apr-2017

2.525 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Distribute the workload

Helgi Þormar ÞorbjörnssonPhpDay, Italy, Verona, 13th May, 2011

Saturday, 14 May 2011

Page 2: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Who am I?

Saturday, 14 May 2011

Page 3: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Saturday, 14 May 2011

Page 4: Think like an ant, distribute the workload - PhpDay, Italy, 2011

VP of Engineering at Orchestra.io

Saturday, 14 May 2011

Page 5: Think like an ant, distribute the workload - PhpDay, Italy, 2011

VP of Engineering at Orchestra.io

Developer at PEAR

Saturday, 14 May 2011

Page 6: Think like an ant, distribute the workload - PhpDay, Italy, 2011

VP of Engineering at Orchestra.io

Developer at PEAR

From Iceland

Saturday, 14 May 2011

Page 7: Think like an ant, distribute the workload - PhpDay, Italy, 2011

VP of Engineering at Orchestra.io

Developer at PEAR

From Iceland

@h on Twitter

Saturday, 14 May 2011

Page 8: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Why Distribute?

Saturday, 14 May 2011

Page 9: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Why Distribute?

Saturday, 14 May 2011

Page 10: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Why Distribute?

Budget

Saturday, 14 May 2011

Page 11: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Why Distribute?

Budget

Efficiency

Saturday, 14 May 2011

Page 12: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Why Distribute?

Budget

Efficiency

Perception

Saturday, 14 May 2011

Page 13: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Budget

Saturday, 14 May 2011

Page 14: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Budget

Spend wisely

Saturday, 14 May 2011

Page 15: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Budget

Spend wisely

Commodity servers

Saturday, 14 May 2011

Page 16: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Budget

Spend wisely

Commodity servers

Low overhead, high yield

Saturday, 14 May 2011

Page 17: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Budget

Spend wisely

Commodity servers

Low overhead, high yield

Cloud Computing (EC2)

Saturday, 14 May 2011

Page 18: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Efficiency

10 small servers > 1 big

Saturday, 14 May 2011

Page 19: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Venue Security

Saturday, 14 May 2011

Page 20: Think like an ant, distribute the workload - PhpDay, Italy, 2011

1000 people can exit quicker through 10 small doors than 1 big

Saturday, 14 May 2011

Page 21: Think like an ant, distribute the workload - PhpDay, Italy, 2011

1000 people can exit quicker

through 10 small doors than 1 big

Saturday, 14 May 2011

Page 22: Think like an ant, distribute the workload - PhpDay, Italy, 2011

1000 people can exit quicker

through 10 small doors than 1 big

Saturday, 14 May 2011

Page 23: Think like an ant, distribute the workload - PhpDay, Italy, 2011

1000 people can exit quicker through 10 small doors than 1 big

Saturday, 14 May 2011

Page 24: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Saturday, 14 May 2011

Page 25: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Saturday, 14 May 2011

Page 26: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Saturday, 14 May 2011

Page 27: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Saturday, 14 May 2011

Page 28: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Perception

Saturday, 14 May 2011

Page 29: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Perception

Defer intensive processes

Saturday, 14 May 2011

Page 30: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Perception

Defer intensive processes

Give instant feedback

Saturday, 14 May 2011

Page 31: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Perception

Defer intensive processes

Give instant feedback

Users keep on browsing

Saturday, 14 May 2011

Page 32: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Perception

Defer intensive processes

Give instant feedback

Users keep on browsing

Saturday, 14 May 2011

Page 33: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Saturday, 14 May 2011

Page 34: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Chapter from Nature

Saturday, 14 May 2011

Page 35: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Ant Colonies

Saturday, 14 May 2011

Page 36: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Algorithms

Saturday, 14 May 2011

Page 37: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Algorithms

Scheduling

Saturday, 14 May 2011

Page 38: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Algorithms

Scheduling

Vehicle Routing

Saturday, 14 May 2011

Page 39: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Algorithms

Scheduling

Vehicle Routing

Assignment

Saturday, 14 May 2011

Page 40: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Algorithms

Scheduling

Vehicle Routing

Assignment

Sets

Saturday, 14 May 2011

Page 41: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Algorithms

Scheduling

Vehicle Routing

Assignment

Sets

Other

Saturday, 14 May 2011

Page 42: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Algorithms

Scheduling

Vehicle Routing

Assignment

Sets

Other

Saturday, 14 May 2011

Page 43: Think like an ant, distribute the workload - PhpDay, Italy, 2011

How do ants fit?

Saturday, 14 May 2011

Page 44: Think like an ant, distribute the workload - PhpDay, Italy, 2011

How do ants fit?

Strength in numbers

Saturday, 14 May 2011

Page 45: Think like an ant, distribute the workload - PhpDay, Italy, 2011

How do ants fit?

Strength in numbers

Work together

Saturday, 14 May 2011

Page 46: Think like an ant, distribute the workload - PhpDay, Italy, 2011

How do ants fit?

Strength in numbers

Work together

Size benefits them

Saturday, 14 May 2011

Page 47: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Teamwork

When faced with a problem they will solve the problem as one.

Saturday, 14 May 2011

Page 48: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Saturday, 14 May 2011

Page 49: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Saturday, 14 May 2011

Page 50: Think like an ant, distribute the workload - PhpDay, Italy, 2011

What if they were bigger?

Saturday, 14 May 2011

Page 51: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Types of Ants

Saturday, 14 May 2011

Page 52: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Types of Ants

Military

Saturday, 14 May 2011

Page 53: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Types of Ants

Military

Maids

Saturday, 14 May 2011

Page 54: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Types of Ants

Military

Maids

Tunnel diggers

Saturday, 14 May 2011

Page 55: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Types of Ants

Military

Maids

Tunnel diggers

Food gatherers

Saturday, 14 May 2011

Page 56: Think like an ant, distribute the workload - PhpDay, Italy, 2011

How does this map to my application?

Saturday, 14 May 2011

Page 57: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Saturday, 14 May 2011

Page 58: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Colony = Application

Saturday, 14 May 2011

Page 59: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Colony = Application Ants = Components

Saturday, 14 May 2011

Page 60: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Colony = Application Ants = Components

Ants do many different types of work to keep their colony running

Saturday, 14 May 2011

Page 61: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Architect for Distribution

Saturday, 14 May 2011

Page 62: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Characteristics

Saturday, 14 May 2011

Page 63: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Characteristics

Decoupling

Saturday, 14 May 2011

Page 64: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Characteristics

Decoupling

Elasticity

Saturday, 14 May 2011

Page 65: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Characteristics

Decoupling

Elasticity

High Availability

Saturday, 14 May 2011

Page 66: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Characteristics

Decoupling

Elasticity

High Availability

Concurrency

Saturday, 14 May 2011

Page 67: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Decoupling

Saturday, 14 May 2011

Page 68: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Application

DB API

Cache FE

Saturday, 14 May 2011

Page 69: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Application

DB API

Cache FE

Saturday, 14 May 2011

Page 70: Think like an ant, distribute the workload - PhpDay, Italy, 2011

ApplicationDB API

Cache FE

Saturday, 14 May 2011

Page 71: Think like an ant, distribute the workload - PhpDay, Italy, 2011

ApplicationDB API

Cache FE

Cache

Saturday, 14 May 2011

Page 72: Think like an ant, distribute the workload - PhpDay, Italy, 2011

ApplicationDB API

Cache FE

Cache

API

Saturday, 14 May 2011

Page 73: Think like an ant, distribute the workload - PhpDay, Italy, 2011

ApplicationDB API

Cache FE

Cache

API

API

Saturday, 14 May 2011

Page 74: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Elasticity

Saturday, 14 May 2011

Page 75: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Cloud Computing

Saturday, 14 May 2011

Page 76: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Load Balancing

Saturday, 14 May 2011

Page 77: Think like an ant, distribute the workload - PhpDay, Italy, 2011

HA Proxy

Nginx

My Favourite

Saturday, 14 May 2011

Page 78: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Monitoring

Saturday, 14 May 2011

Page 79: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Automation

Saturday, 14 May 2011

Page 80: Think like an ant, distribute the workload - PhpDay, Italy, 2011

High Availability

Saturday, 14 May 2011

Page 81: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Benefits

Saturday, 14 May 2011

Page 82: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Benefits

Easy management

Saturday, 14 May 2011

Page 83: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Benefits

Easy management

Ability to stop / start servers quickly

Saturday, 14 May 2011

Page 84: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Benefits

Easy management

Ability to stop / start servers quickly

Responsibilities are separate

Saturday, 14 May 2011

Page 85: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Benefits

Easy management

Ability to stop / start servers quickly

Responsibilities are separate

Quickly move to a new cluster

Saturday, 14 May 2011

Page 86: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Benefits

Easy management

Ability to stop / start servers quickly

Responsibilities are separate

Quickly move to a new cluster

Reduced risk

Saturday, 14 May 2011

Page 87: Think like an ant, distribute the workload - PhpDay, Italy, 2011

What to avoid

Saturday, 14 May 2011

Page 88: Think like an ant, distribute the workload - PhpDay, Italy, 2011

What to avoidLocal:

Saturday, 14 May 2011

Page 89: Think like an ant, distribute the workload - PhpDay, Italy, 2011

What to avoidLocal:

Sessions

Saturday, 14 May 2011

Page 90: Think like an ant, distribute the workload - PhpDay, Italy, 2011

What to avoidLocal:

Sessions

Files

Saturday, 14 May 2011

Page 91: Think like an ant, distribute the workload - PhpDay, Italy, 2011

What to avoidLocal:

Sessions

Files

Memory

Saturday, 14 May 2011

Page 92: Think like an ant, distribute the workload - PhpDay, Italy, 2011

What to avoidLocal:

Sessions

Files

Memory

Uploads

Saturday, 14 May 2011

Page 93: Think like an ant, distribute the workload - PhpDay, Italy, 2011

What to avoidLocal:

Sessions

Files

Memory

Uploads

Writing to /tmp

Saturday, 14 May 2011

Page 94: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Solutions

Saturday, 14 May 2011

Page 95: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Solutions

Store sessions in DB / Memcache

Saturday, 14 May 2011

Page 96: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Solutions

Store sessions in DB / Memcache

Use S3 to store uploaded files

Saturday, 14 May 2011

Page 97: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Solutions

Store sessions in DB / Memcache

Use S3 to store uploaded files

Use networked Memcache

Saturday, 14 May 2011

Page 98: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Solutions

Store sessions in DB / Memcache

Use S3 to store uploaded files

Use networked Memcache

Serve up static files from a CDN

Saturday, 14 May 2011

Page 99: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Solutions

Store sessions in DB / Memcache

Use S3 to store uploaded files

Use networked Memcache

Serve up static files from a CDN

Or... A multi domain solution

Saturday, 14 May 2011

Page 100: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Internal APIs

Saturday, 14 May 2011

Page 101: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Application

MySQLMongo FS

Internal Storage API

Saturday, 14 May 2011

Page 102: Think like an ant, distribute the workload - PhpDay, Italy, 2011

SOA

Saturday, 14 May 2011

Page 103: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Service Oriented Architecture

Saturday, 14 May 2011

Page 104: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Sort of :-)

Saturday, 14 May 2011

Page 105: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Eventually Consistent

Saturday, 14 May 2011

Page 106: Think like an ant, distribute the workload - PhpDay, Italy, 2011

CAP Therom

Saturday, 14 May 2011

Page 107: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Consistency

Availability

Partition Tolerance

Saturday, 14 May 2011

Page 108: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Queue Systems

Saturday, 14 May 2011

Page 109: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Good for

Saturday, 14 May 2011

Page 110: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Good forImage Processing

Saturday, 14 May 2011

Page 111: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Good forImage Processing

Distributed Logs

Saturday, 14 May 2011

Page 112: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Good forImage Processing

Distributed Logs

Data Mining

Saturday, 14 May 2011

Page 113: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Good forImage Processing

Distributed Logs

Data Mining

Mass Emails

Saturday, 14 May 2011

Page 114: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Good forImage Processing

Distributed Logs

Data Mining

Mass Emails

Intensive transformation

Saturday, 14 May 2011

Page 115: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Good forImage Processing

Distributed Logs

Data Mining

Mass Emails

Intensive transformation

Search

Saturday, 14 May 2011

Page 116: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Common Tools

Saturday, 14 May 2011

Page 117: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Common Tools

Gearman

Saturday, 14 May 2011

Page 118: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Common Tools

Gearman

Hadoop

Saturday, 14 May 2011

Page 119: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Common Tools

Gearman

Hadoop

Zero MQ (0MQ)

Saturday, 14 May 2011

Page 120: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Common Tools

Gearman

Hadoop

Zero MQ (0MQ)

RabbitMQ

Saturday, 14 May 2011

Page 121: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Common Tools

Gearman

Hadoop

Zero MQ (0MQ)

RabbitMQ

And many others!

Saturday, 14 May 2011

Page 122: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Gearman

Saturday, 14 May 2011

Page 123: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Your Client Code

Gearman Client API(C, PHP, Perl, MySQL UDF, ...)

Gearman Job Servergearmand

Gearman Worker API(C, PHP, Perl, Python, ...)

Your Worker Code

Your App Gearman

Saturday, 14 May 2011

Page 124: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Story time

Saturday, 14 May 2011

Page 125: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Story time

Saturday, 14 May 2011

Page 126: Think like an ant, distribute the workload - PhpDay, Italy, 2011

Questions?

[email protected]: @h

Joind.in: http://joind.in/3027

Saturday, 14 May 2011