For an application to be a true cloud application it must be dynamically scalable and one of the biggest current problems associated with cloud computing is “cloud washing” (also spelled cloudwashing).
Cloud washing is the purposeful and sometimes deceptive attempt by a vendor to re-brand an old product or service by associating the buzzword “cloud” with it.
So, it’s a deliberate attempt to sell an existing product, albeit delivered from a server in a data center, but adding the label “cloud” to deceive potential buyers into buying it when the fundamental product does not meet the criteria to a true cloud application. Cloud washing is comparable to green washing where a product is described as environmentally friendly on specious grounds. In both cases the term washing implies a thin daubing of paint in the form of a marketing message to cover cracks bringing a false and deceptive new appearance to the product.
Relying on the internet as a means of delivery does not justify the label cloud and a true cloud service requires:
- User self-provisioning
- Pay-per-use billing
- A multi-tenant architecture
- A virtualized infrastructure
- Linear scalability
It is fair to say that true scalability is difficult to achieve for a couple of reasons.
Firstly it must be designed in to the application from the outset and cannot be an afterthought. Many algorithms that perform apparently well, fall apart when placed under the load imposed by large numbers of requests, large numbers of nodes and large data sets.
Secondly there is the issue presented by an inability to preserve a completely heterogeneous architecture as the hardware estate (the cloud itself) expands. Essentially this is driven by obsolescence of hardware, so as new system nodes are added, they are not identical to those already in use; indeed they are typically more powerful and have larger storage capacity etc. This means that new modes perform more quickly and store more data than older ones meaning the algorithms must be able to deal with nodes that perform at varying speeds.
In summary then, it is not enough to shove an existing application on to a server in a data center and sell it as a cloud application; the application must be written and engineered to achieve true scalability from the outset.