tags:

views:

504

answers:

4

Hello all,

I am architecting a software project and I want to create a SAAS (Software As a service) one. I want to model my application along the lines of Salesforce. I really like there customization features but I am not sure how they really go about it. I read that they create an ID for every field that is required and then store the corresponding data too. Can anyone guide me as to how this is possible. For example, if I want to store an employee record. 2 fields (firstname, lastname) are already given and the user adds a third field(say DOB), how is data going to be stored?

I would also appreciate if someone could give me some resources to practical examples of implementing a SAAS architecture.

Thanks

+2  A: 

SaaS really has nothing to do with customization features like in SalesForce. You probably need to refine your question to get better answers.

SaaS simply means you design your software to be usable to multiple people at the same time over the web.

Customization features apply equally to web based applications, thick client applications, etc.

One common way to store user-specific extensions to basic entities is by using name value pairs. There are other ways as well. With name value pairs you might have a structure like this (rough outline to convey concept):

Employee

  • EmployeeID
  • FirstName
  • LastName

EmployeeUserFieldDefinitions

  • FieldName
  • FieldType
  • InputRestrictions (e.g. length)

EmployeeUserData

  • EmployeeID
  • FieldName
  • FieldValue
Eric J.
A: 

Why are you looking at creating one from scratch? You can use a fully multitenant saas architecture from vendors like LongJump.

dCheng
A: 

Eric is right. Don't worry about the customization piece as it is sunk regardless of whether you are pursuing a SaaS architecture or not. A SaaS architecture, beyond just tenantId, is a complex web of index optimizations, foreign key optimizations, and goes well beyond the DB into all tiers of your app.

We're looking at SaaSGrid from the folks at Apprenda, which basically pulls SaaS out as a cross-cutting concern in your architecture while letting you use a pure .NET architecture (this LongJump thing seems like an inflexible WYSIWYG (the new Frontpage?) mixed with some sort of scripting, and is Java based which won't help you if you are a .NET shop)

Aruntha Subra
A: 

I also agree with Eric. High customizability may be a plus for an SaaS architecture but it is not a must. I think that a must for an SaaS is multi-tenant architecture.

So, you should check out the Multi-Tenant Data Architecture article which was published by Microsoft. The article includes some patterns (Extensibility Patterns) about customizability too.

BTW, As dChengYou stated, you may not have to build it from scratch. i suggest you to review the Viravis as an alternative solution.

orka