views:

46

answers:

1

Hey all so I am working on a project and I won't get into the details but it will be programmed/designed by me and will allow customers to sign up for their own instance of it where they will be able to customize it. Think of it as something along the lines of phpbb where they are a bunch of them being hosted by me that clients will pay a monthly fee for and will get a subdomain for their version of the project.

I am trying to decide how I am going to set this up on the server side and see these options:

1) Host everything on one or two servers

Pros

  • Easy to push out changes since everything is on the same box
  • Getting the subdomains to point to the same place will be a snap since there will only be one place that the source code lives and only one database
  • Users will be able to use a global login for all clients since because there is only one users table

Cons

  • Scaling will get hairy quickly since all the traffic will be on a single box
  • Database queries will be slow because of high row counts (there would be a client_id field for most things to ID which data belongs on which subdomain)

2) Take advantage of EC2, Rackspace Cloud or something similar

Pros

  • Scales like a dream

Cons

  • I just don't have the experience with the platform to be able to foresee all issues (yes I know, lame excuse)
  • Unsure how I would be able to push out new versions to all instances
  • Unsure if I could somehow set it up so that as soon as a client paid they would immediately have their instance set up and good to go
  • Don't know how I could implement a global login system (although 37signals seem to do it)

It seems like the best option is something cloud-ish and the only real issue is my lack of experience.

Has anyone ever launched something like this? What did you do? Any problems I'm not thinking about?

A: 

Just a quick data point to help you decide... Amazon restricts you to one IP address per EC2 instance. If you need to have multiple white label domain names and DNS, you'll need a new instance for each white label.

Scott Bargabus