September 15, 2009 - by jason
In my weekly reading of posts around this mighty collection of tubes, pipes and cans connected by shoestrings, the thing most call The Internets™, I came across "Why we moved away from “the cloud” to a “real” server" from the fellows at Boxed Ice. They have a server metrics and monitoring service named Server Density. Their exodus from a small VPS to collection of VPSs (What is the plural anyway? If Virtual Private Server is VPS, then Virtual Private Servers is VPSs?) is typical of a service that's starting out and doesn't have the in-house expertise and capital yet to go out and start building everything yourself (which is fine, that's not a value statement, I'm simply saying that it's a common path to go shared hosting to VPS to Managed Hosting to entirely DIY). What I don't like is the title. They moved from "the cloud" to the "real". To be exact, it was easier for them to get a "box" from a managed hosting provider with an NFS or iSCSI mount then it is to take the additional effort in configuring and managed EC2 images and the Elastic Block Store (EBS). They "would have had to build our own infrastructure management system" in order to get Amazon Web Services to do exactly what they wanted. That's entirely correct. A precise title would therefore be "Why we moved from two VPSs to some servers at Rackspace instead of getting into the morass of managing EBS plus EC2 and probably spend more money while we're at it". I admit, it's a longer, more awkward title but it doesn't use a generic term for what is a pretty specific complaint. I want to make really clear at this point that I think they're entirely right, and everyone in the "cloud industry" should think to themselves "Am I writing the correct software that would make such commentary a thing of the past?". What then is the cloud? And really why did the "cloud" fail them at this stage in the game? In my opinion, "Cloud computing" is a software movement. Software requires a hardware platform, and the hardware platform must be scalable, robust and able to either directly handle a workload or be a valid part of partitioning that workload. At Joyent, we're pushing our physical nodes to the point where they're simply not normal for most people: base systems with 0.25 to 0.5 TBs of RAM, more spindles than a textile factory and multiple low latency, 10 Gbps out of the back (looking back to 6 years ago, it's amazing what you can get nowadays for about the same price) . These then become the transistors on the Datacenter Motherboard, and just like how on a current "real" server, many of the components are abstracted away from us (we deal with a "server" and an "operating system"), those of use writing "Cloud Software" need to abstract away all the components of a datacenter and have everyone deal with telling the "cloud" what they want to accomplish. Taking desired performance and security into account, the ultimate API or customer interaction is "I want you to do X for me". What is X? Some examples, "I want this site to be available 99.99% of the time to 99.99% of my end users. How much is that?" "I have this type of data, it needs to be N+1 redundant, writes have to happen within 400 ms and reads within 100ms 99.99% of the time. How much is that?" I could go one with a series of functional use cases like this where the user of a "cloud" is asking to do exactly what we typically want an entire infrastructure to do (not defining the primitives etc), where the user is telling the cloud how important something is to them and where the user is asking for an economic value/cost to be associated with it. The "How much is that?" should always return a value that is cheaper than "real" and cheaper than DIY. That's something that's different. That's something that's an improvement on the current state of computing. It's not a horizontal re-tooling of the current state of affairs. That's something that would take us closer and closer to providing products to growing companies like Boxed Ice where they start out really small on the "cloud" and seamlessly scale to a global scale when they need it, and the "cloud" becomes "real".