A few things on my to-do list.
1/ Implement cluster API - http://nodejs.org/api/cluster.html
Can we get a simple demo application working with cluster based deployments on ft platform?
Some notes here - https://gist.github.com/jedi4ever/6079180
Clustering seems useful for, a) using multiple processors on the same machine, b) not having to rely on doing a forever restarts when you deploy, c) no-downtime deploys, and possibly d) dynamic scaling.
or http://blog.keithcirkel.co.uk/load-balancing-node-js/ - perhaps it's not the answer right now?
2/ Profiling and instrumentation
Node on FT Platform doesn't give us a huge amount of information about what it's doing - cpu, memory, leaks etc. so would be useful to investigate what information we can get from the boxes and expose it.
Eg, http://blog.nodetime.com/2012/07/detecting-memory-leaks-in-nodejs-apps.html
Likewise, the presentation tier is going to be very dependent on making HTTP calls to the service layer but contains no instrumentation by default (dns lookup time, response times).
3/ Express is ok but largely feels like syntax sugar over the base node stuff. Plus it feels like at the end of it's life time.
What would a simple node HTTP server from scratch look like? What are we missing out on?
4/ Offline build processes are horrible. We should aim to make everything dynamic, on demand.
5/ Dependencies. Rhys had a nice idea for visualising npm dependencies, and changes, licenses, and general activity around our packages.
It freaks me out every time I run npm install
that we are wedded to hundreds of small, unvetted (?), modules without a clear idea of their status or whether they are maintained.
6/ Docker. See if this makes deployment simpler (or at least less about transfering and unpacking lots of little files).
Consider using Koa over express. Also I like Swig for templating.