It is often for many people in IT, myself included, to confuse the terms virtualization and abstraction. When I searched for “virtualization vs abstraction” on Google, every article I found explained the difference between them in a way that was .. cloudy! So…. What IS the REAL difference?
What is VIRTUALIZATION ?
Origins of the Word “Virtual”
“Virtualization” is the process of making a representation of something “virtual”. According to http://www.merriam-webster.com/dictionary/virtual, virtual means
Virtual : Very close to being something without actually being it
The word “virtual” has been present in English since 1400-1500. The origin of “virtual” is the Medieval Latin word for “virtues” (or specifically, “virtuālis,”). A “Virtue” is defined as “a beneficial quality or power of a thing.” Over time, this evolved to being “important qualities” , or simply “identifying properties”.
“virtual” has been used for centuries in politics (230 years ago in Alexander Hamilton’s Federalist Papers) and continues to be used today for simple product comparisons (“The fake [ purse ] is virtually identical to the original of the same make by the authentic Louis Vuitton factories.”).
Today, that same definition of “virtual” from the Wester dictionary also includes “existing or occurring on computers or on the Internet”.
If today a person uses Google image search using only the keyword “virtual”, what would one see?
IT has taken cultural ownership of the word “virtual”, and this started with the introduction of Virtual memory some 50 years ago.
The concept of Virtual Memory First described in the 1956, and first implemented in the 1960s. (See https://en.wikipedia.org/wiki/Virtual_memory)
German physicist Fritz-Rudolf Güntsch
In the 1940s and 1950s, all larger programs had to contain logic for managing primary and secondary storage, such as overlaying. [….]
The concept of virtual memory was first developed by German physicist Fritz-Rudolf Güntsch […] in 1956 in his doctoral thesis, “Logical Design of a Digital Computer with Multiple Asynchronous Rotating Drums and Automatic High Speed Memory Operation”; it described […] hardware automatically moving blocks between primary memory and secondary drum memory.
Interesting that “virtual memory” was not the term used at first, and it isn’t clear exactly when the term “virtual memory” was adopted. One theory is that automated paging performance was nearly (virtually) identical to what a programmer could attain with manual paging. What is known is that the concept of virtual memory continued to evolve and was ultimately adopted in varying degrees on all hardware platforms.
Over time, IT engineers have created virtual representations of just about everything else. We have even developed specific qualifiers to describe the hardware virtualization: There is Full virtualization, Partial virtualization, and Paravirtualization
Everyone wants to be part of “Virtualization Nation”. Nearly 25% of the blogs that I follow have been named using the inspiration of the cool “V” as a first letter, including vcdx133, vclouds_nl, veric, vhipster, virten_net, virtual10, virtualgeek, virtualinsanity, virtualizedgeek, virtualizetips, virtuallifestyle, virtuallyawesome, virtuallyuseful, virtualpro, virtualramblings, virtualstorageguy, virtualtacit, virtualtothecore, virtualvillarin, vmforsp, vmiss, vmstorageguy, vmtyler, vstorage, vtexan, and vtricks . This doesnt even include sites like 2vcps, myvirtualloud_net or thevirtualnoob .
Oddly enough, the best VMware blog is Duncan Epping’s: Yellow Bricks (see http://www.yellow-bricks.com/).
Virtualization has simplified many things, has generally improved hardware utilization efficiency, and is indeed indispensable (unless you actually enjoyed manual paging, or bare-metal Windows restores). For many years it has been the brick on the gas pedal of our industry. However, it has created an equal and sometimes even increased level of complexity elsewhere.
There are hypervisors running on hardware that assists virtualization, running virtual machines that have local virtualization, with additional levels of virtualization running within those VMs or even hypervisors running within hypervisors. The IT industry has reached an interesting juncture, where virtualization seems to have become a giant self-reinforcing loop.
And then one day it dawned on me – Virtualization was a means to an end, but not an end onto itself.
What is ABSTRACTION ?
When you look at the following piece of abstract art, what do you see ? I ask, because many suggest “abstraction” is just about “generalizing”. Are you generalizing this artwork into a bucket of “random shapes and colors”, or are you recognizing patterns and creating a deeper response to it ?
IT and “Abstraction”
The use of “abstraction” in IT has merited special recognition in the Webster dictionary (See http://dictionary.reference.com/browse/abstract?s=t):
abstract in Technology :
- A description of a concept that leaves out some information or details in order to simplify it in some useful way.
- Abstraction is a powerful technique that is applied in many areas of computing and elsewhere. For example: abstract class, data abstraction, abstract interpretation, abstract syntax, Hardware Abstraction Layer.
In software development, an “abstract class” (shown below) is typically defined as a “generalization”. In this example, a “dog” is a generalization (or common category) of several dog breeds. But why do we do this ?
The motivation of abstraction is, first, to be able to perform recognition and categorization. Recognition is performed for the purposes of associating the proper set of rules on how to interface with, in this case, a dog.
You are abstracting as you read this this article. If you couldn’t visually process the lines and curves and colors on the screen in front you, and recognize letters from those abstractions, you wouldn’t be able to read this article at all. Abstraction is a fundamental human ability that allows all of us to recognize things and interface with the world
Abstraction Enables Recognition
Recognition is defined as (See http://www.cns.nyu.edu/~david/courses/perception/lecturenotes/recognition/recognition.html.) :
Recognition is a match between virtual input (processes through the ventral stream) and a mental representation of an object.
Recognition, along with abstraction, is a core part of a human’s Computational Thinking. Computational thinking allows us to take a complex problem, understand what the problem is and develop possible solutions. The four key techniques (cornerstones) to computational thinking are (see http://www.bbc.co.uk/education/guides/zp92mp3/revision) :
- Decomposition – breaking down a complex problem or system into smaller, more manageable parts
- Pattern Recognition – looking for similarities among and within problems
- Abstraction – focusing on the important information only, ignoring irrelevant detail
- Algorithms – developing a step-by-step solution to the problem, or the rules to follow to solve the problem
Consider the image below: Despite many pictures of a duck at different sizes, angles, and with different methods (photographs or sketches), the human mind abstracts key aspects and identifies (recognizes) that each image is a duck.
You know who else can recognize ducks? Alex Rodriguez.
A-Rod Gets Abstraction
The universe is made up of energy and elements and all kinds of other things that smart physicists understand. There is no raw element called a “baseball”. A baseball is a collection of many different types of elements.. and billions of atoms, assembled together in different sub-objects (each of which is actually an abstraction onto itself) which are then packaged together into bigger objects, and ultimately into a thing that A-Rod (and the rest of us) recognize as a baseball.
Here is what is inside a baseball (see http://www.madehow.com/Volume-1/Baseball.html) :
But what a human sees, when presented with a baseball, is:
- color and patterns on it
The human mind, and in particular the mind of Alex Rodriguez, does not map a scientific explanation of the billions of atoms of a baseball and then categorize it as a baseball. Instead, a few key observations are made, and abstraction and recognition are used to identify the object as a baseball.
With the abstraction of that object created, and the object recognized, A-Rod’s mind then understands what he can do with that recognized abstraction – He can pick it up. he can hold it. He can throw it. He can catch it. He can buy and sell it. The actions that are supported by that abstraction is it’s interface. But his favorite action to take on a baseball?
A-Rod thinks “I recognize a baseball… I interface with hitting a home run.”
The Abstraction Principle
Abstraction is fundamental to the art of creating new things; these new things are constructed from an assembly of smaller things. Abstraction is also about establishing a set of rules that allows repeated recognition of that logical thing in different circumstances, and rules which can be shares with others so that they too will recognize this thing. Lastly, it is about supporting the object recognition to allow association with a set of rules which can be used to interact with this new thing, which is called the interface.
We circle back to a discussion of IT. Modules of codes, whole software programs, or even entire hardware systems, can provide an abstraction – creating something new that has a particular interface that allows that new thing to be used. This could be as simple as a POSIX interface, a document editor, a social media tool, even a number-crunching supercomputer. A great description can be found in these SJSU Computer Science notes at http://www.cs.sjsu.edu/faculty/pearce/oose/metrics/metrics.htm :
There are two ways to look at a module. A client (i.e., the person or client module that uses it) sees it in terms of the services it provides, while the implementer sees it in terms of its internal structure, in terms of how it provides services. We call the client’s view the module’s interface and the implementer’s view the module’s implementation.
The abstraction principle says a client shouldn’t need to know about a module’s implementation in order to use it, and the implementer should be able to change the module’s implementation without breaking the client’s code (assuming the interface doesn’t change).
The key to the Abstraction Principle is the independence of implementation (modularity) it creates.
Consider the automobile. It is an abstraction that is created out of thousands of individual parts – which function as a whole new entity with a unique reusable interface. Most don’t care about how the car is constructed (implemented). Yet when assembled, we can all recognize this as a car.
The common interface means that you can interface (use) many different types of cars, despite only having learned to drive on one specific type. The common interface includes how to enter a car, how to start it, how to put in cargo, steering, braking, and so on. This common interface is especially useful when you are rich and own many cars .. like A-Rod.
Virtualization vs. Abstraction
First we listen to Abe, a man from the future, share his perspectives on this subject…
Ive tried to summarize the difference between virtualization and abstraction in a simple way that makes sense, and the best I can do is – A true virtualization is a copy, an true abstraction is something new.
Unfortunately, even though that may be mostly right, it is misleading because very few things are absolutely either one or the other. That is why the above statement includes the qualifier “true”.
Things are Seldom Either Pure Abstractions or Virtualizations
Consider the humble x86 virtual machine. Given what has been presented thus far in this article, is this a virtualization, or an abstraction?
While called a virtual machine, a VM is also an abstraction of sorts, since it has several improved characteristics versus a physical server. Consider a VMware virtual machine also offers :
- VM-level Snapshot and restore
- High availability – Running the same VM on multiple machines with no changes to VM’s software
- Live migration
This is all really freaking confusing, since virtual machines from a company called VirtualMachineWare are not exactly 100% virtualization. Which, coming full circle, proves it may actually not be a contradiction to describe a VM as an abstraction (an act I must admit Ive ridiculed in the past).
A relevant and enlightening subject to discuss at this juncture are VMware vVols (Virtual Volumes), and in particular the Storage Policy-Based Management (SPBM). I’m big on policy management, and QoS. These are real service abstractions, and abstraction is really hard to do right. It is also a bit of a tough sell, as service guarantees tend to (rightfully so) negatively impact efficiencies.
Chuck Hollis (of VMware) sees the benefits of policies, and I couldn’t agree more. (See http://chucksblog.emc.com/chucks_blog/2014/07/policy-based-it-the-next-frontier.html)
Policy responses can’t be intrinsic to specific vendor devices or subsystems, accessed only using proprietary mechanisms. Consistency is essential. Without consistency, automatic workflows and policy pushes quickly become manual (or perhaps semi-automated), with productivity being inherently lost.
In the image below, consider all the traditional complexity involved in requesting for a storage service level be met from the perspective of the application (owner) in a virtual environment. (See VMware blog post “Storage Directions for the Software-Defined Datacenter” : http://blogs.vmware.com/cto/storage-directions-for-the-software-defined-datacenter/)
But with SPBM, all of the complexity over understanding media types can be removed from the application level. It offers significantly more implementation independence. The value was clear immediately, and it is no wonder why NetApp jumped at the opportunity to fully support vVols before any other storage vendor (See http://community.netapp.com/t5/Tech-OnTap-Articles/NetApp-Unlocks-the-Power-of-VMware-VVOLs/ta-p/86939 )
Cloud is about ABSTRACTION
We all know the cynicism regarding “the cloud”. You have no doubt seen this sticker :
But the Cloud is more than just virtualization… and your stuff on someone else’s computer. See this article from 2009: http://www.strategi.com/blog/abstraction-the-key-understanding-cloud-computing/
Cloud computing is all about abstraction
The key to understanding cloud computing is to not focus on any one definition, but to look at the common underlying attributes and characteristics of the technologies or concepts described within the definitions.
To reconcile the various perspectives on cloud computing, one can think of cloud computing as a scale that measures the degree of architectural abstraction offered by a solution: as the level of abstraction increases, the less is known about the underlying implementation, or the more “cloudy” the architecture appears to be.
The Real Cloud Disruption is new abstractions, and cleaner interfaces that speak the language of IT consumers in the context of their immediate business challenges. Don’t take my word for it – The IDC has been onto this trend for several years (described as the Third Platform):
Writing this article was a journey for me – I must have re-written it no less than 10 times as during the investigation and proof points, I realized how wrong I myself was. You are encouraged to do the same with your own thoughts – sit down, write out those nagging thoughts, and then cross-examine them with an open mind.
There are a lot of great virtualization tools out there that are adding far more value than just copying something else. It is OK if you confuse the words “virtualization” and “abstraction”, because in many cases (in particular within the infrastructure) most elements involve aspects of both. But attention to detail on using them will make you stand out.
- Do not allow their uses to fool you. “Abstraction” is not simply “commonality” or “generalization”. And “virtualization” is not simply a “logical copy”.
- Be the smart person in the room and highlight when “virtualization” is adding value, and when it is simply adding layers of confusion.
- Be cognizant of how much added value things like service-level (policy-based) control have, adding real implementation isolation and a dramatically more powerful interface to the end use.
- Keep in mind how much the simplicity and re-usability of the interface matters
- Cloud isnt just virtualization – It is creating new abstractions, and easier+intuitive interfaces that connects the power of IT more directly to the world
It is a great time to be in IT. All the best, and thanks for reading!