I’ve been “in cloud” for over 13 years (@dmcrory and I submitted patents using it starting in 2001) and I’m continually amazed at how complicated people want to make it.
For my role at Dell, I’m continually invited to seasons of meetings to define cloud, cloud architecture and cloud strategy. The reason these meetings go on and on is that everyone wants to make cloud complicated when it’s really very simple.
Cloud is infrastructure with an API.
That’s it. Everything else is just a consequence of having infrastructure with an API because API provides the ability to provide remote control.
What else do people try to lump into cloud? Here are some of my topic cloud obfuscators:
- (inter)network. Yes, networks make an API interesting. They are just an essential component but they are not cloud. Most technologies are interesting because of networks: can we stop turning everything networked into cloud? Thanks to nonsensical mega-dollar marketing campaigns, I despair this is a moot point.
- as-a-service. That’s another way of saying “accessible via an API.” We have many flavors of Platform, Data, Application, Love or whatever as a Service. That means they have a API. Infrastructure as a Service (IaaS) is a cloud.
- virtualization. VMs were the first good example of hardware with an API; however, we had virtual containers (on Mainframes!) long before we had “cloud.” They make cloud easier but they are not cloud.
pay-as-you-go (service pricing). This is a common cloud requirement but it’s really a business model. If someone builds a private cloud then it is still a cloud.
- multi-tenant. Another common requirement where we expect a cloud to be able to isolate users. I agree that this is a highly desirable attribute of a good API implementation; however, it’s not essential to a cloud. For example, most public clouds do not have true network isolation model.
- elastic demand. IMHO, another word for API driven provisioning.
- live migration. This is a cool feature often implemented on top of virtualization, but it’s not cloud. We were doing live migrate with shared storage and clusters before anyone heard of cloud. I don’t think this is cloud at all but someone out there does so I included it in the list.
- security. Totally important consideration and required for deployments large and small, but not presence/lack does not make something cloud.
We start talking about these points and then forget the whole API thing. These items are important, but they do not make it “a cloud.” When Dave McCrory and I first discussed API Infrastructure as “cloud,” it was driven by the fact that you could hide the actual infrastructure behind the API. The critical concept was that the API allowed a you to manage a server anywhere from anywhere.
When Amazon offered the first EC2 service, it had to be a cloud because the servers were remote. It was not a cloud because it was on the internet; plenty of other companies were offering hosted servers. It was a cloud because their offering
allowed required operators to use and API to interact with the infrastructure. I remember that EC2′s lack of UI (and SLA) causing many to predict it would be a failure; instead, it sparked a revolution.
I’m excited now because we’re entering a new generation of cloud where Infrastructure APIs include networking and storage in addition to compute. Mix in some of the interesting data and network services and we’re going to have truly dynamic and powerful clouds. More importantly, we going to have some truly amazing applications.
What do you think? Is API a sufficient definition of cloud in your opinion?
PS: Yes, if you have a physical server/network/store that is completely controllable by an API then you’ve got a cloud on your hands.