Event-driven systems, written carefully, and running on capable hardware, are hard to beat on performance metrics. This is why node.js is so popular these days.
Interestingly, this was the programming model used by the Inktomi Traffic Server (http://en.wikipedia.org/wiki/Tra…), which smoked all competitive benchmarks for proxy servers when it ruled the roost during the last dot-com boom.
But what a difference a decade makes.
Building an event-driven infrastructure is hard
Writing an event loop, establishing conventions, building debugging tools, testing and refining – this takes a lot of time, effort, and indeed, tons of intellectual capital. At Inktomi, we built all of this up from scratch, and trust me, there were furious technical “discussions”, especially when integrating with the many upstart startups that were acquired and assimilated.
Training engineers on event-driven programming is hard
No one teaches event-driven programming at school, it’s still all procedural, except for a few exotic classes on functional programming. When new engineers were hired at Inktomi to work on the core event-driven system, a lot of training and mentoring was involved to make sure they didn’t stall the system by, say, trying to do too much when reacting to a given event, stalling the system.
So, ironically, the prevalence of AJAX has trained a whole cadre of frontend engineers to write highly performant backend code (within the context of an event-driven system of course).
Writing high-performance systems for big-iron is hard
How do you squeeze the most performance from big-iron systems? Easy – use an infrastructure that is supposed to blaze on the very lowest-end of machines, and then give it gigs of memory and tens of cores of CPU!
Then, we take that same infrastructure, and with Node.js, run it on server-class hardware! All the micro-optimization done to the runtimes, running on a 1000x more powerful computer – is it any surprise that node.js rocks out AWS EC2?
In a decade, by a quirk of history, we’ve ended up with a whole cadre of event-driven programmers, a highly performant, well-tested runtime for event-driven programming, and brought both of them together to build a whole new generation of server technology. It’s like Back to the Future!