Microsoft, digging node
Node, GAINING A LOT OF
INTEREST
NEW JOBS are exploding
SERIOUS adopters
Source: https://github.com/joyent/node/wiki/Projects,-Applications,-and-CompaniesUsing-Node
AND NPM IS OUTTA CONTROL

2011...
~1800 projects

730 active package authors
26 npm contributors
version 1.0 released
AND NPM IS OUTTA CONTROL

2012...

72 npm contributors
version 1.1.35 released
WHY???
Source: http://venturebeat.com/2011/08/16/linkedin-mobile-app/
LINKEDIN:
Node drives the mobile stack
“On the server side, our entire
mobile software stack is completely
built in Node,”

KIRAN PRISAD
Source: http://www.slideshare.net/phegaro/linkedin-mobile-how-do-we-do-it
SCALE
“One reason was scale.”

KIRAN PRISAD
Great for io/bound cals
“The second is, if you look at Node,
the thing it’s best at doing is talking
to other services.”

KIRAN PRISAD
Great for io/bound cals
“The mobile app has to talk to our
platform API and database. We’re not
doing massive data analytics.”

KIRAN PRISAD
Huge perf gains
“Node showed us huge performance
gains compared to what we were
using before, which was Ruby on
Rails.”
KIRAN PRISAD
Source: http://www.ebaytechblog.com/2011/11/30/announcing-ql-io//
QL.io (EBAY): HTTP gateway
a declarative, evented, dataretrieval and aggregation gateway
for HTTP APIs

SUBBU ALLAMARAJU
Source: http://www.slideshare.net/phegaro/linkedin-mobile-how-do-we-do-it
What was important
• Performance and scale for i/o
bound workloads
• Operability
• Low per-connection memory
overhead
SUBBU ALLAMARAJU
• Dynamic language support
Fast interations
“Javascript and node.js allowed us
to iterate very rapidly.”

SUBBU ALLAMARAJU
rich ecosystem
“Though we were initially concerned
about finding the right tools and
libraries, the node.js ecosystem
proved sufficient for us to build as
complex a system as ql.io.”
SUBBU ALLAMARAJU
SuperB scale
“We were able to tune a regular
developer-quality Ubuntu
workstation to handle more than
120,000 active connections per
node.js process, with each connection
consuming about 2k memory.”SUBBU ALLAMARAJU
Non BLOCKING /
simplified programming
model

“Node’s evented I/O model freed us
from worrying about locking and
concurrency issues that are common
with multithreaded async I/O.”
SUBBU ALLAMARAJU
Source: http://venturebeat.com/2012/01/24/why-walmart-is-using-node-js/
Walmart: mobile strategy
In a nutshell, Walmart is able to
serve some very sophisticated
features to mobile users on the
client side using Node.

DION
ALMAER

BEN
GALBRAITH
Walmart: BETter
expErIENCe
“It’s saving mobile shoppers a ton of
time by customizing content based on
device type and browser
capabilities.”

DION
ALMAER

BEN
GALBRAITH
Javascript everywhere
progressive enhancement
“We’ve been fascinated for a long time by
end-to-end JavaScript,” …“a website that
would be rich and dynamic… on devices
that weren’t too powerful.”

DION
ALMAER

BEN
GALBRAITH
Javascript everywhere
progressive enhancement
“Now, on Walmart’s re-engineered Nodepowered mobile app, all the front-end
code gets executed on the back end.”

DION
ALMAER

BEN
GALBRAITH
Scale and flexibility
“We rely on services all over the
world…We do not control all of
those services.”

DION
ALMAER

BEN
GALBRAITH
Scale and flexibility
“Node allows us to front all these
services… and scale up very nicely.
It’s perfect for what we’re doing in
mobile.”

DION
ALMAER

BEN
GALBRAITH
Turner: Disruptive Thinking
“At Turner, Node.js represents a
disruption to the mainstream
thinking around how you build
applications.”

DON BROWNING
Turner: Disruptive Thinking
“We found developers were overengineering their code; writing code
for the sake of writing code. We
needed to shake things up.”

DON BROWNING
Turner: Startup Mentality
“We’re also starting to behave more
like a startup, rather than an
enterprise shop. Quick turn around,
no ceremony, and finding the
Minimum Viable Product.”
DON BROWNING
Turner: Startup Mentality
“We’ve found that being a part of the
open-source community really
facilitates this mindset.”

DON BROWNING
The node toolbox
What’s in npm?
API clients: 118
Boilerplates: 10
Build and deployment: 50
Chat: 1
Class systems: 11
Compression: 16
Content Management Systems: 14
Continuous Integration Tools: 3
Control flow / Async goodies: 78
CSS Engines: 12
Database: 137
DDD, CQRS, EventSourcing: 10
Debugging / console utilities: 75
Desktop application related: 2
File system: 13
Graphics: 39
IL18n and L10n modules: 17
JavaScript threads: 1

Message Queues: 15
Module Loader: 11
Monitoring and Alerting: 3
OpenSSL / Crypto / Hashing: 31
Other: 35
Package Management Systems: 7
Parsers: 135
Payment Gateways: 7
RPC: 19
SMTP: 11
Sound: 2
TCP / IP: 54
Templating: 65
Testing / Spec Frameworks: 75
Web frameworks: 213
Web Sockets & Ajax: 32
Wrappers: 8
Contact info
gblock@microsoft.com
@gblock

再见

Node Js

Editor's Notes

  • #42 http://www.flickr.com/photos/gregrk/1426969126/sizes/z/in/photostream/