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.
Adam Gross, Salesforce.com's vice president of developer marketing, offers a word of caution to developers pondering the cloud: Developers need to understand about the providers they are choosing. "They should develop their applications in such a way that they could be moved off that platform," Koomen says. Google enables such mobility by supporting the popular Python language and the Django Web framework, he says, and is working on open source uploading and downloading tools for moving data in and out of App Engine.