Update 7/2/2009:
Now Google App Engine supports Java, which was at the top of a lot of developers’s wish lists.
Original Post:
The cloud hype is maxed out. Every company is rolling out their cloud initiative. Every analyst thinks the cloud is the future. Every developer wants to add the cloud to their resume. Every CIO wants to be leveraging the cloud to save money.
However, nobody really knows what the cloud is. Just like in the late 1990’s, when everyone was a web service expert but nobody had the same technical definition of what a web service was. I’ve used Amazon’s cloud, which gives developers a virtual machine login and also a special way to store data. I’ve used the Google cloud, which gives developers a way to deploy web apps with Python. I’ve used the Slicehost/Rackspace cloud, which is like the Amazon cloud, but cheaper and without the data storage. My employer, Sun Microsystems, is rolling out a cloud API that will define a different kind of cloud. If the cloud is the future, shouldn’t we first agree on what it is?
If I could define what the cloud should be, I would say that it should be a place where I can deploy any application written in any language with any IDE. I should have the freedom to make it available to anyone on the internet or make it securely available only to my corporate intranet. It should be infinitely scalable (which is impossible, but should be scalable to the point that a well written application could keep growing to support hundreds of thousands of users.) I want to be able to pay for storage, bandwidth, processing, and memory units with no minimum and be able to scale up and down instantaneously by moving a dial on a website up and down. I want to receive an email when any of the parameters I’m paying for reach 90% capacity so I can scale up and down. I want to have easy integration with content delivery networks like Akamai.