Network effects refer to aspects of a system that enable users to receive greater value as the number of users goes up. Phones are a classic example of a network effect. The more people that own phones the more people I as a subscriber can call. Utility computing has several potential network effects, although some of them are dependent on the implementation choices made by the owner of the system. The most interesting network effects will be related to sharing of applications and knowledge.
For instance, although it isn’t explicitly spelled out, for a system to meet our definition of utility computing, the applications that run on it must be portable. This is a complete departure from today’s methodologies where software is more or less glued to hardware. The implication, though, is that for the first time I can easily share entire multi-tier applications as a single entity. No longer is it necessary to deal with dozens of tar files, building servers and a network to bring up a second copy of an application; just copy and run.
Assume for a moment that you’re the CIO of a mid-size manufacturer and you’ve contracted me as an outsourcer to write a semi-custom scheduling application for your firm. You may even have chosen me because you know I’ve done similar work for other firms. If I’m using traditional methods of development and deployment we’ll negotiate terms, requirements and costs for weeks, I’ll write code for sample screens and perhaps six to eight weeks after the first contact you’ll see the first samples of what the application will look like. However, utility computing makes it possible for me to share existing applications with you. All I have to do is send you pointers and you can start copies of applications I’ve completed for previous clients even though they take several servers. You can try them in your office, with your staff, at your own pace. Then, during our first meeting you can let me know what you like and I can take notes on needed changes.
Another possible network effect will be the sharing of operational data on infrastructure software like web servers, database engines, or application servers. Imagine if every copy of software you integrated into your application came equipped with live counters indicating how it’s operating in every application in which it’s being used. How many copies are being run, in how many different applications, number of hours logged in total, number of failures, and even number of reported hacks could all be reported. Perhaps even a rating system from past users. Such data would be extremely useful but simply isn’t available today. However, with utility computing, all software is run by the system, so such metrics become easily available.
At the end utility computing isn’t simply about saving money or time – it’s about a smarter way of doing things.