web framework, db, architecture query, with requirements
Mon Feb 7 15:01:58 CET 2011
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 &
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:-
1) Backend comprising of :
a) RESTful App-engine:
(i) Webmachine (communicating data w/ FE via JSON), or
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
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
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
Some advice / guidance on what choices & why, I could make.
More information about the erlang-questions