gilles dubuc - barcelona facebook developer garage

Post on 18-Nov-2014

2.088 Views

Category:

Economy & Finance

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Speaker: Gilles Dubuc

non-profit ad network

non-profit ad networklessons learned

(daily active users)

Why create a non-profit ad network?

BigAppInc.

SmallAppLtd

advertisement$$$

PequeñoAppSL

advertisement$$$

PetiteAppSARL

(daily active users)

Why create a non-profit ad network?

come on in,you’ll make a quick buckBigApp

Inc.

SmallAppLtd

advertisement$$$

PequeñoAppSL

advertisement$$$

PetiteAppSARL

(daily active users)

Why create a non-profit ad network?

come on in,you’ll make a quick buckBigApp

Inc.

SmallAppLtd

already has a userbase andsells ad space to other application makers

advertisement$$$

PequeñoAppSL

advertisement$$$

PetiteAppSARL

(daily active users)

Why create a non-profit ad network?

come on in,you’ll make a quick buckBigApp

Inc.

SmallAppLtd

already has a userbase andsells ad space to other application makers

advertisement$$$

PequeñoAppSL

advertisement$$$

all hope that they’ll grow big enough to sell ad space to smaller application makers

PetiteAppSARL

Why create a non-profit ad network?

photo credit: khalid almasoud

The idea

App

Donation pool

App

App

Text

X clicks donatedY clicks received

f(x-y) = priority

The idea

App

Donation pool

App

Applications share userbase growth

App

Text

X clicks donatedY clicks received

f(x-y) = priority

The idea

App

Donation pool

App

Applications share userbase growth

Developers distribute “growth credit” among their applications

App

Text

X clicks donatedY clicks received

f(x-y) = priority

(daily active users)

(daily active users)

(daily active users)

(daily active users)

• Open source

(daily active users)

(daily active users)

• Open source

• Non-profit

(daily active users)

(daily active users)

• Open source

• Non-profit

• Aimed at application cross-promotion

(daily active users)

(daily active users)

• Open source

• Non-profit

• Aimed at application cross-promotion

• Accessible through an API

(daily active users)

(daily active users)

• Open source

• Non-profit

• Aimed at application cross-promotion

• Accessible through an API

• Started in October 07

On average 100 applications are part of the cross-promotion pool

(daily active users)

(daily active users)

CTR

(daily active users)

(daily active users)

CTR

(daily active users)

(daily active users)

developercheating

CTR

(daily active users)

(daily active users)

developercheating

averagearound 0.12 %

A few lessons learned

(daily active users)

A few lessons learned

(daily active users)

A cross-promotion network won’t make your app’s whole growth, but it’s a nice supplement

A few lessons learned

(daily active users)

Making it open source doesn’t mean other developers will help

A cross-promotion network won’t make your app’s whole growth, but it’s a nice supplement

A few lessons learned

(daily active users)

Making it open source doesn’t mean other developers will help

A cross-promotion network won’t make your app’s whole growth, but it’s a nice supplement

Be careful of people trying to take advantage

A few lessons learned

(daily active users)

Making it open source doesn’t mean other developers will help

A cross-promotion network won’t make your app’s whole growth, but it’s a nice supplement

Be careful of people trying to take advantage

Planning scaling is important

caching & scaling101

caching & scaling101being prepared for overnight growth

Distributed caches in a nutshell

• Clustered caches let you store data in a server’s RAM

Distributed caches in a nutshell

• Clustered caches let you store data in a server’s RAM

• The most popular ones act like hashmaps

Distributed caches in a nutshell

• Clustered caches let you store data in a server’s RAM

• The most popular ones act like hashmaps

• Access is blazingly fast compared to a database, but you lose the advantage of advanced queries

Distributed caches in a nutshell

• Clustered caches let you store data in a server’s RAM

• The most popular ones act like hashmaps

• Access is blazingly fast compared to a database, but you lose the advantage of advanced queries

• Deploying a cluster of distributed cache nodes is straightforward and requires minimal configuration

Distributed caches in a nutshell

Distributed caches in a nutshell

Cache::set($key, $value, $expiry);

Cache::replace($key, $new_value, $expiry);

Cache::get($key);

Cache::delete($key);

Cache::increment($counter);

Improve your application’s scalability with caching

Identify the static (or mostly static) elements of your pagesi.e. the leaderboard of your game

Instead of pulling the leaderboard’s data from the database every time, make a cron job generate it into the cache

Then pull the data from the cache when end-users request it instead of querying the DB

Improve your application’s scalability with caching

Storing your objects into the distributed cache

class User {private $user_id;private $score;

[...]

private function saveIntoCache() {Cache::replace(“User-”.$user_id, $this);

}}

Improve your application’s scalability with caching

Common pitfalls

Be very careful of invalidating the cache at the right time

Improve your application’s scalability with caching

Common pitfalls

Be very careful of invalidating the cache at the right time

If counters are needed as part of some objects, these need to be stored in the cache in addition to the object

Improve your application’s scalability with caching

Common pitfalls

Be very careful of invalidating the cache at the right time

If counters are needed as part of some objects, these need to be stored in the cache in addition to the object

Concurrency issues

Improve your application’s scalability with caching

Common pitfalls

Be very careful of invalidating the cache at the right time

If counters are needed as part of some objects, these need to be stored in the cache in addition to the object

Concurrency issues

Always assume that the cache might fail

Improve your application’s scalability with caching

Common pitfalls

Be very careful of invalidating the cache at the right time

If counters are needed as part of some objects, these need to be stored in the cache in addition to the object

Concurrency issues

Always assume that the cache might fail

Memcached crashes inexplicably from time to time, setup a mechanism to restart it automatically

• Design your architecture with more than one server in mind

• Design your architecture with more than one server in mind

• Use the right tools

• Design your architecture with more than one server in mind

• Use the right tools

• Know these tools like the back of your hand

• Design your architecture with more than one server in mind

• Use the right tools

• Know these tools like the back of your hand

• Caching is your swiss army knife

an application’s karma

an application’s karmabalancing between quality and “viral” growth

source: adonomics.com

(daily active users)

(daily active users)

Viral growth debunked

source: adonomics.com

(daily active users)

(daily active users)

Viral growth debunked

source: adonomics.com

(daily active users on “mobile” application)

Aiming at growth vs aiming at quality

source: adonomics.com

Where to stand?

--------------------------------------------------Fear Love

Where to stand?

--------------------------------------------------Quickgrowth

Qualityproduct

top related