Hello group,

One of the weaknesses of ErlyWeb from my perspective is the lack of a
Web services framework.  With Erlang's focus on concurrency and
Erlyweb's focus on making Erlang/Web development as easy as PHP etc.,
this seems a surprising omission (at least, I *think* it's an
omission; maybe it's there and I just haven't picked up on the fact).

Probably the best point of comparison is Ruby on Rails (RoR).  RoR has
had a Web services framework (ActiveWebService) from the beginning;
while it doesn't seem to have been that popular, it makes it
incredibly easy to expose functionality as Web services.

For the types of apps I generally work on, this is just golden; it
makes RoR a strong contender as the toolset of choice where otherwise
it wouldn't even be considered as an option.

I'm aware that it's possible to use Yaws+erlsom, but it has a few
weaknesses:
- erlsom's install relies on sh; it doesn't install on Ubuntu without
a bit of mucking around, and must be a challenge for Windows as well
- setting up a Web service is a non-trivial exercise; just read
through the relevant page (http://yaws.hyber.org/soap_intro.yaws) at
the Yaws site

Regards

Dave M.
On Nov 12, 6:04 am, "Yariv Sadan" <[EMAIL PROTECTED]> wrote:
> Mojo,
>
> if you're building a simple CRUD app, you can build it in pretty much
> any language with similar effort and results. ErlyWeb's goal is to
> make building webapps in Erlang as easy as in Ruby/Python/PHP/etc and
> I think it achieves it pretty well. AFAIK, Erlang will give you better
> performance than the popular scripting languages, but you'll have to
> benchmark it and decide how much it matters to you.
>
> If your app's backend is more complex than a few web servers that talk
> to a single database server, Erlang can help you even more. If to
> respond to a request, you need to do multiple things concurrently or
> do some distributed computation, or fire off background processes for
> asynchronous tasks, Erlang is the best choice by a long shot. Erlang
> is much better than other languages for Comet apps that maintain
> persistent connections to the clients (I'm sure you've seen the
> apache-vs-yaws graph :) ).
>
> For more common needs, Erlang/ErlyWeb also has better support for
> sharing session state (using Mnesia) and transaction-aware multi-db
> connection pooling (using lightweight processes + messaging) than
> other languages.
>
> Erlang/ErlyWeb is great for highly available applications (and for
> interactive and highly productive development) due to its support for
> hot code swapping. You can even change your database schema, recomplie
> your app, and start using the new schema without taking your server
> offline.
>
> And finally, Erlang is fun! :)
>
> Cheers,
> Yariv
>
> On Nov 10, 2007 7:08 AM, mojo.talantikite <[EMAIL PROTECTED]> wrote:
>
>
>
> > Thanks for all the answers, I really appreciate them.  Sometime later
> > today or tomorrow I'd like to write up some questions that pertain to
> > more of what I'm trying to do, but for now that gives me some pretty
> > good ideas as to how I could use Erlang/ErlyWeb.
>
> > Overall, what do you feel are Erlang/ErlyWeb's particular strengths
> > when it comes to web development?  Of course you can pretty much get
> > any language/framework to do what you need it to do, but how does this
> > particular combination yield itself to solving (or simplifying)
> > particular web development problems?
>
> > Thanks again, the answers were very helpful.
>
> > best,
> > Mojo
>
> > On Nov 9, 6:25 am, Al <[EMAIL PROTECTED]> wrote:
> > > On Nov 9, 9:08 am, "Yariv Sadan" <[EMAIL PROTECTED]> wrote:
>
> > > > On Nov 8, 2007 12:23 PM, mojo.talantikite <[EMAIL PROTECTED]> wrote:
>
> > > > > I'm in the very early stages of founding a startup, and currently
> > > > > we're in talks about what type of technology to be using.  As there
> > > > > aren't too many people on board now, and none besides myself that are
> > > > > technical, there is a pretty blank slate for development as of now.
> > > > > After playing around with Erlang for the past couple of days I'm
> > > > > starting to think about the pros/cons of using Erlang.
>
> > > > > Anyways, I have questions pertaining to how Erlang/ErlyWeb addresses
> > > > > certain needs and issues of scaling. I thought it might be more useful
> > > > > for a greater number of people if instead of speaking solely about our
> > > > > needs for our web app, we use an example people might be familiar with
> > > > > and get more from: YouTube.  Here are some notes on a Google Tech Talk
> > > > > that was given, which also contains a link to the tech talk video:
> > > > >http://kylecordes.com/2007/07/12/youtube-scalability/
>
> > > > > Here are some questions that come to mind when thinking about what
> > > > > they faced:
>
> > > > > 1.  Their main reason for choosing Python as their language is because
> > > > > development speed and productivity was (and is) very important for
> > > > > various reasons (one important one was probably showing prototypes and
> > > > > their progresses to potential investors).  Erlang seems to be a very
> > > > > productive environment for some applications, but how does it stand up
> > > > > for web app development?  Using Python, PHP, or Ruby has the added
> > > > > benefit of having lots of developers to draw from their experiences --
> > > > > how would Erlang compare?
>
> > > > Erlang definitely has fewer developers using it for webapps that PHP,
> > > > Python or Ruby. My subjective take is that, having done PHP
> > > > programming and played with RoR, ErlyWeb can be just as productive if
> > > > not more and its code is very concise and expressive.  I rarely feel
> > > > that I'm writing repetitive code that doesn't directly solve the
> > > > problem domain. Plus, I prefer Erlang's functional style to imperative
> > > > one. I think FP makes your code more readable and debuggable. Erlang
> > > > has fewer libraries than more popular languages, which may or may not
> > > > affect you depending on your app's needs, but I think that the fewer
> > > > libraries isn't as big an issue as some people say. Erlang has a
> > > > variety of ways for talking to other lanugages and I'd rather write
> > > > most of my code in Erlang in occasionally outsource some functionality
> > > > to another language than lock my whole app to a language I don't like
> > > > as much just because of the existence of a couple of libraries for it.
> > > > Btw, Erlang also has some tools that other languages don't have --
> > > > most notably, elegant concurrency and Mnesia.
>
> > > > > 2.  Serving content was of course a big issue.  They moved to lighttpd
> > > > > from Apache for their videos and got a lot of performance increases
> > > > > (they use CDNs for their most popular content).  Yaws seems great for
> > > > > dynamic content, but is there anything better for the static content?
>
> > > > Use lighttpd for static content and Yaws (or MochiWeb) for dynamic 
> > > > content.
>
> > > > > 3.  Another major issue YouTube ran into was serving their
> > > > > thumbnails.  Each video can have about 4 thumbnails and each page,
> > > > > while having only one video playing, could have 40-60 thumbnails per
> > > > > page.  Thumbnails, unlike video, aren't distributed across hundreds of
> > > > > machines (due to their size).  So, you have lots of requests per
> > > > > second and tons of disk seeks.  Apache didn't really work out, so they
> > > > > then went to a modified version of lighttpd that put the disk reads
> > > > > into worker threads -- but they ran into issues with that as well.
> > > > > They finally went to Google's BTFE.  How would Erlang look at this
> > > > > problem -- would Yaws help at all?
>
> > > > I'm not too familiar with this problem, but if it's static data, it's
> > > > generally better to serve if from lighttpd than Yaws.
>
> > > Agreed LightHttpd or apache will outperform Yaws with static content.
> > > If its lots of small files/images look at using a cache like server
> > > with lots and lots of RAM also consider using solid state disks (SSDs)
> > > in Raid 0 configs, these are much faster than traditional disks for
> > > random small files, they blow away performance of even 15K scsi arrays
> > > for this job, as seeks on SSD flash are near zero in comparison. The
> > > limit here is capacity. You can get 64GB SSDs with Sata interfaces
> > > (Sata II soon from Samsung) raid these up with Sata Raid Boards on
> > > fast PCIe interfaces + built in Sata ports in a mirror config You will
> > > be surprised at how kick ass fast these are for the job. You also need
> > > good server Gigabit ports that can be aggregated.
>
> > > > > 4.  They use MySql to store metadata, but as the site got huge, they
> > > > > ran into some issues with it.  They went from having one database to
> > > > > doing db replication.  That caused issues eventually, one of them
> > > > > being that spreading read load (being asynchronous) caused the
> > > > > database to serve outdated data from time to time. They then went to
> > > > > partitioning the database into shards.  Overall, though, they're
> > > > > running into issues due to the fact that they're trying to do more and
> > > > > more stuff with the data.  For example, recommendation systems and
> > > > > data mining gets really hard on 100s of millions of views per day, so
> > > > > they are needing some solutions that can do parallel queries and
> > > > > handle distributed computation.  Would Mnesia be able to help handle
> > > > > these issues, or anything else from the Erlang world that could deal
> > > > > with these issues?
>
> > > > Mnesia is more suited for storing live session data than large amounts
> > > > of persistent data. And Mnesia isn't really suited for data mining --
> > > > just for simple queries. However, Erlang helps in that it allows you
> > > > to connect to multiple databases using its great connection pooling
> > > > capabilities (a process is spawned for each database connection, and a
> > > > dispatcher process is responsible for routing queries to connection
> > > > processes). If I were building YouTube in Erlang, I would consider
> > > > doing all replication and partitioning work in the application code
> > > > rather than relying on the database engine.
>
> > >  Use flat files for the metadata and cache them where possible across
> > > machines, consider an appending meta file storage controller (write it
> > > yourself) and file formats that enable appending rather than editing.
> > > The trick heres is to only append to files where possible, editing is
> > > expense (Well percolating the changes is).Break the files up like you
> > > would database tables and crate summarized view files for common
> > > queries.
>
> > > If there is a lot of data +  analysis consider something like a map
> > > reduce pattern to create views on the backend, erlang is excellent for
> > > this sort of stuff, blows the socks of most others.
>
> > > regards
> > > Al
>
> > > Regards
> > > Al


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"erlyweb" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/erlyweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to