Hi Dave,

Thanks for the feedback. The main reason ErlyWeb doesn't have an
ActionWebService equivalent is that nobody until now has expressed a
need for it. (Btw, I usually refrain from implementing features just
because other frameworks have them -- I like to avoid bload so I only
add features that I need or that other people ask for and/or volunteer
to contribute.) What kind of support do you want to see for web
services in ErlyWeb?

Yariv



On Nov 13, 2007 2:59 AM, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>
> 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