Some thoughts on scalability
In the kickoff meeting of the Architecture Working Group Zero presented several scalability objectives: a platform that could support 60 million regions, 2 billion total users, and 50 million concurrently connected users. These objectives reflect Zero's frequently stated intention to "instill a deep sense of platform" in the AWG.
One way to achieve the desired scalability objectives is to create a large number of independently hosted regions. As proof, consider how the current Web scales: any organization (or individual for that matter) can run an HTTP server and publish content. As of October 2007 Netcraft reports more than 140 million web servers surveyed on the public Internet (with countless additional servers deployed inside corporate firewalls). Scalability of the Web occurs largely because each server is independent of others.
Although Second Life could scale to meet Zero's targets by creating a number of independent regions (or a large number of independent copies of Second Life itself), there are implicit objectives that affect scalability as well.
- The number of regions that share a common set of user identities
In the Web every organization typically implements an identity service to track its customers; e.g. I have distinct accounts at web sites hosted by Amazon, Ebay, ESPN, and CNN. Multiple attempts have been made to federate identity across multiple sites with relatively little success. In contrast, wireless carriers have established roaming agreements that tie customer billing records together across multiple domains; my identity as stored in my SIM card enables the carrier hosting my roaming cell phone to bill my primary carrier for the minutes I use.
The extent to which my identity scales (that is, the number of regions over which my identity is known) will determine the extent to which my avatar can move transparently among regions. (And by the way, this is really hard.)
- The number of users that can concurrently share a single region
The number of concurrent users in a single region (sim) right now is less than 100 (much less for practical use). Scaling the number of concurrent users opens the potential for many new applications including concerts, conferences, business meetings and large sporting events.
If we generalize the notion of "concurrent users in a region" to mean the number of users that can interact with each other at a single event, then it becomes a bit easier to define the expected behavior. If fifty-thousand people attend a baseball game, they all watch the same game, they see each other, they share a common interest in the outcome of the game, and operate within the same space. The shared social experience is what differentiates interactions in a virtual world from a simple webcast. However, rich social interactions generally only occur with others who are nearby. Scaling the number of users at an event can leverage user expectations to maintain a reasonable experience.
Early "large" Web events like coverage of the 1998 Winter Olympics in Nagano enabled literally millions of people worldwide to remotely "participate" in the event (just a reminder: that was only five years after the Mosaic was launched). What would it take to scale a virtual world to handle that kind of traffic?
- The number and complexity of objects in a region
- The complexity of behavior of objects
How many objects can have scripts? What can scripts control about objects? How difficult is it to define new behaviors?