views:

1565

answers:

5

I’ve started learning Erlang a few days ago and it’s definitely a very interesting language and very suitable for web development (back end at least). I am going to experiment and eventually settle with one Erlang web framework to use for my next project. Since Erlang is “new” is kind of hard to decide which framework to use (i.e. lack of documentations and blog posts). So far my googleing has returned me 3 results and I am wondering anyone who has experience in Erlang (especially Erlang web development) please comment on the pros and cons on each framework and add any missing frameworks.

Project requirement:

  1. Web application
  2. Database
  3. HTTPs
  4. Storing files (e.g. images)
  5. PDF manipulation
  6. Dynamic logic comparison (e.g. LHS == RHS etc)

Erlang web framework:

  1. Nitrogen (preferred so far)
  2. Erlyweb
  3. BeepBeep
  4. Chicago Boss
  5. Erlang Web
  6. webmachine

Erlang database:

  1. Mnesia (preferred so far)
  2. CouchDb
  3. MongoDB

Concrns:

  1. Nitrogen

    • JavaScript generation

      Since Nitrogen generates and embeddes JavaScript code on to the page which increased the page size. I am not sure if it’s even possible to somehow “separte” the generated JavaScript code from raw html (somehow it can be cached by browser) in order to reduce data transferred down the wire. But I think in general event model and auto wire event is very suitable for application type but not so much for content/public facing type.

Thank you!

+2  A: 

I'm working with CouchDb. Here is a quick start guide I have written. It is in russian language, but the code samples are clear. I chose this database engine because it was written on Erlang and has a good documentation, samples and libraries on different development languages.

And I'm using BeepBeep, because it is most lightweight framework I have found. Earlyweb is too big for my tasks.

demas
What's the benefit of CouchDB being "written on Erlang" for you, if you communicate with it over HTTP?
Zed
It's pretty good for operations/monitoring to have a "uniform technology stack" (damn, that felt buzzwordy).
Christian
And it's easier to understand how it works when I can look at CouchDb source.
demas
Would be good indeed, if you didn't have to run them in separate VMs, using JSON over HTTP to communicate between the two. Also if you look at the CouchDB dependency list, it's far from "uniform" with anything :)
Zed
I believe Mnesia is written in Erlang. Also I believe Mnesia and Erlang are "unified". www.mdstud.chalmers.se/~md1matso/erlanglinkfaulttolerance.pdf
Jeffrey C
+4  A: 

This blog post compares a few Erlang web frameworks.

Vijay Mathew
I would really like to see comparisons between Nitrogen vs BeepBeep.
Jeffrey C
+3  A: 

Personally, I went with mongodb (cos it has native erlang drivers and other advantages) and webmachine for URL dispatching. I like the idea of having very simple wireframe HTML and mostly piping JSON from webmachine and mongodb to the front end to be processed by JQuery or whatever. However, another interesting front end would be cappuccino.

John Galt
A: 

VoltDB (http://voltdb.com/) is an opensource & commercial database, ACID, scalable, and very high throughput (50x from leading OLTP DBMS). VoltDB recently develops erlang client API, by Henning Deidrich. Just join the forum and find henning.

aris
A: 

As the previous answer stated, VoltDB provides extremely high performance OLTP functionality (transactions and ACID) at scale. There is an Erlang client library available at http://community.voltdb.com/getinvolved#svn

tmcallaghan