While more and more developers are using the cloud for development, not all of them know what they are getting into. Key issues to consider are: choosing which platform to use, bandwidth, standards, security concerns about data, and the integrity of data.
When developers chose the cloud, they invariably choose that layer of the cloud known as Platform as a Service (PaaS). Two of the best-known and widely used platforms are Google AppEngine and Amazon EC2.
The other layers of the cloud are APIs and data.
In terms of PaaS, Google, Amazon and others have taken advantage of the commoditization of hardware (and related software) by building systems made up of a lot of cheap machines, said Rozlog, product manager for Delphi Solutions at Embarcadero Technologies, a provider of tools for developers and database professionals.
The benefits of this commoditization are that the entire infrastructure continues to work even if individual machines break, and developers can virtualize dozens of hundreds of machines very quickly, said Rozlog.
"Google and Amazon (to name just two vendors) have enormous infrastructures that they can rent out to developers very cheaply," he said. "For example, Amazon charges as little at 2 cents per hour for micro-on-demand instances. Users pay only for what they use. There is no minimum fee."
The major advantage of cloud computing is being able to quickly turn applications on and off and to elastically grow your computing power on an as-needed basis.
Google's and Amazon's cloud infrastructures, are quite different. Google's AppEngine is more of a platform for developing Java Web applications. Amazon's EC2 offering is less of a development platform and more of a generic infrastructure service that hosts virtual machines (which can be Linux- or Windows-based) on which you can run anything you'd like.
Amazon also offers structured data storage with its SimpleDB service. SimpleDB allows structured data to be saved and queried through a Web services interface.
The second layer of the cloud - the APIs - is a rich area that developers can mine easily and quickly, said Rozlog.
Wikipedia defines a cloud API as "a mechanism by which software can request information from one or more cloud computing platforms through a direct or indirect interface into a Cloud Computing Platform."
While there are many examples of cloud APIs, there are two broad classes - those created by cloud providers and cross-platform APIs. The cross-platform ones attempt to abstract the details of cloud provider implementations so that a developer writing an application only has to call a single API to get a response regardless of the back-end cloud.
Cloud APIs can perform infrastructure, service or application functions or some combination.
"What these APIs provide are lots of time-saving, money-saving ways to do things that would be a big pain or impossible otherwise," said Rozlog.
For all its many benefits, the cloud is not without its share of concern, even negatives for developers.
The main concern for most developers and companies is: will my data be safe?
"Concern over data security stops many developers from putting their data in the cloud," said Rozlog. "From what I've seen, very few companies entrust their data to the cloud, and those do entrust it, entrust a very small amount of it."
While sensitive or personal information about customers or patients is clearly the biggest security issue, companies are also concerned about the safety of non-sensitive but valuable data.
An example of the latter is aggregate information about users and how they use an application.
Who is accessing data in the cloud is not the only thing to worry about, he notes. The integrity of the data is a concern for developers. Machine failure has to be expected, so it's crucial that data can be backed up and restored in case of failures.