Scalability Lessons

Danny MacAskill's Imaginate

Beyond 10K 40k requests/second

Your Host Tonight

Image source: my 5 yo daughter

Software engineer at MediaSmart Mobile

alexfernandez, @pinchito, alejandrofer

Freelance scalability consultant

What We Do

Serve mobile ads

Performance campaigns

40K+ requests / second

10M+ impressions / day

35+ servers

10+ countries


Image source: Stupid Zombies 2

We help pay for your entertainment

From the particular to the abstract

  • Scalability with Node.js

  • Technical Challenges

  • Effective Engineering in the Cloud

  • Messaging and Caching Are your Friends

  • Zen of Scalability

Scalability with

What Is Scalability

Serve an increasing numbers of requests

  • with increasing resources

  • without degradation

  • cost-effectively

Is Node.js Fast?

Define ‘fast’

Source: GodTIC (Spanish)

So Why Node.js?

Asynchronous, event-driven, non-blocking

Focus on concurrency, not performance

Node behaves very linearly:

Double the load, double the resources

Smooth learning curve

Few surprises

70K+ Modules to Choose From


Ruby down, Maven ~ one month away

Scale Up vs Scale Out


Image source: Rama

Image source: ZDNet

Linearity Rules!

Source: MediaSmart Mobile

Technical Challenges

Image source: usvsth3m

Keep Up with Business

Keep business happy!

And we will be happy as well

Callback Hell and Back

Escape the callback pyramid

Use named functions, not lambdas

Use events as they were meant to be

Would you bet your business on promises?

(Sorry about that)

Waiting for GENERATORs

Image source: Dr Electric

But are generators Really cool?

Perhaps not...

Unpaid Technical Debts Accumulate

Image source:

Developments go slower

Your code runs slower

Managing Technical Debt

Business Goes First

Do not scale too soon

... and definitely not too late!

Keep lists of what you owe

and repay it as you go along

Don't let performance issues accumulate

Effective Engineering


Image source: Beao

in the Cloud

Load Testing

Gather data instead of opinions

Two kind of tests:

Measure requests per second

... and then correct by a given factor

Test to See Where It Breaks

Image source: MythBusters

And do not be afraid to work on production if needed


DYOD: do your own deployments

Deploy as often as possible!

Monitor after deploying!

Monitor everything!

Send alerts

Avoid False Alarms

Image source: Laughing Squid

Send only necessary alerts

Messaging & Caching

Are Your Friends

Humanity's Greatest Inventions

Image source: Josh Linkner

Beware Swiss Army Knives

Remote Caching

Humanity's best invention

for scalability

Cache everything everywhere!

Locally and remotely

Memcached + node-memcached

  Redis + redis driver

Database-Crowding Architecture

Memcached Architecture


Humanity's second best invention

for scalability

Ideal for async processing

Remove work from online processing

and aggregate it

RabbitMQ + node-amqp

           Redis + redis driver

Sample RabbitMQ Architecture

Sample Redis Architecture

Redis has different access patterns

Zen of Scalability

Image source: CloudBees Blog

Locks are Evil


No exceptions

            Source: Haretz

Search for lock-free solutions

Smash those Bottlenecks

Scalability is about removing bottlenecks

Possible Bottlenecks

  • CPU (obviously)
  • memory
  • disks
  • network interfaces
  • system buses
  • connections
  • messaging
  • latency
  • simultaneous requests
  • frontends
  • backends
  • <insert your own here>: throttle down traffic


Is the sign of a bottleneck

Beware the Thundering Herd

... and beware the self-sustaining stampede!

Avoid Unbounded Tasks

First order of business: bound your tasks

Set a target for optimizations

You Found the Cause...

Image source: glee wiki

Now look for the real cause!

Root Cause Analysis

Do root cause analysis immediately and fully

Farther away from symptom → less effective

Work on symptoms if needed

Why? why? why? why? why?

(The five whys)

Improve Your Wheels

Reinventing the wheel is stupid

Image source: Michael Covel

Building improved wheels is great!

$6500 Wheels

Image source: Tesla Motors

Be Humble

The world doesn't care about your feelings

You cannot win an argument with reality

Unverified opinions are useless

(specially your own)

Accept facts and collect data

One More Thing

The great menace to progress is not ignorance

but the illusion of knowledge.

Daniel J. Boorstin

The teacher gets the most out of the lessons,

and the true teacher is a learner.

Elbert Hubbard


And now...

Image source: livluvcreate


Thanks Again!

Oh and by the way...

We're hiring!

Scalability Lessons (Updated)

By Alex Fernández

Scalability Lessons (Updated)

Presentation for MadridJS, Jul 12th 2014 Madrid.

  • 3,128

More from Alex Fernández