Standardizing Cloud APIs Is Useless
March 09, 2011
In a session on open source in the cloud at the Cloud Connect show in Santa Clara, Calif., Randy Bias of Cloudscaling dropped a bombshell of a statement: "API's don't matter." What Bias was really asking was, "What role do standards play in cloud computing?" With a wry smirk, Bias went on to explain that mimicking Amazon's APIs, for example, is useless if providers don't have the ability to deliver all of the features and functions of Amazon's service, including the things you don't see like reliability and scaling. Of course APIs matter, but having a functional standardized cloud service management API doesn't and, I'd argue, never will.
An API boils down to a contract between those who created the API and those who use the API. It doesn't matter if the API is for a development library or a service. The API developer promises that if you make a method call properly, the API will consume the request or data and then do something with it. Just because Russell Crowe can play mathematician John Nash in the movie "A Beautiful Mind," it doesn't mean that Russell Crowe is a mathematician. What matters when trying to solve a problem involving game theory is that you find someone like Nash who can work the problem, rather than someone like Russell Crowe who can only pretend to do so.
What's important about an API is that there is an easy way to use it. In the cloud world, RESTful APIs, SOAP, Web services, and so on allow providers to expose their systems in ways that others can use. The cry for cloud service management standards--standards that define a common API for service interaction--doesn't yet make sense. The discipline is too young to know what needs to be standardized and what core set of cloud service features should be standardized. It's easy to say, "Standardize the method call to instantiate a new VM," but what are the required features to do that? Selecting an OS or VM image? Setting the number of NICs, CPU or RAM? Requiring special hardware like a GPU or crypto processor? Geographic location? What about OS language?
Some or all of these might be important for you but not for others, so should all of these be standardized? Wait, some group can create a standardized schema supporting a common namespace, as well as custom namespaces similar to RADIUS attribute dictionaries or SNMP MIBs (both of which are a whole 'nother world of hurt). Then you need a way to discover the available capabilities that a service offers and address any missing requirements you may need, which has to happen whether there are standards or not.
What is important with cloud standards is that providers have well-defined, robust APIs using foundational, standards-based protocols and data formats such as HTTP transport and XML-formatted files, and not developing industrywide, high-level, functional schemas and methods. The goal of IT standards is for products and technologies to foster interoperation. If standards can't result in interoperation, then the standard is useless. Developers and integrators need a way to work with the existing features and functions of a service. Everything else is distraction.