I'm a bit too busy right now for putting together my usual meticulously crafted blog posts and random thoughts have found a good home at Twitter (@samj), so I thought I'd copy an interview this week with CBS/CNET/ZDNet on the emotive topic of cloud standards. As you know I'm busy putting the finishing touches on the Open Cloud Initiative and am one of the main people driving the Open Cloud Computing Interface (OCCI), where I'm representing the needs of my large enterprise clients... we're on track to deliver a nice clean cloud infrastructure services (IaaS) API next month as promised.
Anyway not sure when/if this will appear as I took a few days to respond, but here goes:
1. Regarding infrastructure-as-a-service: Does the infrastructure matter? Whether it's on Amazon's EC2 for example -- does it matter where your app is hosted?
Cloud infrastructure services (IaaS) should be easily commoditised (that is, where product selection becomes more dependent on price than differentiating features, benefits and value added services), but this is not yet the case. At projects like Open Grid Forum's recently launched Open Cloud Computing Interface (OCCI) we are fast working to make this a reality (potentially as soon as next month).
According to the Open Cloud Initiative the two primary requirements for "Open Cloud" are open APIs and open formats. In the context of cloud infrastructure services that means OCCI (a draft of which will be available next month) and OVF (which was released last month) respectively. These open standards will allow users to easily migrate workloads from one provider to another in order to ensure that they are receiving the best possible service at the best possible price.
In the mean time providers typically differentiate on reputation, reliability and value added features (such as complementary components like Amazon S3 and SQS and network features like load balancing and security).2. Regarding platform-as-a-service providers: What sort of tools would you require, and what tools/services would help sway your vote toward one platform over another?
Open standards (particularly for APIs and formats) are far more important for cloud platform services (PaaS) than any tools that a provider offers. The trend today (with providers like Amazon, Google, Salesforce and Aptana) is to extend the Eclipse software development platform. That said, I expect web based development environments like Mozilla Bespin to become increasingly popular - providers like Heroku are leading the charge here.
On the other hand cloud hosting offerings like Rackspace/Mosso's Cloud Sites could also be considered a cloud platform in that I can upload open source applications like Drupal and MediaWiki and they will take care of the scaling for me, billing me for what resources I use. I like this approach because I get the benefits of cloud computing but I could easily move to a competitor like Dreamhost PS becuase there is virtually no vendor lock-in.
Conversely, while an application written and optimised for Google App Engine will operate and scale extremely well there, it could be very difficult to move elsewhere thanks to the modifications they have made to the Python and Java runtimes. Note that many of these modifications are necessary to enforce security and scalability.For example, Sun is coming out with a platform stack for the cloud, which will give developers common services to hook their Java apps into. Is this something significant? What else would you like or need from providers?
That all depends on the environment they create and what interfaces they expose - a good test is how many existing Java applications will run on it without modification. Very few applications will run "out of the box" on Google App Engine but the modifications that need to be made should make the platform more scalable and cheaper overall than one running stock standard Java.
Sun's Simon Phipps sharply criticised Google earlier in the week, noting that "sub-sets of the core classes in the Java platform was forbidden for a really good reason, and it's wanton and irresponsible to casually flaunt the rules". That would lead me to believe that their offerings will be somewhat more compliant (and therefore enterprise friendly), but also somewhat more expensive.
One of the major sources of incompatibility here is the migration from relational databases (RDBMSs) to their cloud counterparts such as BigTable and SimpleDB. In order to enable massive scalability significant changes had to be made to core concepts and until we have an open standard interface for cloud databases (possibly following the examples of ODBC and DBI) interoperability at the platform layer will be challenging.I'm also writing to providers like Amazon and Microsoft, to see if they have anything to add. :)
Amazon are at the forefront of what I would call the "cloud operating environment". They offer a number of criticial "cloud architecture" components (most notably SQS queues and more recently elastic MapReduce services) which can be assembled together to create arbitrarily large, loosely coupled cloud computing systems.
Microsoft's Azure offering will also be interesting in that it is based on the Common Language Runtime. This will allow developers using their language of choice to target the platform, which has been something that has restricted Google App Engine to subsets of the developer community (first Python developers and now Java). It should in theory also be relatively straightforward to migrate from traditional architectures to their cloud platform.