We've all heard the complaints: providers are abusing the word "cloud" to market their services; this abuse is perpetuated by customers who don't know what cloud really is; and then so and so platform is not "true cloud".
Those who make these statements (let's call them "misguided cloud fundamentalists") often define an alternative set of requirements for cloud infrastructure-as-a-service platforms. Misguided cloud fundamentalists expect:
These expectations that actual cloud application developers have is supported by definitions of "cloud" by standards organizations. As DomainBop helpfully pointed out in another thread, the National Institute of Standards and Technology in the United States provides a much more reasonable definition of cloud computing:
(Note that Digital Ocean, Vultr, and many other services labeled "fake cloud" by misguided cloud fundamentalists in fact provide these features.)
Indeed, there are no providers to my knowledge that provide the sort of "cloud" that misguided cloud fundamentalists desire. Achieving failover with sub-second downtimes necessitates the usage of primary-backup replication systems like Remus. Do you know any providers using Remus? I certainly don't. Similarly, scaling up/down VMs without a reboot generally requires a container-based virtualization technology; cloud application developers generally prefer fully virtualized machines as they offer greater isolation, customizability, and infrastructure-level features (i.e., it's easier to support live migrations, distributed disk storage, primary-backup failover, and virtual networking when the kernel itself is virtualized).
(As far as I know (the documentation isn't very clear), most container-based live migration require suspension of processes while the filesystem and other VM state are being migrated. On the other hand, block migration in KVM does a streaming copy where we copy the disk online until the source/destination are synchronized. Similarly, connecting with block storage like Ceph RADOS cluster is simply unheard of.)
Personally, I think all attempts to define "cloud" (and thereby restrict it's meaning) are flawed. First, even the most reasonable of definitions (including NIST's above) are made useless by the fact that cloud computing covers three distinct service models (as mentioned in the definition): software services like DuckDuckGo and Reddit, platform services like Heroku and Google App Engine, and infrastructure services that we usually talk about on this forum. Second, academics only use the term "cloud" to refer to a broad set of ideas like horizontal scalability, fault tolerance, and high availability in a distributed system; not with any specific technical definition. That's what "cloud" really is, a broad set of ideas.
Third, and most importantly, no one cares. Definitions are supposed to be accepted by the majority. If the majority uses "cloud" in a different and overly broad way, then the definition must change and broaden.
But ah, who can go against the "true definition" of cloud?
What do you think?
Those who make these statements (let's call them "misguided cloud fundamentalists") often define an alternative set of requirements for cloud infrastructure-as-a-service platforms. Misguided cloud fundamentalists expect:
- VM's disk to be distributed across multiple host nodes (or even geographic locations)
- Quick failover when the host node goes offline
- Easily scale up/down the VM without downtime or reboot
These expectations that actual cloud application developers have is supported by definitions of "cloud" by standards organizations. As DomainBop helpfully pointed out in another thread, the National Institute of Standards and Technology in the United States provides a much more reasonable definition of cloud computing:
Here, NIST is arguing ("on-demand self service", "rapid elasticity") that the most important feature of a cloud platform is on-demand, automatic horizontal scalability, i.e., we can provision and destroy virtual machines on the fly via an API. Nothing is said about the reliability or availability of individual virtual machines.Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model promotes availability and is composed of five essential characteristics (On-demand self-service, Broad network access, Resource pooling, Rapid elasticity, Measured Service); three service models (Cloud Software as a Service (SaaS), Cloud Platform as a Service (PaaS), Cloud Infrastructure as a Service (IaaS)); and, four deployment models (Private cloud, Community cloud, Public cloud, Hybrid cloud). Key enabling technologies include: (1) fast wide-area networks, (2) powerful, inexpensive server computers, and (3) high-performance virtualization for commodity hardware.
(Note that Digital Ocean, Vultr, and many other services labeled "fake cloud" by misguided cloud fundamentalists in fact provide these features.)
Indeed, there are no providers to my knowledge that provide the sort of "cloud" that misguided cloud fundamentalists desire. Achieving failover with sub-second downtimes necessitates the usage of primary-backup replication systems like Remus. Do you know any providers using Remus? I certainly don't. Similarly, scaling up/down VMs without a reboot generally requires a container-based virtualization technology; cloud application developers generally prefer fully virtualized machines as they offer greater isolation, customizability, and infrastructure-level features (i.e., it's easier to support live migrations, distributed disk storage, primary-backup failover, and virtual networking when the kernel itself is virtualized).
(As far as I know (the documentation isn't very clear), most container-based live migration require suspension of processes while the filesystem and other VM state are being migrated. On the other hand, block migration in KVM does a streaming copy where we copy the disk online until the source/destination are synchronized. Similarly, connecting with block storage like Ceph RADOS cluster is simply unheard of.)
Personally, I think all attempts to define "cloud" (and thereby restrict it's meaning) are flawed. First, even the most reasonable of definitions (including NIST's above) are made useless by the fact that cloud computing covers three distinct service models (as mentioned in the definition): software services like DuckDuckGo and Reddit, platform services like Heroku and Google App Engine, and infrastructure services that we usually talk about on this forum. Second, academics only use the term "cloud" to refer to a broad set of ideas like horizontal scalability, fault tolerance, and high availability in a distributed system; not with any specific technical definition. That's what "cloud" really is, a broad set of ideas.
Third, and most importantly, no one cares. Definitions are supposed to be accepted by the majority. If the majority uses "cloud" in a different and overly broad way, then the definition must change and broaden.
But ah, who can go against the "true definition" of cloud?
What do you think?
Last edited by a moderator: