7. Boy meets girl, boy looses girl, boy recovers
true love.
–Gerrald Mast, The Comic Mind: Comedy and the Movies,
1973
8. The new cliché
• Boy builds a monolith quickly (because MVP)
• Boy bloats the monolith with features
• Boy makes a big ball of mud
• Boy rewrites the system using small services
• Boy cannot shut up about it at conferences
23. Small services are
Node.js’ sweet spot
There is a reason for the hexagon icon (you know, bee
hive?)
24. Monolith antibodies
It takes a gigantic effort NOT to arrive at a micro-service
system using Node.js
25. Node.js is a great candidate
• Miserly on the resources
• Component model + NPM
• Great test and build tools (e.g. JSHint, Mocha,
Grunt)
• Easy to write (and completely rewrite)
27. No budget for big
outages
Need to fix and evolve the system in mid-flight
28. Node.js is a great candidate
• Services start and stop in seconds
• Tools to keep the services up (e.g. PM2)
• PaaS-friendly (we use Bluemix)
• Clustering is great for rolling deploys
33. Advantages
• No wasted requests (are we there yet?)
• Resiliency (fire and forget)
• Safety valve
• Loose coupling of services
• Enables server push
35. Node.js is a great candidate
• Great support for MQ protocols (MQTT, AMQP)
• Async processing of incoming messages
• Great support for WebSockets (server push)
37. Concerns
• Apply extra capacity where it matters
• Evolve the system as needed
• Vertical vs horizontal scaling
• HA vs scaling
38. Node.js is a great candidate
• Single threaded event loop
• ‘Share nothing’ from day 1
• Local clustering to use multiple cores
• Load balancing across VMs for horizontal
scaling
40. Truth in advertising
Other people develop micro-services using Java/Netty or
Scala/Akka or Go
41. Node.js is (still) a great
candidate
• Browsers running JS give Node.js an edge
• Express or Hapi make API services easy
• NoSQL DBs with JSON (JS all the way down)
• Developer happiness
42. (More) Truth in
advertising
We have some battle scars to show
43. Legal hates us
You want us to vet how many modules again?