> And no matter what application you implement, you're not likely to get many
> users of the test system. In order to test your scalability, you'll
> probably have to simulate them.
It doesn't work. The simulated users miss many of the very critical
features of real users. These are oddly distributed packet loss and
latency, disappearing clients, and buggy TCP stacks. But the big problem
is simply that simulated clients don't do the same things real clients
do.
Quote:> Suppose if he instead said he were
> implementing a scalable web server. That's clearly an application that
> needs to be able to scale well, but it will probably only get enough users
> to tax it when put into production use by a popular site. As an academic
> exercise, the chat server is no better or worse than this.
My experience doesn't agree with this, though it may seem intuitively
correct. A web server has a much smaller command set and generally has
connection that don't continue for as long. This makes it much easier to
simulate realistic web traffic.
Quote:> In other words, what you're really saying is that there's no way to learn
> to implement a scalable server, because it's never going to get enough use
> while you're just learning. So should he just give up?
There really is no good way to learn to implement a scalable server
other than actual deployment. However, if that's not an option, you
should definitely start with something that's easy to test. A Web server
is a very good suggestion because there are at least decent load
generators for it.
DS