Stupid Human Programming
Talk on software development.








Subscribe to "Stupid Human Programming" in Radio UserLand.

Click to see the XML version of this web page.

Click here to send an email to the editor of this weblog.


Saturday, February 18, 2006
 

With Vpops do we even need an OS anymore?

What the heck is a vpop? A vpop (virtualized program) is a program
designed specifically to run in it's own virtualized CPU environment.

With vpops we don't need an OS anymore. What do we use instead?

Let's make the move to virtualization instead of
virtual machines.

In this future we download highly optimized, fully verticalized, bare metal
programs into their own virtualized CPU environments.

These stand-alone virtualized programs (vpops):

* Cooperate by talking over IP.

* Use a shared nothing architecture.

* Store state on their local virtual hard drive or with their remote state
service provider.

* Use a web based desktop that coordinates and multiplexes access to all
the other services.

* Pick whatever OS they like best. We've spent decades building
up layers between the OS and applications. With virtualization
the layers disappear. You can create one monolithic high performance fusion
of OS and program, much like in most embedded systems.

* Are downloaded automatically into their own VM space.

This is very different than the current world where the virtual
machine has become the standard model of program execution.

* OSes are really virtual machines these days. We build bianaries
that assume they are loaded into a certain OS and microprocessor
combination. Our bianaries dynamically link to shared
libraries or DLLs or assemblies. Even if we compile a completely statically
loaded program, applications assume assume they trap into a host of OS
provided services.

* We build programs that load into a JVM or CLR like virtual machine.
In .NET, windows is basically one big application container and there
have been attempts at JVM based OSes.

With virtualization you don't need to incrementally load
a program into some highly capable execution container anymore.

You can build a totally independent program that loads directly
onto the hardware.

The OS/application layers can disappear. You can compile one
highly optimized monolithic program that accomplishes its
specific task on its dedicated hardware resources.

A few changes have made this move possible:

* Virtualization is a very old technology, but it had recently become more
main stream and thus it is more acceptable.

* CPU power has grown faster than the uses for it so sharing CPUs makes
economic sense.

* Faster, ubiquitous, reliable networks make for portable environments.

* High capacity portable storage devices make it possible to take
your personal virtual environment with you and load it anywhere you
want.

* 64 bit processors and relatively cheap RAM will provide the RAM
needed to share RAM hungry resources on one machine. And mutliple core
CPUs will provide the needed CPU power.

* We have a lot of IP addresses. Err, well, no we don't. That is a problem
because before every application on a machine would share the same
IP address, now each virtual envornments needs it's own IP address(es).
NAT and IPv6 can help make more IP addresses available.

Why would we want to create vpops instead of loading programs into an
OS? Good question. Many of the reasons are, of course, the same as those used for
virtualization:

* Safety. Software is loaded into a jail that can't hurt other software.

* Efficiency. Expensive hardware is fully utilized.

* Portability. Your virtual environment can be carried with you wherever
you go. You can store data remotely if you want, yet your applications
can be yours. Applications don't have to be web enabled to be available
anywhere.

* Extreme Portability. You can live migrate your virtual environment between
machines as you move around. You don't need a portable storage device.
Your virtual environment can be physically transferred between machines
so you never have to configure new environments. You need machines to
be similarly configured which is why storage services could be centralized over
the network.

* Flexibility. You can carve up your hardware however you need.

* No more IP ports. You won't have to put your second web server on port 8080
anymore. The IP address and the default port would be sufficient to identify a
service now. The cost is IP addresses, but it makes using services more clear
and direct.

Why go the next step and get rid of OSes? An even better question.

* Because we can.

* An end to DLL hell. We don't need no stinkin shared code to link into anymore.
You don't have to worry about managing DLLs, shared objects, assemblies,
or what OS is installed.

Your application is microprocessor specific, but other than that it is completely
standalone. You just rebuild and redeploy. No install hassles or worrying about
registry magik.

* Performance. We put a layer between the OS and applications largely for safety
purposes. Once these layers are dropped you'll get programs running a bare
metal speeds.

* Installation becomes a snap. If you want to install a wiki, or discussion board, or some
other application you usually get this horrible set of install instructions that are
old, in error, and frustrating beyond measure. You end up downloading a dozen
under tools, editing a hundred files, and then it still doesn't work. If you can install a fully configured
virtual image into your own safe virtual environment, the install barrier becomes
nothing. You can simply install any software you want.

* Choice. You don't need to be locked into an OS. You can use the application
you like better, not the OS you are compelled to use.

* Wonder. Let's say I think Erlang is the greatest tool evar for creating distributed applications. But it suffers a little from performance anxiety and it's not supported by any data center so installation is always tricky. Now let's say I create this kick ass Erlang OS that runs great on bare metal. In a VM aware world I could provision resources from a data center grid and automatically download my vpop to all nodes in the grid. The vpops would come up, configure, and start working. No muss no fuss. That's cool.


Wikipedia has nice overview of virtualization on their site at
http://en.wikipedia.org/wiki/Virtualization .

comment[]

12:49:08 PM    



Click here to visit the Radio UserLand website. © Copyright 2006 todd hoff.
Last update: 7/11/2006; 12:36:47 PM.
February 2006
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28        
Jan   Mar