Make Heroku-Deployable
See the https://github.com/NetLogo/Galapagos/tree/heroku branch for more information. Galapagos isn't too far away from being deployable on Heroku. The things that are missing:
- Pluggable configuration for the play cache - EHCache is used by default, but that's a poor choice for Heroku (not too difficult)
- Make create-standalone requests read the file from disk instead of via a circular request to the server (not difficult)
- Akka actor work (difficult)
- Debug various problems like why the TeamAssembly model won't compile (????)
The value this would add is giving us the ability to stick a deploy to Heroku button on a page for interested parties to look at. Additionally, we could move off of Linode. However, since running the server will require one background worker at minimum, anyone who wanted to run their own server would incur a ~ $35/month charge.
curious what the Akka issue is?
For one heroku worker to communicate with another, it must pass through something like RabbitMQ. Since we use Akka workers to handle Teletortoise in the background (if I understand the architecture of teletortoise correctly), that would mean setting up akka worker(s) at either end of RabbitMQ. This article may be able to offer more information - https://devcenter.heroku.com/articles/scaling-out-with-scala-and-akka
Just FYI - I'm not a Scala developer, but my instance is currently deployed to Heroku and the create-standalone feature is working just as well as on the main, Linode-hosted server. To get it to deploy, all that was necessary was to add a conf/application.conf:
logger.application=DEBUG
application.defaultEncoding=UTF-8
application.remote.killswitch=true
application.langs="en"
logger.root=ERROR
application.secret=<<RANDOM SECRET>>
logger.play=INFO
Just change <<RANDOM SECRET>> to an actual secret. It should be noted that no other features have been tested.
Yes, create-standalone works most of the time, but we've had trouble with some models, "Team Assembly" most noticeably. Thanks for passing your experience along!