Thinking of leaving the App Engine
Posted: Fri Mar 15, 2013 11:32 pm
I started on the google app engine for Magicus Occultus largely because I was coming from the background of having written Angela, which uses an object datastore and is not relational. At the time, the GAE seemed like a nice alternatice to Amazon Web services, Rackspace, etc. First off, I had to drop Angela as my core engine, which runs a continuous loop (actually several. It's highly multithreaded), because GAE can only respond to web requests and has a two second cutoff. I went with some Angela patterns and reckoned that I'd simplify my architecture anyway.
Now, I'm starting to think differently. Magivus Occultus is fundamentally a sandbox game and carries over some of the "cool" features that I designed for in Angela. For instance, it has object assemblies. Angela was basically designed around supporting object assemblies. Except that now as I understand the app engine better, the performance might be ok and the scalability great (a big reason why I went with GAE), the monetary runtime cost might just be too high when your character starts to look like a social graph. Also, I do not like having to resort to geohashing for determine distances between entities; especially as filtering by distance is such a critical "central engine service". A direct point to point distance calculation is possible and I wrote a library method for determing the distance between any two geo coordinates; bit this can get expensive.
Anyway, I'm thinking of leaving the GAE behind and moving to another cloud computing platform (which I won't name yet) that would allow me to run Angela (though in modified form, using a relational datastore), while using a high performance columnar database which incorporates R (at least in the on premises version, I have to double check on the cloud version) into SQL statements. I might look into what kind of refactoring and re-architecturing that I'd need to do to get Magicus Occultus running on Angela in Jython on this framework.
Now, I'm starting to think differently. Magivus Occultus is fundamentally a sandbox game and carries over some of the "cool" features that I designed for in Angela. For instance, it has object assemblies. Angela was basically designed around supporting object assemblies. Except that now as I understand the app engine better, the performance might be ok and the scalability great (a big reason why I went with GAE), the monetary runtime cost might just be too high when your character starts to look like a social graph. Also, I do not like having to resort to geohashing for determine distances between entities; especially as filtering by distance is such a critical "central engine service". A direct point to point distance calculation is possible and I wrote a library method for determing the distance between any two geo coordinates; bit this can get expensive.
Anyway, I'm thinking of leaving the GAE behind and moving to another cloud computing platform (which I won't name yet) that would allow me to run Angela (though in modified form, using a relational datastore), while using a high performance columnar database which incorporates R (at least in the on premises version, I have to double check on the cloud version) into SQL statements. I might look into what kind of refactoring and re-architecturing that I'd need to do to get Magicus Occultus running on Angela in Jython on this framework.