Programming

Tuesday, June 03, 2008

Virtualization is a stop-gap technology

Virtualization is a growing trend in running computers in "containers" which emulate (virtualize) actual hardware. The benefit is that the container becomes portable, and can be run on different hardware, or migrated. Backups are a lot easier, there are security benefits, and hardware can be utilized more effectively. Virtualization is a growing trend and Microsoft has realized this and put it at the heart of Windows Server 2008.

The heart of the web - URLs (uniform resource locations) are a specification of the location of a resource - usually a web page, but can also refer to services (e.g. SOAP) and web applications.

The real problem is that machine name is being used as a proxy for resource location. In a URL - e.g. http://bbc.co.uk/news/12345.html - the bbc.co.uk part is specifying something physical - often a machine name - but certainly a physical place such as a router. In computer networks, machine name is critical in specifying the location of certain resources. This is the legacy of DNS (domain name system) which assigns names to computers.

Physical device is often used as a proxy for resource in the home. Your photos are stored on a physical disk in a physical computer, and you locate them by specifying where they are stored. When you are out and about, you usually don't have access to them because you don't have a network access to the physical device.

This approach of tying resources to hardware is frankly wrong. Why should I care where my photos are stored - providing I can access them and they are stored securely. Maybe hard disk or memory should be an intelligent cache and nothing more. The current approach does not protect users from data loss, and is hard for users to manage.

Virtualization is a solution to the wrong problem. Virtualization allows the easy migration of a machine - but why would you need to do that? It's only because we rely on certain services running on certain machine names that we even need to think of the "machine" as a unit. Virtualization is incredibly wasteful of machine resources, and is like hitting a walnut with a sledgehammer. It's far better to migrate the software, and have multiple software running on the same OS - like the good old days. We already have a perfectly good container, and it's called the "process".

The solution is to break the link between resource and machine name. I predict that in the future, data, services, resources and computing resources will exist in a redundant, replicating, self-healing "cloud". Running processes will be able to migrate between different computers - much like they can migrate to different processors at the moment. Different computers will form collectives and be given a catchy name like "swarm", "hive" or "cluster". In future, we will think about services, rather than physical or virtual machines. Virtualization is merely a stop-gap measure until we fundamentally rethink the way we provision resources.

0 Comments:

Post a Comment

<< Home