views:

611

answers:

6
+10  Q: 

Does Seaside scale?

Seaside is known as "the heretical web framework". One of the points that make it heretical is that it has much shared state. That however is something which, in my current understanding, hinders easy scaling.

Ruby on rails on the other hand shares as less state as possible. It has been known to scale pretty well, even if it is dog slow compared to modern smalltalk vms. flickr uses php and has scaled to an extremly big infrastructure...

So has anybody some experience in the scaling of Seaside?

A: 

From the Wikipedia article, it's a total pig. Prior to that, it hadn't scaled to the point where I'd heard of it. :)

John Lockwood
what's a total pig?
Richard Durr
"resource hog" :P
alex
+10  A: 

Ramon Leon shares some of his experience on upscaling seaside on his (excellent) blog. You can read very concrete ideas with sample code about configuring and tuning seaside.

Enjoy :-)

http://onsmalltalk.com/scaling-seaside-more-advanced-load-balancing-and-publishing http://onsmalltalk.com/scaling-seaside-redux-enter-the-penguin http://onsmalltalk.com/stateless-sitemap-in-seaside

Bernard Notarianni
+8  A: 

http://dabbledb.com/ seems to scale quite well. Moreover, one can use GemStone GLASS to run Seaside.

Damien Cassou
Well … dabbledb is somehow special, for it runs a separate VM for each customer. I don't think that's the ordinary meaning of "scale." And for GLASS, well, it scales like LAMP, not like google.
nes1983
+3  A: 

I would rephrase your question slightly to: does Seaside prevent/discourage you from creating applications that scale? I would say usually no. Seaside doesn't have a default way to store your data (just like php on its doesn't, though Seaside gives you a few extra options) and my impression is interacting with your data tends to be the biggest hurdle when it comes to scaling.

If you want to store your data in a monolithic SQL db, like with rails, you can do that. Or you can use an object database. Or you can use a separate object database for each user, or separate db for each project, or a separate db for each user and project. Or you can store everything in a series of flat files or you can just store your data as objects in your VM's memory.

And because of continuations you don't need re-fetch your data out of your datastore on every webpage call. As when you are using a desktop application you can pull data out of your datastore when your user begins interacting with it, set the appropriate variables, and then use those variables between webcalls until the user is done with the data at which point you can update the datastore. When you don't share state you have to hit the datastore on every single webcall.

Of course this doens't mean scaling is free, it just means you have a larger domain in which to search for scaling solutions.

All that said, for many applications rails will scale much easier simply because there exist large hosting solutions for rails (and php for that matter) that will offer you a huge amount of resources without having to rent and setup a custom box.

These are just my impressions from reading and talking to people.

Steven Noble
The price for continuations and sessions can be paid by not having to restore state on every request, you suggest? Interesting.
Richard Durr
That's a good way to put it, and I think it is worth noting where it is repaid. It lifts load off of the central datastore and transfers the load to an application server - of which you can add more. These are the sorts of transfers that you want to make when you are thinking about scaling since you can always add additional application servers.So even if continuations cost more than hitting the db on every webpage call it is still a scaling win if you are transfering that hit away from a central point of failure.
Steven Noble
+6  A: 

On this interview Avi Bryant the creator of Seaside and Co founder DabbleDB Explains how they make it scale.

From what I understand:

  • each customer has it's own Squeak Image.

  • When a customer comes Apache decides based on the user name which port to send it to.

  • Based on the port it starts the customer's Squeak Image.

  • That way it can grow to an infinite number of servers.

I think this solution works for them based on the specifics of their application each customer doesn't need to share info between them. So no need for o centralized DB.

Anyway it is better to watch the interview rather than my half-made summary.

elviejo
+3  A: 

Yes, Seaside scales down fantastically. A single developer can create and maintain complex applications for small groups very well.

Stephan Eggermont