With App Engine, developers uses Google's Big Table data store for persistent storage. "Big Table is not a SQL database, and the reason for that is because some of the functionality supported by SQL databases -- for example, joins -- make it very difficult to split a database across multiple machines," Koomen says.
"With our system, we've exposed a programming model where denormalization is encouraged from the start," with developers storing data in multiple places at the same time, he said. The benefit is that this approach lets apps run very efficient queries, Koomen says.
Koomen gives a thumbs-down on using relational databases in cloud environments: "What we found is that in very high-traffic situations, relational databases are extremely difficult to manage, and that ends up being a huge money and resource sink for developers."
Get used to rapid change in the cloud
Model Metrics, a consulting company, has implemented applications on Salesforce.com and other clouds. It has found that a major difference between cloud-based application development and Web and client-server development is that "things change much more rapidly in the cloud," says CTO John Barnes.
Salesforce.com, for example, offers new releases several times a year, and each upgrade might have something a developer wants to take advantage of, Barnes says. "As a developer, you need to stay abreast of those developments, keep an eye on a lot of the different blogs and also participate in Webinars," he advises.
Developers also should be aware of different design patterns such as eventual consistency, in which a change to an application might not register for a few milliseconds. "The consequence of that is that you can't utilize a database to keep track of the next value," Barnes says. "People have to program slightly differently when they're utilizing the cloud because of things like that," he adds.
You can let go of most plumbing concerns in the cloud
But the use of loosely coupled Web services offered on the cloud makes it an easier development platform, Barnes says. Developers can focus on innovation and business logic instead of worrying about plumbing and infrastructure such as the operating system and hardware, said Barnes. The Salesforce.com Force.com cloud, for example, offers security, workflow, administration, and load-balancing.
Model Metrics had a client that originally planned to build a college admissions application on Microsoft's .Net platform but found that it was three to four times cheaper to develop on Force.com, due in great part to its use of pre-built functionality, Barnes says.
Other cautions for developers in the cloud
Developers, however, need to keep in mind the differences between cloud platforms and licensing models, too, Barnes says: Different clouds have different pricing schemes.