[erlang-questions] web framework, db, architecture query, with requirements

Alain O'Dea alain.odea@REDACTED
Mon Feb 7 16:05:56 CET 2011

On Mon, Feb 7, 2011 at 10:31 AM, Icarus Alive <icarus.alive@REDACTED> wrote:
> Posted a question on Stackoverflow here: http://bit.ly/f3TIuo
> but this isn't exactly a cross-post, rather an Erlang specific
> extention of same :-) ... (to avoid any Erlang/Python religious wars,
> although Stackoverflow is pretty good in preventing such wars, from
> what I've seen).
> While my question there has a more generic question on which way I
> should be heading, i.e. Erlang or Python, I admit that my limited
> experience with Functional programming, and almost 12yrs history of
> doing OO & Procedural programming in imperative languages, my
> familiarity with Python is slightly higher, though love elegance of
> Erlang. The challenge is in understanding slightly more involved /
> complex constructs of Erlang. Anyhow, my query here to seek
> community's view on what might be the ideal route using Erlang/OTP and
> Erlang based Web-frameworks, given the following requirements.
> Here are my requirements --
> 1. Web2.0 (i.e. interactive AJAXy) service, but with a parallel access
> via mobile web as well.
> 2. Application will need to do things like initiate outbound
> voice-calls, send/receive SMS (think Twilio) etc.
> 3. Application will make lot of short .flv / .3gp videos (think vimio
> mini), which are not mass-appeal videos (e.g. baby's 1st walk video
> shared with grandparents, so 1 uploader, at max 3-4 diff viewers and
> 3-4 views in all, so CDN is pointless -- I think).
> 4. There will be some video/audio transcoding (mostly ffmpeg type)
> 5. Application will need to show trendlines and some charts etc.
> (think popularity alerts / ranks)
> 6. Overall, should be easy to learn, easy to maintain, has good
> community support -- documentation / tutorials / screencasts &
> active-development
> 7. While performance is not the top-most item on my priority-list, it
> is definitely a parameter, including memory-footprint, as I plan to
> run this on cloud-infra, and every MB counts.
> 8. While many people tell me to think of scaling later, but I think if
> one can spend a little time thinking about it early one, what's the
> harm. Later changes are costly.
> The frameworks & key-components that I am considering after reading
> various comparisons are:-
> Option-1::
> 1) Backend comprising of :
>    a) RESTful App-engine:
>        (i) Webmachine (communicating data w/ FE via JSON), or
>        (ii) Nitrogen
>    b) Database engine:
>        (i) some distributed/scalable/highly-reliable (cloud-friendly)
> database engine (??), or
>        (ii) VoltDB (though it's main memory requirement, 64-bit
> requirement and official support for CentOS5.4 only, is a bit
> worrying)
> 2) Frontend based on: jQuery (for regular internet thick-client users)
> / jQuery-mobile (for mobile-web users)
> That choice is driven by need to push rendering / non core-IP
> computation to the browser as much as possible & lighten the load on
> server, although I wonder how well it would work for the mobile-web
> users!
> PS> Completely understand that the above is probably a
> much-too-complex for an Erlang (& web-dev) newbie to target. But,
> that's the ultimate target, I am happy to take the right approach,
> right tools, right frameworks and keep taking baby-steps towards my
> goal.
> Some advice / guidance on what choices & why, I could make.
> TIA,
> ~i++

Zotonic, the Erlang CMS at http://zotonic.com/ is a proven solution
for building fast AJAX/comet-driven websites.  A big plus for me is
that the resulting sites are easy for non-technical people to maintain
once you hand it off.

It's lightning fast, easy to build on and easy to deeply extend.  It's
AJAX support is entirely JQuery-driven which fits your bill and makes
it generally easier to work with and extend.  It has excellent
transparent Comet/Websockets support and Michael Connors has built a
chat client using that:

In terms of scalability the team is working on Elastic Zotonic which
will support distribution of a site and content across multiple
servers.  Unless you have outrageous amounts of visitors you won't
need this.  Zotonic makes incredibly efficient use of system resources
through in-memory caching of query results.

See examples:

All of the above (except http://verafin.com/) are running on a single server.

If you want an effective solution for building websites and web
applications, then Zotonic is your secret weapon.

More information about the erlang-questions mailing list