Virtual Machines and Transactions

November 16, 2010 - by joyentjames

The other day Jason wrote a post discussing how comparing any two virtual machines is similar to comparing cars -- there is such a wide range between the two things being compared that it's not just car versus car,  but apple versus orange.

As Jason rightly points out, VMs shouldn't really matter.  When a developer builds an application, they need to consider consumption of Memory, Disk & CPU -- and the movement between those things -- but fundamentally they just want their application to work & scale to whatever the demand is that they need, and when they need it.

Last year on a panel at Enterprise 2.0 I said that the way we buy machines (virtual or otherwise) is similar to calling up the Hoover Dam and renting a turbine to boil a kettle.  In some ways that metaphor is facile, but even so, as an industry we're constantly over-provisioning capability because historically we've not had any other option.

This is where Joyent's bursting capability, which allows you to buy far less than your peak requirements, comes in.  When we sell a 1GB SmartMachine, we're not selling a logical maximum, we're selling a guaranteed minimum.

All this to one side, what you need to be concerning yourself with isn't this VM versus that VM, or 1GB of RAM vs. 8 GBs.  You need to worry about a considerably smaller requirement: The transaction.

While node.js and the advent of WebSockets blurs some of what is meant here, in general a web site of any kind deals with transactions.  The customer makes a request and the service responds.  It's a short interaction but infrastructure needs to be designed so that it can scale from as little as one transaction all the way to n transactions, where n is, effectively, unknown.

The nature of the web guarantees latency.  It's just another property of each transaction. But our goal is to be able to ensure each transaction through your architecture takes the same amount of time, thus achieving predictable latency.

And it's at that place -- n -- where Joyent's third core capability comes into play: Transparency.

Without the transparency provided with tools like DTrace (and the capabilities we can enable because of it), the bursting capability provided by SmartOS, and data-center management provided by SmartDataCenter we'd be selling just another VM.

But we're not, and it ain't.