locked
Architecture Advice RRS feed

  • Question

  • User715348277 posted

    Hello, I am getting ready to embark on my first multi tenant Saas endeavor that i am going to actually release and try to sell monthly subscriptions too.

    I'm nervous! I am confident in my db schema setup, but some things that i've never dealt with are multi threading, shared network connections and stuff like that i've read with regards to saas apps being fast.

    I want to get some feedback on my intended architecture path to see if it sounds like a good/bad roadmap. Any advice on books/sites to read would be great also. How does this sound?

    1- Sql 2005 Professional

    2-Rackspace as my host/dedicated server provider. Initially one box for db and IIS(server 2003). When i exceeded 5000 registered users getting a second box to separate db and IIS?

    3-Code in asp.net 3.5 /(vb backend, its what i know). Lots of jquery sprinkled in.

    4-Use codesmith plinqo for data access layer

    Thanks!

    Thursday, January 28, 2010 1:20 PM

Answers

  • User-1244254729 posted

    hi dotnetpeter,

    I would advise to use codesmith, but code you're own datalayer architecture. I've done it before and if you do it well 99.9% of the ORM tools will not provide any value at that point only complexity.
    Less different technology between your code and the framework will set you up for some speed and full control of your design decisions.
    Also if you would like to scale out, avoid using the embedded session state, but leverage the sessionid to create your own typesafe session object.
    You could even let a httpmodule load your custom session-state in a per thread object and it will be available through-out your code. Loading it on recieving the page and saving it when sending it. 

    For authentication with a simple application, just use the embedded membership provider solution, It covers almost everything you need.

    For the number of boxes, it only depends on the number of concurrent users, the only way you are going to know when you need it is by monitoring your resources.

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Friday, January 29, 2010 2:59 PM

All replies

  • User-1450380526 posted

    For data access layer I will suggest for LLBLGENPRO rather than codesmith,

    Although both are good but LLBLgen seems to be a good option if u want to do with ORM tools, rest seems to be fine

    Friday, January 29, 2010 12:44 AM
  • User715348277 posted

     thanks jdmalik, i'll take a look at that product again. Any advice on threading, user authorization techniques? I was looking at the road of creating some session variables with the company id, user id, then having all data presented simply based on passing those values in the queries. Any other advice or books you could recommend? Also, anything that was a 'gotcha' on another project? Thanks so much!

    Friday, January 29, 2010 10:01 AM
  • User-1244254729 posted

    hi dotnetpeter,

    I would advise to use codesmith, but code you're own datalayer architecture. I've done it before and if you do it well 99.9% of the ORM tools will not provide any value at that point only complexity.
    Less different technology between your code and the framework will set you up for some speed and full control of your design decisions.
    Also if you would like to scale out, avoid using the embedded session state, but leverage the sessionid to create your own typesafe session object.
    You could even let a httpmodule load your custom session-state in a per thread object and it will be available through-out your code. Loading it on recieving the page and saving it when sending it. 

    For authentication with a simple application, just use the embedded membership provider solution, It covers almost everything you need.

    For the number of boxes, it only depends on the number of concurrent users, the only way you are going to know when you need it is by monitoring your resources.

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Friday, January 29, 2010 2:59 PM