Do they really think that their silly little architectures that support 500 users concurrently is somehow more challenging than implementing an architecture that supports 2 million concurrent?
It is a damn good point. The playground for these applications is different, but the same issues arise. I’ve played a few online games in my day and have seen the ups and downs of their implementations. I think I’ll throw in my opinion on two of the items for comparison, performance and security.
Damn Lag Killed Me
I can tell you right now that James understates the performance issue. When the games started coming out, and they were rare, lag was accepted as a fact of life. We hated it, but we didn’t know any better. We also were dealing with modems and blamed all the the data coming down to the client. To the user, the environment would stop updating and then the game would shutdown. Inside the game, the MOBs (the critters) would see a nice juicy target ready for revenge. Going LD (link death) is still a problem for users today.
Then came high-speed internet. Then came the need to get the latest video card in order to handle some of the intense graphics processing on the client-side. Performance issues on the server-side became more obvious and pretty much killed some games. Why play a game if you are just going to get killed because the server fries? Code had to be improved, communication improved, and servers scaled out. When you are in an environment where you have to correctly track over 100 users in your immediate vicinity in order to decide your next action, you can’t afford any delays.
Let’s look at an enterprise application. A two second screen change is actually considered good. Something that would lead to the death of my character at the hands of a horde of wood imps is actually acceptable. I don’t see that changing unless the paradigm of system design changes.
Right now, Enterprise applications are delivered via the web. Games have FAAAAT clients. They consume several Gigs (6+) on the hard drive. They are also memory hogs. Just futzing around in a game can churn 350+ MB. All of this, plus one kickin’ video card, is what gets you most of your performance.
Users and managers have been asking for web interfaces for their Enterprise applications for over a decade now. The presentation layer begins to eat at server resources and forces more data to be sent to the user. When it gets to the client machine, the application is dependent on a third party browser, of which vendors have to support multiple to keep their potential market happy.
Did I mention that Enterprise application must work on both Windows, UNIX, and Linux systems while the gaming servers just have to work? Game vendors can put together their server farms how ever they want and on anything they want. It just as to perform.
If vendors where allowed to put light-weight clients on end-users computers, then we could start to see some performance and start to really focus on the other performance lessons from the gaming world.
Exploits for Money
Security is where there are massive lessons to be learned. You have a client that limits what a user can submit in terms of input. It must then be processed on the client before being sent to the server. There are a lot of things that are determined on the client. The question is securing that communication so that the information the server receives is accurate.
Look at the audience for the games. A healthy number are technical in nature. Even if only 1% of the player base were technically inclined, that leaves thousands of capable people that have something to gain by hacking the system. Who doesn’t want to be the most powerful player? You can even make money by being good in the game.
There are lessons to be shared here.
Using what We Learn
While a lot of what these game companies develop can’t be applied to Enterprise Software due to the need to support everyone and keep the CTOs of the world happy, internal development project can benefit. From there, organizations can begin to realize that in order to get some of the gains they crave, they need to change their approach to how applications are deployed.
Users have big fat client machines that are under-utilized. Don’t give those resources to Vista, give them to your Enterprise.