Auditing Distance Michele Deering-Volz Maxime Dubuc Carl Robinson.
Gilles Dubuc - Barcelona Facebook developer garage
-
Upload
kouiskas -
Category
Economy & Finance
-
view
2.087 -
download
1
description
Transcript of Gilles Dubuc - Barcelona Facebook developer garage
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