To node or not to node? Uber Scaling on node.js


    1. Needed single process, Single thread to avoid duplicate message signalling (two cabs one cup :p)
    2. Architecture iOS/Android clients => “CN” node.js messaging proxy, “dispatch” node.js cluster, “API” node.js cluster, mongoDB persistence.
    3. California, North East, North West clusters each with “Master Slave Slave” redundancy ”no request left behind” if a thread hangs or fails just respawns.
    4. Max production CPU spike 1.4% :)
    5. Failures => Xml memory leak, Cascading failures, Http Connection limits
    6. Rabbit MQ for messaging and long running background process.
    7. Mongo has been “ridiculously” stable 90,000,000 GPS logs (even with javascript version)