As I hit a wall in my development of Project Fangorn on Google’s App Engine platform I started looking around for alternative platforms. While there are numerous providers that claim to provide a cloud very few of them actually have a distributed datastore and a hosting environment that automatically expands and contracts (i.e. scale) the resources allocated to the running of your app, so the service they provide is either utility computing somewhere in between utility computing and cloud computing.

True Clouds

There is Google App Engine of course, but they aren’t currently up to what I’m trying to do.

Amazon has SimpleDB plus their Elastic Compute Cloud (EC2). While EC2 requires you to manage virtual machines, there are a number of third party providers of VM managers for EC2 that fluff up EC2 into more of a cloud. Two of these providers are Enomaly (general VM scaling) and Heroku (rails specific scaling).

UPDATE 10/23/2008: Amazon has announced a private beta for their own monitoring, load balancing, and automatic scaling service offering. No mention of price and it seems likely to be simply included with EC2 service.

One particularly interesting EC2 third party provider is GigaSpaces with their XAP platform that provides in memory transactions backed up to a database. The in memory transactions appear to scale linearly across machines thus providing a distributed in-memory datastore that gets backed up to persistent storage. A lot of the docs reference Java, but the page returned by the aforementioned link states “…deploy applications that use Java, .Net, C++, or even scripting languages…” so after a cursory investigation it is not clear what aspects of their platform is only accessible via Java and which aspectes are generally accessible. Bears more investigation.

10gen has a service in alpha preview that has a distributed datastore called Mongo and a hosting environment called Bable that automatically scales the resources hosting your app to fit current demand. Like Google 10gen doesn’t provide VMs that you can run just anything on. Currently apps can be written in server side JavaScript, Python, and Ruby (Update 10/21/2008 – it is only Jython and JRuby that are supported), so they are ahead of Google with respect the number of languages supported.

Cloud Processing but Utility Storage



The combination of Amazon’s S3, EC2, and third party auto-scaling VM managers falls into this category.

FlexiScale and Mosso both look to provide services similar to Amazon’s combination of EC2 with third party auto-scaling VM managers and Simple Storage Service (S3), as they make not claims to to have a distributed datastore, but just a SAN/NAS that can be accessed from the VMs.

Just Utility Computing

The combination of Amazon’s S3 and bare EC2 (i.e. no third party VM managers) falls into this category.

GoGrid has persistent storage that backups your server image, but it appears to be limited to just backups and doesn’t appear to be a persistent datastore.

AppNexus, Joyent, and Sun’s Project Caroline all look to provide services similar to Amazon’s combination of bare EC2 and Simple Storage Service (S3).

Future offerings



Sun also has Network.com but that site doesn’t say much beyond “Network.com is in transition…” which isn’t very informative.

Microsoft is supposed to be announcing something in this space at PDC at the end of this month. From what I remember (can’t find the article now) it will provide a .Net only hosting environment but I don’t recall if there was going to be any kind of distributed datastore or just MS SQL Server. I came across mention of an MSFT project to distribute SQL Server so I would guess there will not be a distributed datastore at this time.

3Tera is working on turning their AppLogic grid computing product into a cloud computing service offering but it doesn’t appear that a preview is available yet and remains to be seen if it will really be cloud computing or just another utility computing provider.