Scaling an Aida/Web site?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Scaling an Aida/Web site?

sop soptwo

Hello,

I would like to know if it is possible to scale an application written with Aida/Web.
With Ruby On Rails, several Mongrel server are load balanced with Apache.

I would like to know if it is possible to do something siimilar, but it doesn't seem to be possible
because a lot of objects are stored into the image (urls, users and groups, etc)...

Is there a solution to this problem (without using Gemstone of course)?

I ask this because I don't want to use a framework that doesn't scale...

Any help is welcome.


Sebastien

_________________________________________________________________
Téléphonez gratuitement à tous vos proches avec Windows Live Messenger  !  Téléchargez-le maintenant ! 
http://www.windowslive.fr/messenger/1.asp
_______________________________________________
Aida mailing list
[hidden email]
http://lists.aidaweb.si/mailman/listinfo/aida
Reply | Threaded
Open this post in threaded view
|

Re: Scaling an Aida/Web site?

Janko Mivšek
Salut Sebastien, welcome to the list!

sop soptwo wrote:

> I would like to know if it is possible to scale an application written with Aida/Web.
> With Ruby On Rails, several Mongrel server are load balanced with Apache.

Yes, you can scale similary, with many images running behind a load
balancer like Apache. Proven in practice!

Mogrel is in our case called Swazoo web server and is part of Aida by
default. What you need is to configure load balancer for session
affinity, so that each session will always run on the same image. Also,
Aida is capable to run thousands of sessions, at a rate up to 35
requests/s, per one image! See
http://www.aidaweb.si/aidaweb-benchmarks.html, also
http://www.swazoo.org/benchmarks/swazoo-vs-apache.html

> I would like to know if it is possible to do something siimilar, but it doesn't seem to be possible
> because a lot of objects are stored into the image (urls, users and groups, etc)...

All this can be put in some database. Contrary to RoR Aida doesn't
handle RDB persistence by default and it leaves this duty to the domain
model. Also you'll extend URLResolver (for urls) and WebSecurityManager
(for users/groups) for such purpose.

> Is there a solution to this problem (without using Gemstone of course)?

Solution is somewhere in direction as stated above, but I agree, we
should try to extend Aida with some ActiveRecord like framework so that
handling relational databases in a scalable way would be there out of
the box.

Problem is that currently we lack expertise on the RDB field and I'd
really hope we will find someone soon.

> I ask this because I don't want to use a framework that doesn't scale...

Don't worry, with appropriate design of domain model and it's
persistence you can scale as much as you want!

Best regards
Janko

--
Janko Mivšek
AIDA/Web
Smalltalk Web Application Server
http://www.aidaweb.si
_______________________________________________
Aida mailing list
[hidden email]
http://lists.aidaweb.si/mailman/listinfo/aida
Reply | Threaded
Open this post in threaded view
|

Re: Scaling an Aida/Web site?

Nicolas Petton
In reply to this post by sop soptwo
Hi,

I did some experiements some weeks ago to see how Scribo can scale with
a Magma repository.


The cool thing with Magma is that your objects work like if they were in
your image.

I put the Scribo repository, the UrlResolver, WebSecurityManager and
WebIndex in a Magma repository.

This repository was shared between 5 Squeak VMs.

I used Apache for load balancing, and I wrote a small bash script to
make sure that user sessions are always in the same vm, with a cookie.

So, when a request came, the script checked for this cookie, and if it
find it, redirect to the right VM. If not, use the load balancing, and
then AIDA started a session, with a cookie for the next request.

I can say that it worked great!

According to httperf, this setup can handle 150 requests per second :)

The script and Apache configuration was adapted from this one by Ramon
Leon for Seaside:
http://onsmalltalk.com/programming/smalltalk/seaside/scaling-seaside-more-advanced-load-balancing-and-publishing/

Cheers!

Nico

--
Nicolas Petton
http://nico.bioskop.fr
            ___
          ooooooo
         OOOOOOOOO
        |Smalltalk|
         OOOOOOOOO
          ooooooo
           \   /
            [|]
--------------------------------
Ma clé PGP est disponible ici :
http://nico.bioskop.fr/pgp-key.html

_______________________________________________
Aida mailing list
[hidden email]
http://lists.aidaweb.si/mailman/listinfo/aida

signature.asc (204 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Scaling an Aida/Web site?

Nicolas Petton
When I'll have time, I will write a detailed article on my blog about
this :)

Nico

Le jeudi 16 octobre 2008 à 13:15 +0200, nico a écrit :

> Hi,
>
> I did some experiements some weeks ago to see how Scribo can scale with
> a Magma repository.
>
>
> The cool thing with Magma is that your objects work like if they were in
> your image.
>
> I put the Scribo repository, the UrlResolver, WebSecurityManager and
> WebIndex in a Magma repository.
>
> This repository was shared between 5 Squeak VMs.
>
> I used Apache for load balancing, and I wrote a small bash script to
> make sure that user sessions are always in the same vm, with a cookie.
>
> So, when a request came, the script checked for this cookie, and if it
> find it, redirect to the right VM. If not, use the load balancing, and
> then AIDA started a session, with a cookie for the next request.
>
> I can say that it worked great!
>
> According to httperf, this setup can handle 150 requests per second :)
>
> The script and Apache configuration was adapted from this one by Ramon
> Leon for Seaside:
> http://onsmalltalk.com/programming/smalltalk/seaside/scaling-seaside-more-advanced-load-balancing-and-publishing/
>
> Cheers!
>
> Nico
>

_______________________________________________
Aida mailing list
[hidden email]
http://lists.aidaweb.si/mailman/listinfo/aida

signature.asc (204 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Scaling an Aida/Web site?

Janko Mivšek
Nico, this is really good reference for Aida scalability and it would be
nice if you publish also the code. Is your work part of
ScriboPersistence effort?

Maybe we can make an AidaMagmaPersistence package to store those   basic
Aida data like security settings, users/groups, urls ...

Janko

nico wrote:

> When I'll have time, I will write a detailed article on my blog about
> this :)
>
> Nico
>
> Le jeudi 16 octobre 2008 à 13:15 +0200, nico a écrit :
>> Hi,
>>
>> I did some experiements some weeks ago to see how Scribo can scale with
>> a Magma repository.
>>
>>
>> The cool thing with Magma is that your objects work like if they were in
>> your image.
>>
>> I put the Scribo repository, the UrlResolver, WebSecurityManager and
>> WebIndex in a Magma repository.
>>
>> This repository was shared between 5 Squeak VMs.
>>
>> I used Apache for load balancing, and I wrote a small bash script to
>> make sure that user sessions are always in the same vm, with a cookie.
>>
>> So, when a request came, the script checked for this cookie, and if it
>> find it, redirect to the right VM. If not, use the load balancing, and
>> then AIDA started a session, with a cookie for the next request.
>>
>> I can say that it worked great!
>>
>> According to httperf, this setup can handle 150 requests per second :)
>>
>> The script and Apache configuration was adapted from this one by Ramon
>> Leon for Seaside:
>> http://onsmalltalk.com/programming/smalltalk/seaside/scaling-seaside-more-advanced-load-balancing-and-publishing/
>>
>> Cheers!
>>
>> Nico
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Aida mailing list
>> [hidden email]
>> http://lists.aidaweb.si/mailman/listinfo/aida

--
Janko Mivšek
AIDA/Web
Smalltalk Web Application Server
http://www.aidaweb.si
_______________________________________________
Aida mailing list
[hidden email]
http://lists.aidaweb.si/mailman/listinfo/aida
Reply | Threaded
Open this post in threaded view
|

Re: Scaling an Aida/Web site?

Nicolas Petton
Le vendredi 17 octobre 2008 à 10:04 +0200, Janko Mivšek a écrit :
> Nico, this is really good reference for Aida scalability and it would be
> nice if you publish also the code.

Hi Janko,

Sure I can publish the code. I didn't keep it, because it was just
really basic subclasses of UrlResolver etc that committed changes.
It won't take much time to rewrite them.

>  Is your work part of
> ScriboPersistence effort?

No, it was part of "playing with Magma before working on the
MagmaPersister" effort.
>
> Maybe we can make an AidaMagmaPersistence package to store those   basic
> Aida data like security settings, users/groups, urls ...

Why not :)

Nico
--
Nicolas Petton
http://nico.bioskop.fr
            ___
          ooooooo
         OOOOOOOOO
        |Smalltalk|
         OOOOOOOOO
          ooooooo
           \   /
            [|]
--------------------------------
Ma clé PGP est disponible ici :
http://nico.bioskop.fr/pgp-key.html

_______________________________________________
Aida mailing list
[hidden email]
http://lists.aidaweb.si/mailman/listinfo/aida

signature.asc (204 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Scaling an Aida/Web site?

Nicolas Petton
In reply to this post by Janko Mivšek
Le vendredi 17 octobre 2008 à 10:04 +0200, Janko Mivšek a écrit :
> Nico, this is really good reference for Aida scalability and it would be
> nice if you publish also the code. Is your work part of
> ScriboPersistence effort?
>
> Maybe we can make an AidaMagmaPersistence package to store those   basic
> Aida data like security settings, users/groups, urls ...

I also think that it would be nice to move the ScriboPersistence package
to AidaPersistence to store all objects, and just extend the package in
Scribo.


Masashi, what do you think?


Cheers!

Nico
--
Nicolas Petton
http://nico.bioskop.fr
            ___
          ooooooo
         OOOOOOOOO
        |Smalltalk|
         OOOOOOOOO
          ooooooo
           \   /
            [|]
--------------------------------
Ma clé PGP est disponible ici :
http://nico.bioskop.fr/pgp-key.html

_______________________________________________
Aida mailing list
[hidden email]
http://lists.aidaweb.si/mailman/listinfo/aida

signature.asc (204 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Scaling an Aida/Web site?

Masashi UMEZAWA-2
Hi Nico,

2008/10/17 nico <[hidden email]>:

> Le vendredi 17 octobre 2008 à 10:04 +0200, Janko Mivšek a écrit :
>> Nico, this is really good reference for Aida scalability and it would be
>> nice if you publish also the code. Is your work part of
>> ScriboPersistence effort?
>>
>> Maybe we can make an AidaMagmaPersistence package to store those   basic
>> Aida data like security settings, users/groups, urls ...
>
> I also think that it would be nice to move the ScriboPersistence package
> to AidaPersistence to store all objects, and just extend the package in
> Scribo.
>
>
> Masashi, what do you think?

I prefer that AIDA has its own simple persistence support.
ScriboPersistence is basically designed for Document objects, so it
would need some efforts for supporting more generic objects.

I think simple XML format is preferable for storing AIDASite settings,
SecurityManager accounts, etc. XML is portable among platforms and
editable by normal site-administrators.

Probably I can add some SIXX methods to AIDASite, WebUser, etc for
simple persistence. After that, let's reconsider if we can integrate
it with ScriboPersistence.

Cheers,
--
[:masashi | ^umezawa]
_______________________________________________
Aida mailing list
[hidden email]
http://lists.aidaweb.si/mailman/listinfo/aida