Matt McAdams writes an interesting guest post for Phil Wainewright’s ZDNet blog, Software as Services. I knew when I read the snarky title, “Database.com, nice name, shame about the platform,” I had to check it out.
The key issue McAdams seems to have with Database.com (aside from the fact his own company’s vision of PaaS is much different, more in a minute on that) is latency. He contends that if you separate the database from the application layer, you’re facing many more round trips between the application and the database. Given the long latency of such trips, your application’s performance may degrade until your app “will run at perhaps one tenth the speed (that is, page loads will take ten times longer) than a web app whose code and data are colocated.” McAdams calls this a non-starter.
If using Database.com or similar database-in-the-cloud services results in a 10x slower app, then McAdams is right, but there are already ample existence proofs that this need not be the case. There are also some other interesting considerations that may make it not the case for particular database-in-the-cloud services (hereafter DaaS to avoid all that typing!).
Let’s start with the latter. Salesforce’s offering is, of course, done from their data centers. From that standpoint, you’re going to pay whatever the datacenter-to-datacenter latency is to access it if your application logic is in some other Cloud, such as Amazon. That’s a bit of a setback, to be sure. But what if your DaaS provider is in your Cloud? I bring this up because some are. Of course some Clouds, such as Amazon offer DaaS services of various kinds. In addition, it’s worth looking at whether your DaaS vendor hosts from their own datacenter, or from a publicly accessible Cloud like Amazon. I know from having talked to ClearDB‘s CEO, Cashton Coleman, that their service is in the Amazon Cloud.
This is an important issue when you’re buying your application infrastructure as a service rather than having it hosted in your own datacenter. It also creates a network effect for Clouds, which is something I’ve had on my mind for a long time and written about before as being a tremendous advantage for Cloud market leaders like Amazon. These network effects will be an increasing issue for PaaS vendors of all kinds, and one that bears looking at if you’re considering a PaaS. The next time you are contemplating using some web service as infrastructure, no matter what it may be, you need to look into where it’s hosted and consider whether it makes sense to prefer a vendor who is colocated in the same Cloud as your own applications and data. Consider for example even simple things like getting backups of your data or bulk loading. When you have a service in the same Cloud, for example like ClearDB, it becomes that much cheaper and easier.
Okay, so latency can be managed by being in the same Cloud. In this case, Database.com is not in the same Cloud, so what’s next? Before leaving the latency issue, if I were calling the shots at Salesforce, I’d think about building a very high bandwidth pipe with lower latency into the Amazon Cloud. This has been done before and is an interesting strategy for maximizing an affinity with a particular vendor. For example, I wrote some time ago about Joyent’s high speed connection to Facebook.
Getting back to how to deal with latency, why not write apps that don’t need all those round trips? It helps to put together some kind of round-trip minimization in any event, even to make your own datacenter more efficient. There are architectures that are specifically predicated on this sort of thing, and I’m a big believer one whose ultimate incarnation I’ve taken to calling “Fat SaaS“. A pure Fat SaaS application minimizes its dependency on the Cloud and moves as much processing as possible into the client. Ideally, the Cloud winds up being just a data repository (that’s what Database.com and ClearDB are) along with some real-time messaging capabilities to facilitate cross-client communication. The technology is available today to build SaaS applications using Fat SaaS. There are multiple DaaS offerings to serve as the data stores and many of them are capable of serious scalability while they’re at it. There are certainly messaging services of various kinds available. And lastly, there is technology available for the client, such as the Adobe AIR ecosystem. It’s amazing what can be done with such a simple collection of components: Rich UX, very fast response, and all the advantages of SaaS. The fast response is courtesy of not being bound to the datastore for each and every transaction since you have capabilities like SQLite. Once you get used to the idea, it’s quite liberating, in fact.
Surprisingly, many have seen this model, though they may not have thought much about it. As McAdams points out, “Database.com will do better with developers of mobile apps, which contain the user interface and the app code in the same bundle.” Yup, many mobile apps are Fat SaaS. The architecture becomes a lot more interesting when you start thinking about how popular apps are on mobile versus apps in browsers and why. This also points the way towards some of the types of apps that are particularly well suited to Fat SaaS: complex games, rich content creation applications, and a variety of things where the simple fill-in-the-form-and-do-the-workflow metaphor just isn’t right would do well with Fat SaaS. There are also advantages for cost and scaling, where Fat SaaS it works great so long as your application’s usage patterns are largely hub and spoke. What I mean by that is that there isn’t a lot of need to do cross-client processing in bulk. Sure, a record may pass through several user’s clients on its journey, but you don’t have to do complex business logic that involves looking at thousands of those records across many clients very often. When you’re doing hub-and-spoke, the client hardware is free in Fat SaaS. It may be cheap in an elastic Cloud, but it’s hard to beat free!
The situation for aggregate processing looks worse for Fat SaaS, but it isn’t necessarily black and white. Very often we find systems whose transaction processing behavior is a lot different than what we want for Business Intelligence. Hence we wind up optimizing two different datastores–one the transaction processing store, the other the BI Data Mart. The same approach can work here.
One last comment about McAdams’ post. He concludes with a pitch for his company’s products:
The bigger criticism applies to all DaaS offerings, and it’s this: they’re solving the wrong problem. Making databases more accessible to programmers who already know how to use databases is nice and all, but how about making databases more accessible to business users?
Why not let non-programmers build web apps without writing code? To do this, Database.com would have to include things that Salesforce.com discloses explicitly are not part of the platform: page layout tools, reports, dashboards, and so on. These can be built with Force.com, but using Force.com requires programming knowledge.
It seems to me the more innovative cloud DB players are the companies providing a cloud database with a complete, integrated app development platform that requires no coding, only point-and-click configuration. These platforms, like TrackVia (the author’s company) or Intuit’s QuickBase, are doing more to change how cloud apps get built than the better-known DaaS vendors are.
As I’ve said in previous posts, I’m not a fan of the “anyone can program with our special point and click application” ideas. The demos look whizzy, but this is really not innovation, and the tools are pretty limited in how far they’ll take you. We’ve similar tools for a long time under earlier guises such as 4GL or later guises such as the PC desktop databases like dBase or Microsoft Access. We’ve seen it in languages with UI Builders like Visual Basic or Adobe Flex. I have to say, we’ve seen a lot more point and click programmers than we have seen DaaS. In addition, the idea that the problem a DaaS solves is one that is already solved, in other words that they’re trying to make understanding databases easier for programmers who already understand databases is also pretty far off base (and surprisingly given McAdams’ past in DBA software).
DaaS is all about two things that many developers are usually not so good at: Scaling and Automating Operations. There is a lot of work required for either and it’s work that the majority of developers who may have a ton of domain expertise for their app area typically are short on.