You might think that the word "Cloud" is tired because it gets used to promote any kind of Internet application and service. I've been using diagrams that show the Internet as a cloud with connections sticking out of it, ever since it took its modern form almost 20 years ago. So, what's fresh about this idea? Why do I find it so exciting? Why am I going all-in for cloud computing?
The vague concept has been around for decades, and it is still a doozy. A "Cloud" is a bag of stuff that is out there, in no particular place, but you can reach into it whenever you need it, or as they say "on demand". You can apply this to servers, to apps - features and capabilities - or as we do at Assembla, to team members that are there when you need them. A cloud resource should be globally accessible, and hosted, so you don't have to worry about how to get to it or maintain it. The idea that we can rub our laptop and summon out of the smoke a powerful genie, a huge bag of resources, is emotionally intense. That's why "Cloud" is such a great marketing term.
To me, "cloud" has a more specific meaning. A "cloud" is a bag of virtual servers that you can get on demand. This is a relatively new idea. After a long and obscure gestation as "grid computing" and "utility computing", Amazon Web services created the mass market just a few years ago.
In my experience, this way of selling servers (virtual servers, on demand) has some important benefits for those who build and manage online applications.
Benefit 1) Increased speed of development and product delivery
If you can get a server quickly, you can test new software and new configurations quickly, and you can deploy them quickly.
Benefit 2) Increased reliability
When we moved from dedicated servers to cloud servers (currently with Amazon EC2), we found that our reliability and uptime increased. On the dedicated host, we had runs of bad luck - a disk failing and then another, a cable "accidentally" disconnected, and even an incident where a power room blew up and took out 9000 servers. That's life. Stuff happens. We lost two Amazon servers this month for unexplained reasons. But, in a dedicated environment, it takes a lot longer to recover. Let's look at the ways that on-demand virtual hosting can increase reliability.
If you can fix and improve your app rapidly, then it will be more reliable than an application which takes a long time to fix. So, increased reliability is an important side effect of benefit 1- increased development speed.
Furthermore, if you have access to on-demand servers, you have access to a big pool of failover devices.
Plus, you have access to servers for scaling. If your app scales to handle load, rather than crashing or clogging, it is more reliable.
Finally, you have a lot more practice configuring replacement servers, so they are more likely to work when you need them. In the old days, you didn't build your productions servers very often, and it was a big deal to build a new one. Often, it took a lot of tweaking, and some luck. That's scary if you need one in a hurry. In the virtual hosting environment, you have two choices that eliminate the risk. You can save an image, and just restore it when you need it, the same as the last image that you restored. Or, you can make a script that builds the server. You have access to servers on demand, so you can practice running the script whenever you want, and get it working correctly.
NOTES
Are cloud servers cheaper or more expensive? That really depends on what you are using them for. If you have a stable production installation, then dedicated servers are often cheaper, especially on a per-server basis. However, you need to buy almost twice as many dedicated servers as on-demand virtual servers, because you need a failover device for everything. In the cloud environment, you need far fewer failover devices, because you can start new devices when you need them.
Not all vendors sell their servers "on demand", but they know it's important. They are getting better at it, and I think we will see a lot more choices in this market.