Does node.js encourage a new design paradigm?

I was discussing node.js with one of the guys here at WhereCampEU. My question is whether using node.js affects how you design an application and not just that it speeds it up. The initial benefit of an event-based framework as that tasks can be sped up. Basically, if you built a web app without considering the architecture you might grab a web framework and a MySql database server and happily build the functionality that is required. Database servers are pretty good at handling throughput, but if your app gets really popular you may hit the dreaded 'run out of database connections' error. Fine you say, just increase the number of connections, and then the size of the server's memory. A lot of the time this will (and has up to now) worked just fine. Something like node.js would mean that you never hit this problem….but then again, most people never even considered that it is a problem that they would have. The people who really face these problems frequently are games developers. I had been demonstrating Frontierville to people at lunch as they hadn't seen it. They have had to cope with a huge quantity of data transfer and it is really important that the front-end doesn't lag. One answer is that it doesn't actually matter that the current screen view is 100% accurate, the front-end knows that I have 10 actions left to do, so won't attempt to send > 10 to the server, but I don't need to know the result from the server immediately before attempting the next action. A second example is multi-player car racing games. It doesn't matter if that car in your wing mirror is 3cm to the left of where the server knows it actually is. What does matter is that the cars keep moving in real time. The game can ease the oppenent car back into the correct path when you are updated with its actual position. This brings a (slightly) new paradigm of inaccurate representation and catching up with the server later. It seems to me that node.js is enabling just this sort of systems thinking and that it does mean that you need to design your application differently.

It's All In The Game blog (c) 2005-16 by Jez Nicholson