10 years ago, ASP (or Application Service Provider) model was the hottest thing in Silicon Valley. All sorts of names were into play - incumbents were soon followed by stalwarts of the industry in delivering software services over the web. Like most fads, it didn't last long, however, it did pave the way for its new avatar - cloud computing.
So what's changed?
For one, The Internet. It's more ubiquitous than ever, albeit in it's broadband format (than the clunky dial-up or ISDN), making it possible for (more) users to have access to services in a similar, and more importantly, acceptable time frame. Thanks to bloatware Operating Systems, we are all used to waiting a few seconds for our apps to start up - and faster Internet access has made it easier for services to be delivered over the web.
Acceptance - put simply, we have all become used to accessing remote services, such as checking our bank accounts. Paying bills online. Every company has a website, and more importantly, an Intranet - a corporate portal with majority of services available over it. This in turn has becalmed the apprehensions of the business user.
Google, Amazon and Salesforce.com - while the last one in the last is the biggest name to survive from the ASP era, the offerings from Google and Amazon have been paving the way for the world to get used to cloud computing. Google App Engine provides you a free quota of services and infrastructure available to you for use (with more available on purchase). Same goes for Amazon EC2.
But really, apart from that, not much has changed. Cloud computing providers are building on the ASP era:
Flexibility and virtualization - most services (or service containers) are provisioned virtually. They could exist on one or more machines, or as dynamic partitions on server (basically, "logical" partitions of a CPU - so small services could use as little as 1/10th of a CPU). Virtualization, is another nebulous term - it could be a Virtual Machine, Full virtualization or hardware-assisted virtualization, hardware virtualization (such as that of memory or storage) or application virtualization. Fundamentally, this ensures the cloud providers do not dedicate resources to one customer or service. But that brings us to the next point. Oh, and virtualization allows for scalability as well.
Multi-tenancy - by definition, cloud computing resources are shared among services offered. Technology available today makes that possible, and more importantly, secure. VMWare virtual machines allow you to run multiple (and different) "guest" operating systems on your "host" machine. Solaris containers (including zones) allow for operating-system level, disjointed user "spaces".
Dynamic provisioning - Though often confused with cloud computing itself, this is installation and configuration of software or even hardware on-demand. Again, technology exists today to activate pre-installed, but not used, CPUs, create partitions (or containers) and configure a workload of choice - all done remotely. And when not required, all of it can be put back into the "available" pool.
Grid computing - Again, sometimes confused with cloud computing, grid computing is the ability to harness powers of more than one computer as a simple computer.
All these factors have changed the face users perceive computing, and made cloud more accessible.