TechWeb

Cloud Programming? Ready, Set ... Yow

Mar 25, 2011 (08:03 PM EDT)

Read the Original Article at http://www.informationweek.com/news/showArticle.jhtml?articleID=229301116


Clouds today come in two basic flavors: the private cloud (wholly behind the firewall) and the public cloud, which runs on remote hosts. The private cloud currently enjoys IT management's attention, because taking lots of individual servers, putting them into a pool, and parceling out their capabilities as needed has tremendous advantages for the data center. Of these, none is more prominent than the ability to scale up resources when projects demand and back down again when the need declines.

Private clouds require little programming change. Instances of virtual machines are spun up from an administrative console, the application is migrated, and, by and large, it works as expected.

The public cloud--whose leading hosts include Amazon, Google, and Microsoft--is a different thing altogether. Code can't be migrated simply to these hosts and expected to work correctly. It won't. Google's App Engine, for example, allows only a select list of core Java classes to run on its platform. If your code relies on a proscribed class, your app won't run there.

Moreover, each platform uses its own unique datastore, which doesn't run at all like conventional relational database management systems. (Microsoft Azure does offer a "cloudified" version of its SQL Server database product as an option.) So, if you plan to run applications in the public cloud, you'll have to invest considerable effort either porting existing code or writing new apps. Doing so will reveal a second problem: No two platforms use the same API. So, from the get-go, you'll be coding to a proprietary platform, with all the constraints that implies.

This problem is widely acknowledged, but efforts to provide a universal API, such as the Simple Cloud API, have garnered little enthusiasm from cloud hosts. This puts IT in a bind. If you're considering using the public cloud, therefore, run extensive pilots before committing to a platform, and know the platform's limitations and costs intimately before making it the basis of an important app. You're likely to be residing there a long time.

Andrew Binstock is the executive editor of Dr. Dobb's. He can be reached at alb@drdobbs.com.