Scale like an ant, distribute the workload - DPC, Amsterdam, 2011

250
Distribute the workload Helgi Þormar Þorbjörnsson Dutch PHP Conference, Amsterdam, 19th May 2011 Thursday, 19 May 2011

description

Many services / applications now a day are ill equipped with handling a sudden rush of popularity, as is often the case on the internet now a days, to a point where the services either become unavailable or unbearably slow.By taking a chapter from the ant colonies in the wild, where their strength lies in their numbers and the fact that everyone works together towards the same goal, we can apply the same principle to our service by using systems such as- gearman- memcache- daemons- message queues- load balancersand many more, you can achieve greater performance, more redundancy, higher availability and have the ability to scale your services up and down as required easily.During this talk attendees will be lead through the world of distributed systems and scalability, and shown the how, where and what, of how to take the average application and splitting it into smaller more manageable pieces

Transcript of Scale like an ant, distribute the workload - DPC, Amsterdam, 2011

Page 1: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Distribute the workload

Helgi Þormar ÞorbjörnssonDutch PHP Conference, Amsterdam, 19th May 2011

Thursday, 19 May 2011

Page 2: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Who am I?

Thursday, 19 May 2011

Page 3: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Helgi

Thursday, 19 May 2011

Page 4: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

VP of Engineering at Orchestra.io

Helgi

Thursday, 19 May 2011

Page 5: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

VP of Engineering at Orchestra.io

Developer at PEAR

Helgi

Thursday, 19 May 2011

Page 6: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

VP of Engineering at Orchestra.io

Developer at PEAR

From Iceland

Helgi

Thursday, 19 May 2011

Page 7: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

VP of Engineering at Orchestra.io

Developer at PEAR

From Iceland

@h on Twitter

Helgi

Thursday, 19 May 2011

Page 8: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Why Distribute?

Thursday, 19 May 2011

Page 9: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Why Distribute?

Thursday, 19 May 2011

Page 10: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Why Distribute?

Budget

Thursday, 19 May 2011

Page 11: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Why Distribute?

Budget

Efficiency

Thursday, 19 May 2011

Page 12: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Why Distribute?

Budget

Efficiency

Perception

Thursday, 19 May 2011

Page 13: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Budget

Thursday, 19 May 2011

Page 14: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Budget

Spend wisely

Thursday, 19 May 2011

Page 15: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Budget

Spend wisely

Commodity servers

Thursday, 19 May 2011

Page 16: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Budget

Spend wisely

Commodity servers

Low overhead, high yield

Thursday, 19 May 2011

Page 17: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Budget

Spend wisely

Commodity servers

Low overhead, high yield

Cloud Computing (EC2)

Thursday, 19 May 2011

Page 18: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Efficiency

10 small servers > 1 big

Thursday, 19 May 2011

Page 19: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Venue Security

Thursday, 19 May 2011

Page 20: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

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

Thursday, 19 May 2011

Page 21: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

1000 people can exit quicker

through 10 small doors than 1 big

Thursday, 19 May 2011

Page 22: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

1000 people can exit quicker

through 10 small doors than 1 big

Thursday, 19 May 2011

Page 23: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

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

Thursday, 19 May 2011

Page 24: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 25: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 26: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 27: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 28: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Perception

Thursday, 19 May 2011

Page 29: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Perception

Defer intensive processes

Thursday, 19 May 2011

Page 30: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Perception

Defer intensive processes

Give instant feedback

Thursday, 19 May 2011

Page 31: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Perception

Defer intensive processes

Give instant feedback

Users keep on browsing

Thursday, 19 May 2011

Page 32: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Perception

Defer intensive processes

Give instant feedback

Users keep on browsing

Thursday, 19 May 2011

Page 33: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

“It all depends on how we look at things, and not how

they are in themselves.”

- Carl G. Jung

Thursday, 19 May 2011

Page 34: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 35: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Chapter from Nature

Thursday, 19 May 2011

Page 36: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Ant Colonies

Thursday, 19 May 2011

Page 37: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Algorithms

Thursday, 19 May 2011

Page 38: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Algorithms

Scheduling

Thursday, 19 May 2011

Page 39: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Algorithms

Scheduling

Vehicle Routing

Thursday, 19 May 2011

Page 40: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Algorithms

Scheduling

Vehicle Routing

Assignment

Thursday, 19 May 2011

Page 41: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Algorithms

Scheduling

Vehicle Routing

Assignment

Sets

Thursday, 19 May 2011

Page 42: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Algorithms

Scheduling

Vehicle Routing

Assignment

Sets

Other

Thursday, 19 May 2011

Page 43: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Algorithms

Scheduling

Vehicle Routing

Assignment

Sets

Other

Thursday, 19 May 2011

Page 44: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

How do ants fit?

Thursday, 19 May 2011

Page 45: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

How do ants fit?

Strength in numbers

Thursday, 19 May 2011

Page 46: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

How do ants fit?

Strength in numbers

Work together

Thursday, 19 May 2011

Page 47: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

How do ants fit?

Strength in numbers

Work together

Size benefits them

Thursday, 19 May 2011

Page 48: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Teamwork

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

Thursday, 19 May 2011

Page 49: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 50: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 51: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

What if they were bigger?

Thursday, 19 May 2011

Page 52: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Types of Ants

Thursday, 19 May 2011

Page 53: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Types of Ants

Military

Thursday, 19 May 2011

Page 54: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Types of Ants

Military

Maids

Thursday, 19 May 2011

Page 55: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Types of Ants

Military

Maids

Tunnel diggers

Thursday, 19 May 2011

Page 56: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Types of Ants

Military

Maids

Tunnel diggers

Food gatherers

Thursday, 19 May 2011

Page 57: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

How does this map to my application?

Thursday, 19 May 2011

Page 58: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 59: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Colony = Application

Thursday, 19 May 2011

Page 60: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Colony = Application Ants = Components

Thursday, 19 May 2011

Page 61: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Colony = Application Ants = Components

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

Thursday, 19 May 2011

Page 62: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Architect for Distribution

Thursday, 19 May 2011

Page 63: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Characteristics

Thursday, 19 May 2011

Page 64: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Characteristics

Decoupling

Thursday, 19 May 2011

Page 65: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Characteristics

Decoupling

Elasticity

Thursday, 19 May 2011

Page 66: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Characteristics

Decoupling

Elasticity

High Availability

Thursday, 19 May 2011

Page 67: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Characteristics

Decoupling

Elasticity

High Availability

Concurrency

Thursday, 19 May 2011

Page 68: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Decoupling

Thursday, 19 May 2011

Page 69: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Application

DB API

Cache FE

Thursday, 19 May 2011

Page 70: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Application

DB API

Cache FE

Thursday, 19 May 2011

Page 71: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ApplicationDB API

Cache FE

Thursday, 19 May 2011

Page 72: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ApplicationDB API

Cache FE

Cache

Thursday, 19 May 2011

Page 73: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ApplicationDB API

Cache FE

Cache

API

Thursday, 19 May 2011

Page 74: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ApplicationDB API

Cache FE

Cache

API

API

Thursday, 19 May 2011

Page 75: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Elasticity

Thursday, 19 May 2011

Page 76: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Cloud Computing

Thursday, 19 May 2011

Page 77: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Load Balancing

Thursday, 19 May 2011

Page 78: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

HA Proxy

Nginx

My Favourite

Thursday, 19 May 2011

Page 79: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Monitoring

Thursday, 19 May 2011

Page 80: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

When do I need more servers?

Thursday, 19 May 2011

Page 81: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Needs to be around from the start!

Thursday, 19 May 2011

Page 82: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Keep records

Thursday, 19 May 2011

Page 83: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Spot trends

Thursday, 19 May 2011

Page 84: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Different types

Thursday, 19 May 2011

Page 85: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Different types

Hardware Performance

Thursday, 19 May 2011

Page 86: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Different types

Hardware Performance

Software Performance

Thursday, 19 May 2011

Page 87: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Different types

Hardware Performance

Software Performance

Availability

Thursday, 19 May 2011

Page 88: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Different types

Hardware Performance

Software Performance

Availability

Resourcing

Thursday, 19 May 2011

Page 89: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Different types

Hardware Performance

Software Performance

Availability

Resourcing

Thursday, 19 May 2011

Page 90: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Applications

Thursday, 19 May 2011

Page 91: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ApplicationsNew Relic

Thursday, 19 May 2011

Page 92: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ApplicationsNew Relic

CloudKick

Thursday, 19 May 2011

Page 93: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ApplicationsNew Relic

CloudKick

ScoutApp

Thursday, 19 May 2011

Page 94: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ApplicationsNew Relic

CloudKick

ScoutApp

Nagios

Thursday, 19 May 2011

Page 95: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ApplicationsNew Relic

CloudKick

ScoutApp

Nagios

Cacti

Thursday, 19 May 2011

Page 96: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ApplicationsNew Relic

CloudKick

ScoutApp

Nagios

Cacti

Circonus

Thursday, 19 May 2011

Page 97: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Automation

Thursday, 19 May 2011

Page 98: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Want to sleep easy at night?

Thursday, 19 May 2011

Page 99: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Want to sleep easy at night?

Go out partying without worrying about getting a phone call?

Thursday, 19 May 2011

Page 100: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Plug into your monitoring

Thursday, 19 May 2011

Page 101: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Bringing together Monitoring and Elastic behaviour into one

beautiful whole!

Thursday, 19 May 2011

Page 102: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Add some intelligence to add / remove servers as needed based

on current information.

Thursday, 19 May 2011

Page 103: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

This is why good monitoring is essential or this wouldn’t be

possible

Thursday, 19 May 2011

Page 104: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Just make sure it doesn’t turn into...

Thursday, 19 May 2011

Page 105: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Skynet!!Thursday, 19 May 2011

Page 106: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

High Availability

Thursday, 19 May 2011

Page 107: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Get a highly available and resilient setup by following a few

of those recommendations

Thursday, 19 May 2011

Page 108: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Remember, even Google has outages

Thursday, 19 May 2011

Page 109: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Benefits

Thursday, 19 May 2011

Page 110: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Benefits

Easy management

Thursday, 19 May 2011

Page 111: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Benefits

Easy management

Ability to stop / start servers quickly

Thursday, 19 May 2011

Page 112: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Benefits

Easy management

Ability to stop / start servers quickly

Responsibilities are separate

Thursday, 19 May 2011

Page 113: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Benefits

Easy management

Ability to stop / start servers quickly

Responsibilities are separate

Quickly move to a new cluster

Thursday, 19 May 2011

Page 114: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Benefits

Easy management

Ability to stop / start servers quickly

Responsibilities are separate

Quickly move to a new cluster

Reduced risk

Thursday, 19 May 2011

Page 115: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

What to avoid

Thursday, 19 May 2011

Page 116: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Local Sessions

Thursday, 19 May 2011

Page 117: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Store sessions in DB / Memcache

Solution

Thursday, 19 May 2011

Page 118: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Local Memory

Thursday, 19 May 2011

Page 119: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Networked Memcache

Solution

Thursday, 19 May 2011

Page 120: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Local Files

Thursday, 19 May 2011

Page 121: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Local Uploads

Thursday, 19 May 2011

Page 122: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Writing to /tmp

Thursday, 19 May 2011

Page 123: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Store on S3 or a networked FS

Solution

Thursday, 19 May 2011

Page 124: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Serve up static files from CDNs

Solution

Thursday, 19 May 2011

Page 125: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Servers can vanish at any given time

Thursday, 19 May 2011

Page 126: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Internal APIs

Thursday, 19 May 2011

Page 127: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Application

S3GFS FS

Internal Storage API

Thursday, 19 May 2011

Page 128: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Application

MySQLMongo Cache

Internal DB API

Thursday, 19 May 2011

Page 129: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

SOA

Thursday, 19 May 2011

Page 130: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Service Oriented Architecture

Thursday, 19 May 2011

Page 131: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Sort of :-)

Thursday, 19 May 2011

Page 132: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Eventually Consistent

Thursday, 19 May 2011

Page 133: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

CAP Therom

Thursday, 19 May 2011

Page 134: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Consistency

Availability

Partition Tolerance

Thursday, 19 May 2011

Page 135: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Consistency

All nodes see the same data at the same time

Thursday, 19 May 2011

Page 136: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Availability

Node failures do not prevent survivors from continuing to

operate

Thursday, 19 May 2011

Page 137: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Partition Tolerance

The system continues to operate despite arbitrary message loss

Thursday, 19 May 2011

Page 138: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Consistency

Availability

Partition Tolerance

Thursday, 19 May 2011

Page 139: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Queue Systems

Thursday, 19 May 2011

Page 140: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Good for

Thursday, 19 May 2011

Page 141: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Good forImage Processing

Thursday, 19 May 2011

Page 142: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Good forImage Processing

Distributed Logs

Thursday, 19 May 2011

Page 143: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Good forImage Processing

Distributed Logs

Data Mining

Thursday, 19 May 2011

Page 144: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Good forImage Processing

Distributed Logs

Data Mining

Mass Emails

Thursday, 19 May 2011

Page 145: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Good forImage Processing

Distributed Logs

Data Mining

Mass Emails

Intensive transformation

Thursday, 19 May 2011

Page 146: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Good forImage Processing

Distributed Logs

Data Mining

Mass Emails

Intensive transformation

Search

Thursday, 19 May 2011

Page 147: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Common Tools

Thursday, 19 May 2011

Page 148: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Common Tools

Gearman

Thursday, 19 May 2011

Page 149: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Common Tools

Gearman

Hadoop

Thursday, 19 May 2011

Page 150: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Common Tools

Gearman

Hadoop

Zero MQ (0MQ)

Thursday, 19 May 2011

Page 151: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Common Tools

Gearman

Hadoop

Zero MQ (0MQ)

RabbitMQ

Thursday, 19 May 2011

Page 152: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Common Tools

Gearman

Hadoop

Zero MQ (0MQ)

RabbitMQ

And many others!

Thursday, 19 May 2011

Page 153: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Gearman

Thursday, 19 May 2011

Page 154: Scale like an ant, distribute the workload - DPC, Amsterdam,  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

Thursday, 19 May 2011

Page 155: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

A Story!

Thursday, 19 May 2011

Page 156: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Financial Software

Thursday, 19 May 2011

Page 157: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

3000+ Clients

Thursday, 19 May 2011

Page 158: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Each one has 5 external data sources

Thursday, 19 May 2011

Page 159: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Each data source is a web service

Thursday, 19 May 2011

Page 160: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Ran every 6 hours every day

Thursday, 19 May 2011

Page 161: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Cron

1

2

3

4

5

Job 1

Gearman

1

43

2

5

Web Services Processing

Thursday, 19 May 2011

Page 162: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

But! That wasn’t enough

Thursday, 19 May 2011

Page 163: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Job kicked off on login

Thursday, 19 May 2011

Page 164: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Another Story!

Thursday, 19 May 2011

Page 165: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

CloudSplit

Thursday, 19 May 2011

Page 166: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Near Real Time Cloud Analytics

Thursday, 19 May 2011

Page 167: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Clients install logging agent locally

Thursday, 19 May 2011

Page 168: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

syslogd

Thursday, 19 May 2011

Page 169: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Public API

Thursday, 19 May 2011

Page 170: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Multiple Persistent Gearman Servers

Thursday, 19 May 2011

Page 171: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Internal DB API

Thursday, 19 May 2011

Page 172: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Agent

Thursday, 19 May 2011

Page 173: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Agent syslogd

Thursday, 19 May 2011

Page 174: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Agent syslogd

API

Thursday, 19 May 2011

Page 175: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Agent syslogd

API

Load Balanced

Thursday, 19 May 2011

Page 176: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Agent syslogd

API

Gearman

Gearman

Load Balanced

Thursday, 19 May 2011

Page 177: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Agent syslogd

API

Gearman

Gearman

Load Balanced

PersistentThursday, 19 May 2011

Page 178: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Agent syslogd

API

Gearman

Gearman

Worker

Worker

Worker

Load Balanced

PersistentThursday, 19 May 2011

Page 179: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Agent syslogd

API

Gearman

Gearman

Worker

Worker

Worker

Internal API

Load Balanced

PersistentThursday, 19 May 2011

Page 180: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Agent syslogd

API

Gearman

Gearman

Worker

Worker

Worker

Internal API

Load Balanced

Load Balanced

PersistentThursday, 19 May 2011

Page 181: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Agent syslogd

API

Gearman

Gearman

CouchDB

Worker

Worker

Worker

Internal API

Load Balanced

Load Balanced

PersistentThursday, 19 May 2011

Page 182: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

CouchDB Setup

Thursday, 19 May 2011

Page 183: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Write vs Read

Thursday, 19 May 2011

Page 184: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Writes

Thursday, 19 May 2011

Page 185: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Writes

Multi Master setup

Thursday, 19 May 2011

Page 186: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Writes

Multi Master setup

Replicated

Thursday, 19 May 2011

Page 187: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Writes

Multi Master setup

Replicated

Deals with writes only

Thursday, 19 May 2011

Page 188: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Writes

Multi Master setup

Replicated

Deals with writes only

Thursday, 19 May 2011

Page 189: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Reads

Thursday, 19 May 2011

Page 190: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Reads

Multi Master setup

Thursday, 19 May 2011

Page 191: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Reads

Multi Master setup

Replicated from write cluster

Thursday, 19 May 2011

Page 192: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Reads

Multi Master setup

Replicated from write cluster

Slaves handle website requests

Thursday, 19 May 2011

Page 193: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Reads

Multi Master setup

Replicated from write cluster

Slaves handle website requests

Thursday, 19 May 2011

Page 194: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Heavy Map/Reduce usage for data

Thursday, 19 May 2011

Page 195: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Supervisord

Thursday, 19 May 2011

Page 197: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Map/Reduce

Thursday, 19 May 2011

Page 198: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Map

Thursday, 19 May 2011

Page 199: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Map

Master gets a problem to solve

Thursday, 19 May 2011

Page 200: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Map

Master gets a problem to solve

Breaks into multiple sub-problems

Thursday, 19 May 2011

Page 201: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Map

Master gets a problem to solve

Breaks into multiple sub-problems

Distributed to multiple workers

Thursday, 19 May 2011

Page 202: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Map

Master gets a problem to solve

Breaks into multiple sub-problems

Distributed to multiple workers

A worker can take the same steps

Thursday, 19 May 2011

Page 203: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Map

Master gets a problem to solve

Breaks into multiple sub-problems

Distributed to multiple workers

A worker can take the same steps

Answer passed back to Master

Thursday, 19 May 2011

Page 204: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Reduce

Thursday, 19 May 2011

Page 205: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Reduce

Takes in answers from the map workers

Thursday, 19 May 2011

Page 206: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Reduce

Takes in answers from the map workers

Combines together to get an answer

Thursday, 19 May 2011

Page 207: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Reduce

Takes in answers from the map workers

Combines together to get an answer

There can be multiple reducers

Thursday, 19 May 2011

Page 208: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

process petabytes of data in few hours on commodity server farm

Thursday, 19 May 2011

Page 209: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

CouchDB

Thursday, 19 May 2011

Page 210: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

CouchDB

Thursday, 19 May 2011

Page 211: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

CouchDB

Highly Concurrent

Thursday, 19 May 2011

Page 212: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

CouchDB

Highly Concurrent

Schema free, document based

Thursday, 19 May 2011

Page 213: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

CouchDB

Highly Concurrent

Schema free, document based

RESTful API

Thursday, 19 May 2011

Page 214: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

CouchDB

Highly Concurrent

Schema free, document based

RESTful API

Map/Reduce Views

Thursday, 19 May 2011

Page 215: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

CouchDB

Highly Concurrent

Schema free, document based

RESTful API

Map/Reduce Views

Easy Replication

Thursday, 19 May 2011

Page 216: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Hadoop

Thursday, 19 May 2011

Page 217: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Hadoop is a framework for running applications on large clusters of commodity hardware.

Thursday, 19 May 2011

Page 218: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 219: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

The Hadoop framework transparently provides applications both reliability and data motion

Thursday, 19 May 2011

Page 220: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 221: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Uses Map/Reduce concept to farm out work

Thursday, 19 May 2011

Page 222: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 223: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Distributed FS to handled node failure automagically

Thursday, 19 May 2011

Page 224: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 225: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Join 2 datasets together of a significant size

Thursday, 19 May 2011

Page 226: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 227: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

500 GB worth of log files with a large location dataset

Thursday, 19 May 2011

Page 228: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ØMQ

Thursday, 19 May 2011

Page 229: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ØMQ

Thursday, 19 May 2011

Page 230: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ØMQ

Async Message System

Thursday, 19 May 2011

Page 231: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ØMQ

Async Message System

Thin and lightweight

Thursday, 19 May 2011

Page 232: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ØMQ

Async Message System

Thin and lightweight

High Performance

Thursday, 19 May 2011

Page 233: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ØMQ

Async Message System

Thin and lightweight

High Performance

Simple

Thursday, 19 May 2011

Page 234: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

ØMQ

Async Message System

Thin and lightweight

High Performance

Simple

Scalable

Thursday, 19 May 2011

Page 235: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 236: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

One socket can load balance to multiple end points

Thursday, 19 May 2011

Page 237: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 238: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Multiple end points can be funnelled into a single socket

Thursday, 19 May 2011

Page 239: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 240: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Handle deployments to multiple servers

Thursday, 19 May 2011

Page 241: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 242: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Scale is an example of that

Thursday, 19 May 2011

Page 243: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 244: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Mongrel2 is a web server that uses it in a similar way as fastcgi

Thursday, 19 May 2011

Page 245: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 246: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Move around text (JSON) and Binary data for real time communication

Thursday, 19 May 2011

Page 247: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Thursday, 19 May 2011

Page 248: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Could have replaced syslogd and the external API in my previous example

Thursday, 19 May 2011

Page 249: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Code time? :-)

Thursday, 19 May 2011

Page 250: Scale like an ant, distribute the workload - DPC, Amsterdam,  2011

Questions?

[email protected]: @h

Joind.in: http://joind.in/3212

Thursday, 19 May 2011