9 anti-patterns for node.js teams

Software

jeff-harrell
The present document can't read!
Please download to view
1
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Description
9 anti-patterns for teams moving to node.js. Learn from the experience we've had in adopting node.js at PayPal.
Text
  • 1. 9 anti-patternsfor node.js teamsJeff [email protected]
  • 2. Node first went live on paypal.com in 2013.Since:• 35 apps live (marketing, signup,account, payments, etc).• 400 new JavaScript engineers• 500,000 npm installs per day (internally)Made a good deal of mistakes to learn from
  • 3. Anti-pattern #1Baggage from your previous technology
  • 4. • "Node doesn't support x. It won’t work"• “How do I deal with npm version conflicts?”• “Can’t let the app restart. It takes too long”
  • 5. Leave your baggage behind."!Except when you’re flying
  • 6. Anti-pattern #2Monolithic applications
  • 7. • Use an internal npm instance• Publish modules vs. embedding functionality• Don’t overload modules – compose themPrefer different user, credit card and bank modulesAvoid a single “shared” module
  • 8. Build with many blocks, not one."
  • 9. Anti-pattern #3Googling “How to do x in JavaScript”
  • 10. • jQuery results dominate search engines• Understand ES5• Be aware of what’s coming in ES6
  • 11. Learn JavaScript before diving in."!
  • 12. Anti-pattern #4Handling errors
  • 13. • Use an Error object, not a string• Throwing is for programmer errors• Restart on uncaught exception vs ignoring it
  • 14. Error cases are hard."!Make sure to deal with them
  • 15. Anti-pattern #5Wrapping everything in promises
  • 16. • Use for the right reasons (not throw or waterfall)• Modules should expose callback interfaces• Use promises sparingly in hot code27% of CPU time spent in promise execution
  • 17. Callbacks."!Seriously
  • 18. Anti-pattern #6Git URLs in your package.json
  • 19. • Git URLs don’t fully leverage semver• Weird caching issues• Unstable state (akin to force overwriting in npm)
  • 20. Publish to npm."!Set it up internally and use it
  • 21. Anti-pattern #7Sloppy async code
  • 22. • Understand control flow patterns• Don’t create crazy waterfallsHoist functionsUse promises (appropriately)Use async• Callback with code afterwards, but no returnif (true) {callback();}fallback();
  • 23. Use good async patterns."!Queue funny mis-ordered async sentence
  • 24. Anti-pattern #8Having node do everything
  • 25. • SSL termination should be done by nginx• Heavy encryption is not for node• Don’t bind directly to port 80/443“How do I enable gzip?”“How do I add an SSL cert to my app?”
  • 26. Best tool, meet job."!
  • 27. Anti-pattern #9Ignoring the node ecosystem
  • 28. • npm has a wealth of pre-written code• Get updates from community, e.g. Node Security• Conferences like this
  • 29. Embrace your new community."!Warning: May contain drama
  • 30. Thanks!"!Q&A is over drinks later!
  • 31. Photo Credits1. https:[email protected]/268023465/2. https:[email protected]/14205159881/3. https:[email protected]/3921008904/4. https:[email protected]/59027300385. https:[email protected]/523497824/6. https:[email protected]/113694992/7. https:[email protected]/4304137088/8. https:[email protected]/5189290606/9. https:[email protected]/1852428153/
  • Comments
    Top