This is relevant to newScale as we already connect to a variety of provisioning systems and Run Book Automation tools. And clouds. Specifically, we use our RequestCenter product internally to provision and manage our growing Amazon Cloud offering.
We call this, drinking our own champagne! Other vendors call it "eating your own dog food;" I guess they know more about what they are selling.
All joking aside, we also have products for VmWware. This don't work on Amazon. I've been looking for a cloud provider to host them and so far have not had much luck. But once I do, I need to provide the same level of automation so we are planning on vCloud.
So it would make my life easier if we had a standard API to all these clouds. Alas, we are not quite there, though for some limited functionality, there is some very encouraging progress.
This is for a couple of very good and valid reasons.
First, the offerings are evolving at a very fast pace. There's a lot of great innovation. So any API that tries to abstract offerings is always going to be a behind going native. When Amazon added spot pricing, that is not a trivial API to implement. And as API developer, Amazon doesn't give you any notice. So Sunday your API is good, Monday is far behind.
On the other hand, from what I've seen, there's pretty much agreement on calls like "start instance," "stop instance" But not on "snapshot instance" because not all cloud providers offer snapshots (yet). I like Adrian's Turing Test:
1. Instance lifecycle. The lifecycle defines the basic commands to provision, start, stop, and terminate instances. The bare-bones of a compute service.
2. Shared images. While it is possible to bootstrap from plain OS images created by the cloud service provider, the ability to build your own customized image, and crucially to share it with others provides a social element that helps drive adoption of a cloud platform.
3. Instance metadata. This feature allows you to inject small amounts of user-specific metadata to each instance at boot time - e.g. secret keys, or custom boot parameters - which allows another level of customization. This feature works well in conjunction with shared images: the common non-user specific code is baked into the shared image, and the user-specific code is supplied at launch time as metadata.
4. Network controls. Cloud providers need to think about the network environment that the user's instances run in. Offering such services as DNS, firewalling, VPNs (and exposing it via an API) makes it easy for developers to get started quickly without having to build this infrastructure themselves.
Second, compute is but one element of cloud automation, as someone (Rightscale CTO?) writes on Jclouds.
The real benefit of standards would be around the semantics of resources like vlans, security groups, reassignable IP addresses, network attached block storage devices, etc. But vendors today barely support these and if they do they have quite different semantics from one another that reflect different underlying architectures and also use-cases.
Which is right. There's a lot more to providing cloud computing than just providing compute power.
Start instance is but one element of the API call we use at newScale. We also need to decide which offering (we use our service catalog), for which customer and where (we use our LifeCycle Center product for that and integrate that data from SF.com) and various other configurations questions like domain name, IP, security group, back up schedule, monitoring level, and of the most important one for us -- Length of subscription!
As cloud matures and a set of services becomes baseline, I believe we'll see cloud API's increasingly able to describe enough major elements to be useful. But it can never be 100% -- vendors will differentiate (which is good for them) and innovate (which is good for us).
Now this API discussion does presume there's one way to do this. At newScale, we've worked out a different approach.
This approach, nicely benefits from standardization too, but does not require API standardization to support multiple clouds. I'll write about in my next blog.
Meanwhile, I've just received notice from Amazon EC2 that I've been upgraded to 100 instances in EU! So more champagne drinking will happen today.
Recent Comments