[Haskell-cafe] Picking an architecture for a Haskell web app
Joel Reymont
joelr1 at gmail.com
Wed May 9 11:42:12 EDT 2007
Folks,
I have finished an alpha version of my EasyLanguage [1] to C#
compiler and need to deploy it on Amazon EC2/S3.
The compiler web interface is very simple: paste EL code, get back C#
code or the same EL code with the error highlighted. I view the site
as more than just a compiler, though, and want a blog, forums, etc.
Last but not least, I want to be able to update portions of the site
without shutting it down.
My choice seems to boil down to HAppS [2], HOPE [3], or a combination
of Ruby/Rails with Lambdabot.
At first glance, HAppS lacks publishing (my ultimate need) but
promises an interface to S3 sometime in the future. My understanding
is that it's ready but is not being released. HAppS is heavy on
features that I may not make use of. I had a hard time understanding
the HPaste [4] code written using HAppS and I don't fancy using XSLT
as my HTML template language.
HOPE has a publishing framework (blog, RSS, comments). I could write
the forums or just use Google Groups. I like the module system and
the FCGI interface should let me couple HOPE with Lighty [5]. The
HOPE code base looks clean and simple and I'm guessing that adding
Lambdabot-style dynamic loading of modules would be straightforward.
Overall, HOPE has everything that I need, without unnecessary extras.
It does not have an interface to Amazon S3, though, and I would need
that to rewrite the storage bits to use S3 instead of a regular
database.
Lambdabot by itself doesn't offer much apart from robust dynamic
loading of Haskell code. Its features have been heavily tested,
though, which gives me a warm feeling. I'm thinking that the same hot-
loading technology that Lambdabot uses could be coupled with either
HAppS or HOPE. Lambdabot has a FCGI which should make mixing it with
HOPE particularly easy.
Going with Ruby and Rails I will have everything I need and more. The
compiler could run in a separate server (think Lambdabot) but I would
need to manage two different platforms.
Is my assessment correct? Did I miss anything?
What approach do you favor?
Thanks, Joel
P.S. I have the same compiler written in OCaml which is what I
started with. Developing it has been a relative breeze but deploying
on the web was a tale of frustration. I gave up and finished the
Haskell version.
[1] http://lambda-the-ultimate.org/node/2201
[2] http://happs.org/HAppS/README.html
[3] http://hope.bringert.net/about
[4] http://hpaste.org
[5] http://www.lighttpd.net/
--
http://wagerlabs.com/
More information about the Haskell-Cafe
mailing list