Cloud Computing is all the rage these days. Problem here though is there are too many definitions floating around. I would like to however propose yet another definition. Cloud Computing is Software in a Box, or more concisely “Cloud Computing is Software in a Virtual Box”.
What is “Software in a Box”? This is an idea that has been around for a long time. I wrote a blog about it back in 2003 (see: “An Alternative Way Of Packaging Software: Hardware Included!)”. For Cloud Computing this title would now read: “An Alternative Way Of Packaging Software: Data Center Included!”.
Years ago, Bill Gates once referred to pc manufactures like Dell and Compaq (Now HP) as Value Added Reseller (VARs). That is all they did was add value to Microsoft’s software by bundling their hardware with it. Selling software is all about packaging. Most software is bought because its packaging delivers convenience to customers. It is not usually whiz bang technology that makes the sale, rather is is about ease of use, that is usability. What can be easier than receiving a box from a vendor, then plugging it into the wall and into the network to get it running? Well it turns out, receiving a virtual box from a vendor and not be even easier!
The benefits of a “Software in a Box” were described in this old 2003 article:
- Reduced development complexity – That is less configurations to support.
- Higher Performance – Performance can be tuned to the hardware delivered with the software.
- Better Security – The box can be hardened and tested prior to delivery.
- Easier Provisioning – Just add power and network connectivity.
- Reliability – Less configuration implies less parties to point finger at.
- Pricing – People like paying for something they can touch.
- Distribution – Ride on the coat tails of hardware vendors.
Fast forward now, 8 years later, and we have these same benefits for Cloud Computing:
Reduced development complexity – Software can be pre-configured, tested and hardened for the target cloud platform. See: AWS Cloud Formation for handling complex networks. Higher Performance – Software can be pre-tuned to the target cloud platform. For example, if one were delivering a Machine Learning based application, one could tune a solution for Amazon’s GPU cluster. Better Security – The solution can be hardened in the cloud. Easier Provisioning – Just sign up on a website. Reliability – The cloud provider takes complete responsibility even for operational issues. One doesn’t need the expertise to configure a high availability setup. Pricing – Pay as you go, use only what you need. Elasticity – Seamlessly scale when demand increases.
In a former life as a Product Architect, I was working on a slide deck that showed how my company’s solution would fit in a prospective client’s network. I had drawn a solution that involved multiple boxes to cover the scalability, availability and heterogeneity of the solution. The feedback that I received was that there were too many boxes! I had also noticed come deployment time with a customer, it became painstaking to have to attend so many network interconnectivity meetings. My eventual solution to this packaging problem was that the software would now be deployed in a blade chassis with all the components pre-configured into blades and the network pre-configured with a virtual router in a blade. We were now back to a single 16u box!
The drawback of Cloud Computing as compared to Software in a Box is the fact that the customer can’t hold it and as a consequence store it in one’s premises. At a mammalian brain level, a lot of people can be very uncomfortable with this. There’s also of course the concerns of hosting in a shared network,the security of data on shared storage and the robustness of network connectivity. To overcome these fears, one of course could deliver a “Cloud in a Box”.