OK, so Interoperability & Portability between Cloud Computing platforms may not sound like the most interesting subject in the world (and frankly saying it without getting tongue tied is hard enough!), but it’s turning into a seriously hot topic at the moment.
The cloud computing industry is still in its infant stage (yes really!), even with everyone and their mum now calling their service cloud computing these days. (Buzzwords, gotta love em.)
One of the major factors that will start to hold it back as time goes on is inability to move swiftly and easily between different platforms. Without this ability customers feel locked in and thus much more hesitant to try and use cloud computing. This applies throughout the various *aaS’s that relate to cloud computing (software, hardware, infrastructure, platform etc), but as you can imagine my main focus is on hardware/infrastructure.
Building your entire application so that it can only work on one cloud is foolish, and it’s irrelevant who’s cloud that might be – if you are locked in, what do you do when things go wrong? If the cloud has specific features that no-one else has, or has a particular niche or audience (SalesForce is the first one that comes to mind), then I can certainly see the sense in that, although you should still be able to pull all of your data out in an easy and legible way. However, when it comes to hardware/infrastructure, why would you want to be locked in?
We have several customers now who are splitting their infrastructure between ourselves and Amazon EC2/S3, and we think this is brilliant, as the customers can scale either up or down as needed, and have removed their reliance on one platform. This is a great example of how having (nearly) interoperable systems enables customers in general to be less scared of moving to a new technology, which is great for everyone involved as it means the industry can and will grow quicker than it would do if it was only a handful of individual companies providing distinct services that weren’t compatible with each other.
We are sticking a flag in the ground and saying that Interoperability and Portability are absolutely key to the future development of the cloud computing industry, and we as a company will be doing everything we can to promote this, including open sourcing various parts of our technology as we grow to help standardise the technology, and using existing open source standards and technology wherever possible.
Having a standard API so people can work automatically with your systems is certainly a good step (and frankly, fundamental to any cloud computing platform), but it doesn’t make a platform truly open. This was the subject of conversation at Structure 08 where myself and Jason Hoffman from Joyent debated with Christopher Bisciglia from Google on whether BigTable from Google (as used in Google App Engine) is open. (He says it is, we say it isn’t!).
It will also be mentioned in a debate between Jeff Barr (from Amazon Web Services) and myself at FoWA this October. The schedule for FoWA is “here“, and for those of you reading this that haven’t heard of FoWA, it’s *the* most relevant expo/conference for web/application developers in the UK (and it’s also great fun). If you get the chance to go, jump at it!
Our current platform is already built on established and well regarded standards (you can port an application to it from a traditional dedicated server as fast as you can copy the files, no other work to be done), however, there’s still a lot of innovation going on in this area. So from now on, wherever possible we will be open sourcing or giving as much public information as we can on how our platform works. We’ll even be releasing some code that will work with and aid interoperability with other platforms in an effort to promote standardisation, though of course we’ll have to keep some bits to ourselves
Watch this space……….
Tony.
August 22, 2008 at 12:50 pm |
Well you know my opinion on this, open source it all
August 30, 2008 at 2:16 pm |
Nice point that core system arleady is open-source
it’s Xen
Management tools…that’s difference. Everyone use their own bred.
I would like in sometime in future have to code something like this in my application:
(greatly simplified pseudocode)
function AllocateAdditionalProcessingPower(int RamPerNode,int MinCPUPerNode,int MaxPriceOfCPUHour,float SLALevelRequired,)
{
Set providers=getCurrentCloudProvider().MetaCloud().GetAllRegisteredProviders();//query metabase of cloud providers(they are interconnected after all)
providers.filter_by(RamPerNode,MinCPUPerNode);
providers.filter_by_SLA(SLALevelRequired);
providers.sort_by_price(MaxPriceOfCPUHoru,Ascending);
providers.filter_by_special_requirements(DistroSupported,”CentOS5_3_default”)
CouldProvider provider=providers[0];
//may be we are not registered with them yet
//briefly get CC details from our bank(or our central service,TODO)
bool arleady=provider.establish_relationship(“ACME LTD DEPARTMENT NO 1404″,SecureCall::GetCreditCardCardDetails())
VM destVM=provider.createVM(vmspec)
provider.startVM(destVM)
provider.execSSH(“yum…..”)
//now also clone control monitor to this provider in case it wasn’t where
if (!arleady)
if (provider.fork_vm())==0)
{ //now this cloned copy is running on new provider’s VM(possible a minute later)
….
}
else
{
//and this original of monitor program continue his work
}
}
FULLY automated (i.e. in regular life of VM it’s possible that it will be NEVER need to call customer service at all)
wait, or can I arleady do so if I wrap EC2,FlexiScale,GoGrid and NewServers APIs?
(hmm,on next thought, NewServers will require manual scans of documents several days after and GoGrid’s billing is sometimes flaky)
but that about storage support?and snapshots,etc