I kicked off NodeSummit today with a short talk about where Yahoo uses Node, why we continue to use Node, and the practices that help us use Node effectively.
First talk of the day.
@reid kicking #nodesummit 2015 off w/ @Yahoo #nodejs knowledge pic.twitter.com/jbwButoghW
— Emily (@mle_tanaka) February 10, 2015
I spoke a bit about a project I’ve spent the last year on: using Node to handle data pushed out of Jenkins. Folks appreciated the honesty about Jenkins’ user interface.
https://twitter.com/phirephoenix/status/565199071044853761
Hilarious! @reid of @yahoo is honest of his feedback of Jenkins #nodesummit pic.twitter.com/8DWTGlv6tp
— Social AC (@SocialAC) February 10, 2015
Jenkins is the solution that we trust, but nobody loves using it. At Yahoo, we use Node to help us make Jenkins a bit better to use:
- scripting job creation, editing, deletion
- handling log messages
- displaying information about builds with a web interface
https://twitter.com/JeremiahLee/status/565232111171289088
Noted.
During the talk I mentioned something called RDL.
Felt a little out of my element at #nodesummit this morning until #RDLs came up 😉 😉 #girlswholift @p_svetlichny pic.twitter.com/GTQ791hZVi
— Heather Pujals (@pujalsheather) February 10, 2015
Nope, not the Romanian Deadlift. It’s something we call “Resource Description Language”, a machine-readable spec for web APIs. We started using it for some internal deployment APIs we worked on last month. This spec is transformed into hapi route configurations that contain detailed joi validators.
What’s great about this is that when you change the RDL, it changes the validators and comments which we present using the lout module. We do this by merging together existing hapi route objects using the RDL spec as the source of truth, so the hapi routes we have in code are validator-free and require the RDL as the source of truth. This has worked very well and our spec always matches the reality. This works a lot better than other systems that actually generate source code from RDL, which is not ideal because it cannot stay in sync as your code changes.
It’s been fun! I’ll also be on the “Scaling Business Critical Node.js Applications” and “v0.12 and Beyond” panels tomorrow, so check those out if you’re attending NodeSummit.