Given Larry Ellison’s recent objections to the term “cloud computing”, and that I will likely write about the space often, I thought I would take a shot at defining things that get lumped into the term.
I tend to agree that “cloud computing” is an abused term, but I believe if you parse the various definitions, I think you come out with four categories:
· Co-location and web hosters: The forefathers of the cloud computing space. They created specialized data centers with redundant infrastructures (such as power, network connectivity, etc) for third parties to leverage. Customers were separated by cages, where they could put their own servers into racks (or lease the hoster’s servers). Applications and data were technically outside the offices of the customer, and accessed via IP protocol and the Internet cloud. Put Internet cloud together with computing elsewhere, one could play the game and conceptually call that “cloud computing”.
· CPU/Storage on demand (“CPUoD”): These players start with their own data center facilities and servers, but have leveraged the explosion in hypervisors to virtualize server pools. They then layer on standardized OS environment, web servers, load balancers, databases, etc. The application must be built for that run-time environment, but if it is, one simply focuses on the development of their application and can buy compute/storage that executes the software and stores the data in a usage driven pricing model. Some folks optimize for specific languages, such as Google’s AppEngine in Python, while others provide specialized diagnostics and monitoring services on top of their cloud to differentiate. Some are stateful, some are stateless, some with persistent storage, some with dynamic storage. But at the end of the day, it is a standardized operating environment that one pays per GHz and/or GB running ANY application. I’d view this as the basic “brick” in cloud computing.
· Software as a service (“SaaS”): On the other end of the spectrum, software as a service providers build all the way up through the application/UI layer to offer a business function to the end user in a shared, multi-tenant, recurring revenue model. While extensible and customizable, it is one instance of the software that serves many customers. It is often lumped into cloud computing because the data center cost (where the software executes and data resides) and assumed scalability are bundled into the cost charged to the end user for the application. The vendor can either: 1) take their own racks, cages, and servers (as in first option above) to build their own internal CPUoD environment and write their application on top of their own controlled stack, or 2) the provider can use a CPUoD provider and write their application for that environment. The end user pays for an application that scales by usage of the application (which may or may not need more compute) but the scalability and cost of the infrastructure is hidden from the user. From the customer’s standpoint, this is a “cloud” + application. But buyer beware, as Bob Moul of Boomi points out, many things calling themselves SaaS are not.
· Platform as a service (“PaaS”): This is the newest category. It began when Salesforce realized that their SaaS application could be decomposed into more basic units that could be building blocks for any application. Forms, tabs, and links, tied together with workflow logic and wrapped around data. Force.com is a generic representation of an application – no data, no logic, but all the means to present, push, and pull information. To build an application, one “programs visually”. Customize a form, create a workflow for the application, specify the data types via fields, and your app is built. PaaS removes the engineering level concepts in writing code in computer languages like C++ or Java (compiling, de-bugging, inheritances, message passing, etc), and incorporates the infrastructure scalability of CPUoD. Like SaaS, the purchaser of an application built on a PaaS platform pays an application fee that assumes the infrastructure scales transparent to them. Unlike SaaS, PaaS creates multi-tenancy across applications! There is a single shared instance of a platform that supports multiple applications running on one or many CPUoD infrastructures.
Where’s the opportunity for startups? Well, building and running clouds are a complex and costly activity. It’s hard to envision as a young company having any comparable buying leverage on the CAPEX side. One cannot hope to get anywhere near the same discount as Google on CPUs and motherboards. And people use Amazon because it’s cheap. The only hope I see for companies to make it are 1) in differentiated scaling systems that drive down the OPEX cost equation, 2) such a differentiated coding/support environment that people are willing to pay a real premium, or 3) gaining critical mass in a specific ecosystem of diverse applications that generate a network effect to one’s cloud. The other area I like are plays that ride on top of clouds providing value added services on top that are gaps for the CPUoD/SaaS/PaaS provider . That shifts the game from economic capital to an intellectual capital exercise, where nimble innovators thrive!