Fog Creek Software
Discussion Board




ISP architecture for application servers?

I wondered how people structure customers
who use application servers in an ISP environment.

I am assuming every customer doesn't get their
one instance of the application server? That
would be pretty heavy.

The crucial issue is where are data kept? Is all
data kept in the same tables with just a site name
key? This means any customer could look at any other
customer's data. Customers would probably not like
other companies using the honor system when access the database.

Do you run an instance of MySql (for example) for each
customer?

Do you clone the tables for each customer and give them
customer prefixed names?

Does each customer get their own directory under webapps
or do you try and share the same one and key everything by customer name?

son of parnas
Monday, February 09, 2004

When I worked for an ASP, we had three different ways to partition user databases:

1.) Shared database server, but separate database schemas.  This was accomplished by using different usernames within the same Oracle instance, or different databases within the same Microsoft SQL Server instance.  This was the most common approach for securing our users' data.

2.) For another application we hosted, the DBAs decided it was easier to simply place each client's database on a completely different server.  So we had a couple hundred Oracle and Microsoft SQL Server databases sitting around.  Seems like a nightmare to maintain.  On the other hand, each server is simpler and more independent, and you're less likely to have one database die and affect all your servers.  Scripting can help install updates on multiple servers at once.

3.) We had one client that wanted to run ten separate instances of our application, and have them all completely independent, but wanted them all to exist within the SAME Oracle schema.  (I'm still not quite sure why.)  Oracle9i has some features where it adds a key to every table, and then based on your user permissions, you can only see the data that belongs to you.  You could also probably enforce this partitioning scheme on other database platforms by using views.

Hope this helps!

Ryan
Monday, February 09, 2004

Thanks ryan, that does help. Hard to imagine
100s of servers running though. That's a lot
of RAM!

son of parnas
Monday, February 09, 2004

http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=108770&ixReplies=2


Monday, February 09, 2004

*  Recent Topics

*  Fog Creek Home