Recently there has been a surge of interest in PaaS. It is partly fueled by the maturing of the various offerings and partly by industry developments, such as the $250 million acquisition of Heroku by Salesorce.com (disclosure: I was an advisor to Heroku) and Amazon Web Services releasing Elastic Beanstalk and CloudFormation. Case in point: just yesterday, PaaS player DotCloud announced a $10 million funding round from top-tier funds Benchmark and Trinity.
Not a lot of information is provided on the DotCloud web site and announcement -- they are still in private beta -- but one thing is clear: they are positioning themselves against Heroku.
In the announcement, DotCloud bills itself as a "2nd-generation PaaS" (thank god not "PaaS 2.0") and the news articles about it imply that Heroku is first generation.
Here's a quote from TechCrunch:
DotCloud’s appeal is in its flexibility. Unlike the first generation Heroku and its clones, DotCloud lets developers to build and deploy their applications rapidly by allowing them to customize components and supporting multiple languages and tools.
This is also the positioning on DotCloud's home page, where they state in one of their four key benefits points (italics mine):
Not just for toy apps.
Anyone can deploy "Hello World" in 30 seconds. But you're building a product. You need the freedom to mix and match languages, frameworks and databases as you see fit. DotCloud supports that. Our competitors don't.
I have no doubt that DotCloud has a great concept, technology and team -- if only because smart nvestors like Peter Fenton, Ron Conway, Chris Sacca, Dan Scholnick and others put so much money in them -- but they are missing the point on this one.
The approach of giving a more flexible platform -- one which allows you to "mix and match languages, frameworks and databases" and in which you can "pop the hood", as DotCloud seems fond of saying -- that idea is not a more evolved or better generation of PaaS; it's simply a different one.
It's not a new idea in tech and software that there is a trade-off between flexibility and ease-of-use; between catering to the 20% power users and the 80% everyday users; between general purpose platforms and specialized platforms. PaaS is no different.
More than a year and a half ago I had written about the need for a variety of specialized clouds (and specifically PaaS clouds), which are different from each other on a number of dimensions, which included things like: framework support, usability, application use case, domain (i.e., functionality) and more.
A multi-language PaaS is not superior to a single-language PaaS. There must be a trade-off in the technology itself, and also a different go-to-market approach.
From a technology perspective, a very focused platform, such as Heroku in the Ruby space, has many advantages. Everything is tightly integrated, pre-installed and pre-configured. This shields the user from much of the unwanted "under the hood" and repetitive tasks. It also makes sure that -- accepting the limitation of ruby only -- the platform can provide much richer functionality out-of-the-box and much shorter development and deployment cycles.
The DotCloud approach, on the other hand, gives more flexibility and would serve a more complex class of applications that indeed use multiple languages and frameworks. But the trade-off is more complexity, both in their own development efforts as well as for their users. Which brings me to my second point about go-to-market strategy.
As a general rule, startups need to focus on a well-segmented community of customers. For Heroku, the intense focus on ruby developers was a major contributor to their success (for more on this see my post from June 2009 Ruby Developers: The Cloud Generation). It allowed them to keep their message very focused and direct all of their marketing efforts (and budget) on a very specific audience.
I am not sure what DotCloud's market segment is yet. It's not very clear from their home page, but given that they are in private beta and just recently received funding, that's okay. They will, however, eventually have to find their focus. Displaying twenty logos of languages and frameworks on their home page is nice, but may also be confusing and off-putting to many developers.
Developers (and non-developers) now have a large and growing range of platform-as-a-service offerings to choose from. Just to give you a taste of the variety here are some PaaS examples (in no particular order), each one focused on different combinations of technology platforms and/or types of users and applications:
Amazon Elastic Beanstalk, Microsoft Azure, Google App Engine, Heroku, VMForce, Makara/Redhat, Force.com, VMWare Cloud OS (aka AppCloud/DevCloud), DotCloud, Cloudbees, PHPFog, Engine Yard, Application Craft, Morph Labs mCloud On-Demand, OrangeScape, WorkXpress, Wix.
Although we will see more players emerge in the space, not all of them will be winners. That said, to answer the question in the title of this blog post: What's the best platform-as-a-service? It depends on who you are and what you're trying to do.