Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Disassembling the Monolith: Taming Large Software Projects with Node.js

391 views

Published on

Software "Monoliths" are no longer in fashion. Everybody is extracting portions of their applications as "micro-services", and yet, few presentations cover exactly how to handle this.

Presented here are a few useful techniques for building distributed systems with Node.js.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Disassembling the Monolith: Taming Large Software Projects with Node.js

  1. 1. Disassembling the Monolith taming large software projects with @nicholaswyoung Nodevember, 2014 bit.ly/nodevember-2014
  2. 2. Who is this guy?
  3. 3. @nicholaswyoung radio host designer photographer ex-software developer extraordinarily busy person
  4. 4. originalmachine.com
  5. 5. I make compelling, educational radio programs (think of us as a slightly edgier NPR) photo credit: derrick clifton / medill photojournalism
  6. 6. machine.fm
  7. 7. DONE I love getting things
  8. 8. useless tinkering is unless it teaches us something
  9. 9. my passion isn’t writing code (I lost that years ago.)
  10. 10. my passion isn’t writing code for the sake of writing code
  11. 11. javascript I promise to show you some clever before we’re done here
  12. 12. “scalability”
  13. 13. “scalability” “Scalability is the ability of a system, network, or process to handle a growing amount of work in a capable manner or its ability to be enlarged to accommodate that growth.” - Wikipedia
  14. 14. “scalability” pain in the ass factor time
  15. 15. the year of explosions
  16. 16. Ruby a programmer’s best friend
  17. 17. slow runtime poor threading support concurrent long running tasks
  18. 18. slow runtime poor threading support concurrent long running tasks
  19. 19. not knockin’ it ruby is still awesome, in a lot of ways
  20. 20. but a lot of it needs to be rethought
  21. 21. file upload server processing store processed files in the cloud
  22. 22. file upload everyone does this server processing your thread is waiting store processed files in the cloud
  23. 23. while everything happens, your user thinks the app is doing nothing
  24. 24. with several users submitting large file uploads, our app grinds to a halt * only on one thread, sure, but that’s still bad.
  25. 25. why? because I built a monolith: public facing website feed generation embeddable, sharable player admin dashboard media analytics were all a single app
  26. 26. failed deploy = all services down
  27. 27. this sucks. it doesn’t mean ruby is inherently awful, but it didn’t work for our app.
  28. 28. “I believe Node is capable of delivering the same, if not better, results than Rails for any Web development task, although it's slightly less mature … and the conventions are less stable.…” - Sagi Isha, freelance web developer
  29. 29. var express = require('express') , api = express() , web = express() , server = express(); server.use('/', web); server.use('/api', api); server.listen(8000);
  30. 30. var express = require('express') , api = express() , web = express() , server = express(); server.use('/', web); server.use('/api', api); server.listen(8000);
  31. 31. encourages you to build small, interconnected applications that each tackle a specific domain.
  32. 32. CMS Feed Generation Embeddable Player Media Analytics Models Config Applications Dependencies
  33. 33. javascript let’s talk
  34. 34. common application stack • express • mongodb • zeromq
  35. 35. common application stack • distributor • storage • transport
  36. 36. DEMO
  37. 37. prototype relentlessly
  38. 38. break ByoEFuO bRuEild
  39. 39. what do I need? ask
  40. 40. operate can each function of your app discreetly?
  41. 41. Q&A ask me anything
  42. 42. @nicholaswyoung nicholaswyoung.com OriginalMachine.com Mixdown.co Machine.FM

×