domingo, 26 de enero de 2014

Virtualization vs. Cloud Computing (III): business differences, plus other technical ones, and conclusions

Once again let me start reminding that this post is referred to the scope and context defined in my first post of this series (titled “Virtualization vs Cloud Computing (I): what are we going to compare?”), although at the end of this post we’ll widen it.
 
Besides, as summary, in the two previous posts we concluded:
  • Virtualization is an enabling technology for Cloud Computing, one of the building blocks used “generally” for building Cloud Computing solution (“generally” but not always, because nowadays Cloud is starting to use other technologies away from pure virtualized environments to offer  “Baremetal as a Services” …)
  • The services provided by “Cloud Computing Management Environment” and by a “Virtualization Management Environment” ARE QUITE DIFFERENT IN HOW THE SERVICES ARE PROVIDED: both the self service characteristic and location independence feature (in the sense of no location knowledge) are the main difference, but in some cases (depending on the platform) also massive scale out.
 
Going to the subject, another technological point of comparison is that Virtualization Management Environment (at the present almost none) does not offer to the user the knowledge in real time of how long it has been using the VM and other metrics of the service (“measured services” is a essential characteristic), or maybe the user can get that knowledge but not in a friendly way. The main reason for that is the different business model they were “initially” thought of:
  • Virtualization was born to take advantage of unused resources in a physical machine, solving several problems that appeared in scale-out servers: different physical characteristics for different cluster subsets (after one or more expansions), coarse granularity in the resource assignment that led to unused resources, security issues when applications from competing companies were run on the same physical machine. However, although virtualization allows to take advantage of unused resources in a secure way, in the practice it let to traditional DataCenter Service provider to pass (or add) from a (physical) “Hosting” business model to a “Virtual Hosting” model with lower prices, but the billing model was the same: in general the customer is billed in the same way as for physical hosting: a monthly fixed rate where the cost is proportional to the power (performances) of VM and the associated resources it has contracted, but disregarding of the real usage (the user does) of the virtual machine.
  • Cloud Computing was born to “allow” a real pay-per-use model. For this reason it’s as important the self-serving feature as the capability to turn on or off the VM whenever the customer wants, because (s)he doesn’t pay for the standstill period. About this subject, please note that the technological Cloud Computing concept only defines that the services must be metered (and that information must be continuously available for the customer), what allows the provider to bill for the real usage, but it’s not mandatory to do it.
  • Of course, both business models mentioned above were the two extremes of a broad market and represent the “pure” business models, but today there are several intermediate hybrid business models: for example, cloud computing environment based model that offer discounts if you contract for long fixed period or that offer lower price-per-hour if you pay a monthly fee (one of the Amazon options) or pure technological Virtualization Management Environment that offer pay-per-use business model, and so on. AMAZON (the great Cloud innovator) is a good example of that: for example, “Reserved Instances” give you the option to make a low, one-time payment for each instance you want to reserve and in turn receive a significant discount on the hourly charge for that instance (there are three Reserved Instance types: Light, Medium, and Heavy Utilization Reserved Instances, that enable you to balance the amount you pay upfront with your effective hourly price), the also offer volume discounts or “Spot Instances”, and so on.
 
Finally, concerning to the comparison points in the initial (reduced) scope defined, new customers needs are emerging to deploy applications on your physical servers, as well as your virtual servers, but keeping all the cloud model advantages (and essential characteristics): that’s the case, for example, when your application requires physical servers, or your production environment is too performance sensitive to run in VMs. Actually you don’t need to have a virtualized environment to be considered a cloud environment: your “virtual” instance might be a “container” which is not virtualized but running on bare metal (just sharing it with other containers) or even running directly and using completely the bare metal: “containers”, as aforesaid, are considered by some authors as sort of virtualization; so let me present an example of the latter case: OpenStack is currently developing the new “Iron” module that it’ll provide “Baremetal as-a-Service”, so  it’ll be possible to use the same API and the same pipeline to build, test, and deploy applications on both virtual and physical machines. Therefore, cloud technology is starting to use other technologies away from pure paravirtualized environments.
 
We initially limited the scope of this comparison to “compute as a resource”, but if we slightly widen that context to include (as usual) any computing related resources, i.e, storage, and communications resources, then new differences arise (depending on the solution that was used for building both the Cloud Management Environment and the Virtualization Management Environment):
  • Most (but not all) of Virtualization Management Environments offer only compute and block storage services, but usually they do not offer Object Storage as a Service; besides they use to offer “Storage Virtualization” (SV, i.e. capacity is separated from specific storage hardware resources) but don’t offer “Software Defined Storage” (SDS), that differs from the former (SV) because in the SDS not only capacity but also services are separated from the storage hardware.
  • Moreover, and almost none of them (Virtualization Management Environments) offers communications management as a Services. I mean not only virtual networks, but also main communications devices provided as a service: router, firewallls, load balancers and so on. Moreover, the “Software Defined Networking” (SDN) it’s a technology that, as far as I now, is been currently used only in Cloud Computing Environments where this kind of services are starting to be offered. Of course, some Virtualization Environments offer this kind of communication services, but not in a self-service way and where you can self-define your internal communications layout and structure, and so on, e.g. as shown in the next picture (taken from the topology designed by a customer using the TISSAT’s Cloud Platform mounted on OpenStack):
TISSAT's IaaS Cloud Platform
TISSAT’s IaaS Cloud Platform
 
 
At the end of this 3 post series, as summary, three conclusions:
  1. The technological concepts (virtualization and cloud computing) should not be confused with the pure business models they were initially intended for: virtual hosting (a fixed monthly rate lower that physical hosting) and pay-per-use (that some person call the Cloud Computing business model), respectively. And don’t forgot that at the present there are a lot of mixed business models disregarding the underlying technology.
  2. Both virtualization and cloud computing allow you to do more with the hardware you have by maximizing the utilization of your computing resources (and therefore, if you are contracting the service you can expect lower expenses). However, although currently there is an inevitable connection between them, since the former (virtualization) is “generally” used to implement the latter (cloud), this connection could be broken soon with the arising of new technologies and innovations, and they are not exactly the same: BOTH ARE QUITE DIFFERENT IN HOW THE SERVICES ARE PROVIDED (self service feature, no location knowledge, massive scale out, even metered service in some cases) and there are some technical differences between them. Additionally, depending on user’s needs one of them could be better or not: a lot of customers have enough with server virtualization, and it could even be the best solution for their needs; but in other cases cloud is the best solution for the customer’s needs, and no virtualization.
  3. Although still circumscribed to IaaS (i.e. forgetting PaaS and Saas), when we widen the comparison scope to include (as usual) any computing related resources, (not only compute but also storage and communications resources), then new differences arise since, for example, communications related Services (routing, firewalls, load balancing, etc.) are seldom (or never) offered as a Service in Virtualized Management Environments (in a self-service way and where you can self-define your internal communications layout and structure, and so on, taking advantage of Software Defined Networking technology). Besides, another main difference is how the Storage as a Service is provided: in a Virtualization Environment use to be reduced to Block Storage, no including Object Storage (as Cloud Environments do), and provided as Storage Virtualization but not as Software Defined Storage.

Note: Please, let me add that  Tissat (the company I’m working for) is offering all this sort of real IaaS Cloud Services as well more traditional DataCenter services (such as housing, hosting, virtualized hosting, DRP, and so on) based on its Data Centers Federation (that includes Walhalla, a DC certified as Tier IV by The Uptime Institute)  and using different product and solutions (currently VmWare, OpenStack, and so on) and most of the ideas of this post series are extracted from that experience.

1 comentario:

  1. When I initially wrote this article, my low command of English make me confuse some related terms and not differentiate between “scale up” (meaning to scale "vertically", i.e. increasing the RAM memory, the number of CPUs or something like of the same server for example) and “scale out” (meaning to scale "horizontally", i.e. adding more servers for example, instead of increase the performances of one server). In this article, the correct is to “scale out” and it has been corrected.

    ResponderEliminar