Alternatives to Google App Engine

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 but that site doesn’t say much beyond “ 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.

This entry was posted in Web development and tagged , , , , , , , , , , , , , , . Bookmark the permalink.

17 Responses to Alternatives to Google App Engine

  1. Venkatesh says:

    I see you share my experience with APpengine. I am totally frustrated with apengine. First, lack of RDBMS, means spending extraordinary amount of time on data-store design. Simple things like maintaining count take a lot of work . Then having done all the hardwork, if the DB-Design changes, one is hosed, since there are not “bulk” updates.
    All this would have been justified if the end result was a scalable piece of software instead of the “time-out” or “out-of-quota” joke of a application that is delivered.

    I can totally see why the companies that are acquired by Google disappear in a worm-whole of eternal stillness.

  2. Nati Shalom says:

    Hi Josh

    I enjoyed reading your post.

    “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.”

    In general all languages supports the core JavaSpacs API in both remote and embedded mode. You can use the JavaSpaces API from each of those langagues to perform messaging, event processing and parallel processing logic. This include the integration with O/R mapping tools and databases integration. Other then the JavaSpaces API you can embed your .Net or C++ business logic as services that can be hosted within our SLA driven container and benefit from self-healing and simple deployment and management capabilities. The thing that is available only to our Java users is our OpenSpaces-Spring based API which uses annotation and dependency injection. We will be adding similar capabilities to our .Net framework using one of the popular IOC containers. The C++ framework is a bit less enhanced then the Java and .Net portion of the product and designed primaraly to provide the ability to provide rmeote access to our data-grid services through C++ or to run C++ as.

    The other thing that is important to note is that the framework provide the ability to mesh Java, ..Net and C++ under the same application – for that purpose we created a portable binary serialization format that enables high performance interoperability between all those three languages.

    Dynamic language support enables you to use dynamic language binding support available in Java platform and access our Java API through JavaScript, Groovy and other supported languages.
    In addition to all that we added specific support to inject dynamic language scripts on the fly to a distributed cluster.
    This provides the ability to run business logic with our data service while the application is running without the need to bring either the data or business logic down..

    I hope this clarifies some of your question on that regard.

    See more references below:
    XAP C++ Binding
    XAP Dynamic langague support

    Nati S.

  3. Rosh says:

    Have you looked at Appistry EAF ( It supports Java, .NET, C++

  4. Krishna says:

    there is one more on Amazon cloud

  5. Chris says:

    You definitely must take a look at
    They offer dedicated servers, REAL ones, not some high-stress virtualized servers.

  6. Raynor says:

    There is one HUGE advantage of GAE. You can simply create the app, put it into GAE, and then forget about infrastructure or equpiment. It’s just that easy. GAE is very agile, and suits most applications from a start-up till its flourishing. One recent example:

  7. As GAE stands now, I don’t think its accurate to state that its suits most applications. In particular any app that commonly needs to an update more then one entity (i.e. row, record, etc.) while processing a user’s action is going to run into GAE’s self-created conflict between its 1000 mcycle soft cap and the mcycles consumed in updating a two entities. The issue also isn’t confined to just needing to update multiple entities. If an entity has too many properties or a list property with to many elements then it will also go over the 1000 mcycle soft cap while updating an entity.

    Also if an app needs to update entities from different entity groups while processing a user action or it needs to rank entities then writing the code to reliably do this is very non-trivial (i.e. you don’t ‘simply’ create the app).

    Google could fix the issue with the mcycle consumption of updates running into their 1000 mcycle soft cap by raising the soft cap, not counting mcycles consumed by their infrastructure code, or simply improving the performance of update, but they have thus far declined to even acknowledge the issue.

    See my other posts on my experience GAE for more in depth details.

  8. Cameron says:

    Enomaly is not cloud provider, afaik, they just have python gui for KVM. I’d classify it as custom software which somehow wants to be attached to cloud computing.

    Appistry looks order of magnitude more interesting and closer to GAE.

  9. Jason Meiers says:

    I like they provide infrastructure including the application server at a pay only what you use model. on-demand utilitycomputing charged on actual elapsed cpu time used from the customer. so basically your infrastructure cost is a fraction and ROI is immediate, literally.

  10. JP says:

    3Tera’s Applogic does provide a hosted option. Take a look at However Applogic is simply enabling technology that allows one to use commodity hardware and create what amounts to a private cloud.

    Great article. Thanks.

  11. Randall says:

    How can Google run across billions of nodes and App Engine be so limited?

    I don’t understand it. A site built 12 years ago on Perl and text files could out perform GAE.

  12. Pingback: GigaSpaces as Alternative to GoogleAppEngine for the Enterprise | Deconstructing the Web with Larry Root

  13. Pingback: Waiting to see if App Engine or an alternative gets there first « Josh Heitzman’s Impersonal Blog

  14. Hi Josh –

    In your entry, you mentioned the following:

    “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.”

    The concept of in-memory transactions in a highly-available grid infrastructure — including the support for sync or async updates to a database — comes from Oracle Coherence:

    The implementation you mentioned is a bit of a me-too 😉

    Regarding EC2, the largest running system we’ve had on EC2 was 1500 Coherence nodes, so it’s very scalable ..


    Cameron Purdy | Oracle

  15. thank you mr admın very good

  16. Bud Lirag says:

    Youre so cool! I dont suppose Ive learn something like this before. So good to find anyone with some authentic thoughts on this subject. realy thanks for starting this up. this web site is one thing that’s wanted on the internet, somebody with somewhat originality. helpful job for bringing one thing new to the web!

  17. Chriss Stevenson says:

    You definitely must take a look at BeeSphere Cloud Service Bus (

Have something to say?

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s