- Software-as-a-Service: Although the term "software" denotes any piece of software, the term SaaS is usually applied to the idea of delivering a complete software application to its end users over the Web, and typically with a subscription or per-usage pricing model. Examples include Zoho and Salesforce.com.
- Infrastructure-as-a-Service: IaaS is about providing basic IT resources, such as compute power, memory and storage, over a network (typically the Internet) and usually with a subscription or per-usage pricing model. Examples include Amazon Web Services, GoGrid and Flexiscale.
- Platform-as-a-Service: The term PaaS is often confused as it is actually used to refer to to two distinct elements:
- Web-based development tools (aka IDE). This could more accurately be refered to as Tools-as-a-Service (TaaS).
- A run-time application platform that enables running applications in the cloud, typically on top of an IaaS and delivered as SaaS.
The two types of PaaS are sometimes confused because vendors often offer them combined as a single solution. Things are further confused because they often include a third, separate, component: that of a development framework or programming model (what is commonly referred to as the API).
To understand this better, let's compare to the more familiar and established world of Java. Building and running a standard Java app requires three main elements: the API (the Java programming language itself), a run-time platform (the Java Virtual Machine, or JVM -- or more accurately, the Java Run-time Environment, or JRE) and development tools (popular IDEs such as Eclipse and IntelliJ). Note that the three are separate from each other. A developer can choose which IDE and which JVM implementation (from IBM, Oracle, Sun or others). Also taking advantage of the Java Run-Time Environment does not require the Java programming language. One can use other interfaces such as JavaScript, Groovy and JRuby.
Second, they decided that you cannot separate the four elements from one another. They are tightly-coupled. You cannot use their tools without also adopting their API, run-time platform and hosting service. If you like their tools, and want to use them with other run-time platforms, APIs or cloud providers (hosting), too bad.
Third, they didn't leverage standards. Although their programming language syntax is C-like, so it is at least familiar to many developers, it will not execute on other run-time platforms as-is.
Go-To-Market Strategy
Generally speaking, achieving adoption for a new platform is a difficult task. It is true that the advent of cloud computing creates an opportunity for new players, but major challenges remain. There seem to be four main approaches to doing this:
- Brute Force: the very biggest vendors have the marketing muster, credibility and resources to make it happen by "brute force." An example of such an approach would be Google App Engine. Google has taken the exact same approach as Bungee -- they provide all four elements -- but they obviously have the market visibility and budgets to achieve fast adoption.
- Open Source: It means two things: first, pricing adoption barriers are removed (i.e., offer it for free and develop premium products and services later). Second, the product source code is available, allowing end users to customize it and the comfort of having access to source if something happens to the vendor. 10gen is an example of a vendor taking this approach.
- Specialized: Focus the platform on a particular segment of the market, instead of trying to be all things to all people. The key is that you have to build a "total solution" for that particular segment. This is reminiscent of Geoffrey Moore's Crossing the Chasm model. Ning is a good example, as it's a platform focused exclusively on building social networking applications. Other forms of specialized platforms could focus on a particular industry or type of application.
- Ride the Coattails:This strategy involves building a platform that allows developers to leverage an existing install base. The Facebook Platform is a good example. Given that today many applications expose their APIs to the general public, vendors other than the 'owner' of the install base can take this strategy.
Target User
Another dimension PaaS vendors should think about is who is the target user of the platform. The typical choices are programmers versus so-called business users (non-programmers). Bungee, Google App Engine and 10gen are all clearly targeting programmers. Ning, on the other hand, allows people without any code-writing skills to quickly create their own social network. They do, however, offer developers the ability to further customize their application through programming.
Totality of the Solution
As
already noted, PaaS-related vendors need to decide which elements of
the 'stack' they provide. Specifically, do they provide the run-time
platform, the development tools, the hosting service, all of the above?
And if so, do they lock users into their components or do they allow
use of certain components from other vnedors? Here's a list of vendors
and the choices they made:
Product | Run-Time | Tools | IaaS | API | Primary Target Users |
App Focus |
BungeeConnect | Yes | Proprietary web-based IDE |
Yes | Yes. Proprietary | Developers |
Free form |
AppJet | Yes | Proprietary web-based IDE |
Yes | Semi-proprietary, JavaScript-based | Developers |
Free form |
Jboss Cloud | Yes | Stanadard, installed IDEs |
No (suports EC2) | Standard (J2EE) | Developers |
Free form |
GigaSpaces Cloud | Yes | Standard, installed IDEs + Cloud Tools for deployment |
No (supports multiple clouds, including EC2) | Standard (Java/Spring, .Net, C++, JavaScript, Groovy, JRuby, JMS, JDBC, Jcache) |
Developers |
Free form |
Aptana Cloud | Yes, for PHP and AJAX1 | Aptana's open source installed IDE (based on Eclipse) |
Restricted to Aptana hosting2 |
Flexible IDE for a variety of APIs, including JavaScript/AJAX, PHP, Ruby, Java | Developers |
Free form |
Force.com | Yes | Yes | Restricted to Salesforce.com hosting |
Proprietary | Database-centric | |
DabbleDB | Yes | Proprietary web-based tools |
Restricted to DabbleDb hosting |
JavaScript based on JSON schema |
Business (developer customization options) |
Database-centric |
Zoho Creator | Yes | Proprietary web-based tools |
Restricted to Zoho hosting |
Proprietary | Business (developer customization options) |
Database-centric |
LongJump | Yes | Proprietary web-based tools |
Restricted to LongJump hosting |
Java, REST, SOAP |
Business |
Database-centric, Workflow-centric |
Google App Engine | Yes | Standard, installed IDEs + SDK |
Restricted to Google App Engine hosting |
Python (with limitations) and additional task-specific APIs |
Developers |
Free form |
Coghead | Yes | Proprietary, web-based tools |
Restricted to Coghead hosting |
Proprietary |
Business |
Database-centric, workflow-centric |
WyaWorks | Yes | Proprietary web-based tools, and accessible via installed IDEs | Provide hosting and allow deployment on any infrastructure | JavaScript, JSP, Java |
Business and Developers |
Free form |
Intuit Quickbase | Yes | Proprietary, web-based | Restricted to Quickbase hosting | Proprietary3 Http API, XML/XSL and a Formula Language | Business |
Database-centric |
10gen | Yes | Yes, but you can develop code with standard IDE |
No, supports multiple clouds |
Standard (JavaScript, Python, Ruby) |
Developers |
Free form |
Rollbase | Yes | Proprietary, web based tools | restricted to Rollbase hosting | Proprietary | Business (developers cutomization options) | Database-centric |
Morph Labs | Yes | Not provided by Morph | Restricted to Morph Labs hosting | Standard (Java, Ruby) | Developers | Database-centric |
- According to a comment posted by Kevin Hakman of Aptana, a Ruby-on-Rails run-time will be available soon.
- Aptana Actually uses Joyent as the host today (although this fact is transparent to the user). The company plans to add the ability to choose other hosting providers and does not see hosting as part of its business model (see comment by Kevin Hakman below).
- The QuickBase API is proprietary, but like others on the list, it it can be wrapped by other, standard APIs. The QuickBase user comunity has already done so for Perl, Ruby, PHP and others.
Community and Eco-System
Another important aspect for any platform, PaaS included, is the notion of an eco-system and a community that is built around it. How well the platform vendor encourages, enables, nurtures and promotes this community is of critical importance. There are a number of ways to do this:
- Classic community tools: forums, ability to share and blog, wiki documentation editable by users, etc.
- Allow Extension of the Platform:
This can be achieved by exposing APIs and/or open sourcing the code and
providing the process and tools for submitting extensions, plug-ins and
add-ons, bug fixes, etc. 10gen, for example, has open sourced its
platform. Many of the other players in the table above are exposing
APIs and providing other ways to modify and customize the platform. At
GigaSpaces, as another example, we open sourced our API -- OpenSpaces
-- and created the openspaces.org community site, which lets developers share their creations.
- Create a marketplace around the platform: Often
the PaaS vendor already garners interest and attention and can make
that marketing prowess available to its own users. Many of the PaaS
providers listed here allow their users to list their creations in some
sort of a catalog or marketplace. Other users can sometimes clone the
creation and extend it, leveraging work that has already be done. In
many cases the platform vendor allows its users a way to monetize their
efforts. Salesforce.com's App Exchange is a good example of this. By
making its platform open and extensible, Amazon enabled a whole cottage
industry to develop around its Amazon Web Services platform, with
companies such as RightScale.
- Access to end-user data: One of the most effective (and tricky) ways to foster an eco-system around the platform is to allow building applications that can access end-user data in other applications. Now when I say "access", I mean that they have the technical ability to do so. The end user, of course, needs to approve such access. For example, when you build an application on Force.com, it can access the contact, account and deal information in the users Salesforce.com application.
If anyone thinks I misrepresented any of the solutions in the table above, or if you have any other thoughts, please comment.