locked
Best fit architecture for a single application to serve multiple clients with different business needs RRS feed

  • Question

  • User-1067017023 posted

    Hi,

    I need to develop an application for managing academic and other records of different schools, all run by the same management.

    The challenge here is, even though all of them are run by the same management, each school follows a different system of education, with different syllabi, marking systems, different kinds of facilities, and so on. So even though there are similarities, each school would follow different business logic, different kinds of database structures, and even different kinds of UI. It is almost like making different applications for each school. But I am constrained to fit everything into a single application.

    What kind of architecture seems a best fit for this scenario? Different kinds of table structure, different kinds of business logic, and different kinds of UI in a single application, depending upon the customer that it serves.

    I took a brief look at multi - tenant architecture links on the web, such as this one at:

    http://msdn.microsoft.com/en-us/library/aa479086.aspx

    But the above link seems to be focussed on cloud applications, and discusses only database architecture. Besides, I don't know if multi tenant is the best fit for this scenario.

    Seek your suggestions and ideas on how best to architect this application, in view of the constraints.

    Any help with the above would be greatly appreciated!

    Wednesday, July 17, 2013 6:46 AM

Answers

  • User157745976 posted

    Hi Ringoo,

    it seems that your question is about 'Application Isolation Policy', because you want to make this single ASP.NET application in IIS.

    For this case, you can check if they want to use a single URL, or different URL's for each school, such as

    http://www.theschools.edu , or
    http://school1.theschools.edu, http://school2.theschools.edu

    By doing this, you can set number of sites that you need to create.
    If they need a unique url, create a web site for each school, using host headers as a site identifier,
    and associate one web application for each site.

    If they are okay with an integrated url, like http://www.theschools.edu, then, you can create multiple application pools(=web applications, such as school1app, school2app), it's ok to let web applications indicate your single applications, or contents,
    and let users to be routed to a pre-configured web applictaion, as follows,

    . Users from school1 -> http://www.theschools.edu/school1 , and configure web applications, and contents are to be handled by 'school1app' web application pool that you already created. This is a similiar pattern of a virtual directory with a dedicated process in IIS6.

    By doing this, you can host multiple web sites with a dedicated application pool for the site, or an integrated web site with application pools for each school. This can be a architecture, can be supported by cloud service provider. Note that the name of application pool that you create in IIS manager, is a useful application process identifier, that can be checked in Windows Task Manager(User column), or 'appcmd list wp' command in a command prompt.

    hope this helps.

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Sunday, July 21, 2013 6:16 AM

All replies

  • User1751268424 posted

    Hi,

    For a single application, can be done, but it become very difficult to manage. Even if we design in a single solution, it is only a bit easier to manage.

    In a web application it can be done look like in a single application, we need to make it navigateable between sub applications. This is the best approach. This approach is easier to manage.

    Just a small idea that may help.

    Wednesday, July 17, 2013 7:12 AM
  • User-488622176 posted

    I've done similar things in the past, applying these principles:

    • One application
    • One dbase per school, containing the school specific data (isolation level)
    • Defina a configurable meta model that offers enough flexibility to configure these items per school, and store this in the school specific dbase.
    Wednesday, July 17, 2013 7:26 AM
  • User-1067017023 posted

    Thanks for all your replies.

    I have a question here about multi tenant architectures - can they be implemented only in a cloud environment? Or can they be implemented in any environment? Almost all the searches I have done on the web seem to discuss them only in the context of cloud and saas.

    Please let me know if there are any resources/links that discuss them. But I must admit here, I don't know if they fit this scenario in the first place. If other architectural archetypes solve the problem better, please let me know.

    Wednesday, July 17, 2013 7:53 AM
  • User-488622176 posted

    Multi-tenancy is just an architectural principle that can be applied independently of cloud or local applications. However, it is more widely used in cloud applications in order to allow hosting parties to offer a shard application infrastructure to multiple clients. This allows hosting parties to provide a scalable infrastructure (webservers, dbase farm) with one application, and the application will take care of the differences between instances ("tenants"). You can use infrastructure resources much more efficiently like this (alternative: 1 server/farm per client app ?)

    Friday, July 19, 2013 8:01 AM
  • User157745976 posted

    Hi Ringoo,

    it seems that your question is about 'Application Isolation Policy', because you want to make this single ASP.NET application in IIS.

    For this case, you can check if they want to use a single URL, or different URL's for each school, such as

    http://www.theschools.edu , or
    http://school1.theschools.edu, http://school2.theschools.edu

    By doing this, you can set number of sites that you need to create.
    If they need a unique url, create a web site for each school, using host headers as a site identifier,
    and associate one web application for each site.

    If they are okay with an integrated url, like http://www.theschools.edu, then, you can create multiple application pools(=web applications, such as school1app, school2app), it's ok to let web applications indicate your single applications, or contents,
    and let users to be routed to a pre-configured web applictaion, as follows,

    . Users from school1 -> http://www.theschools.edu/school1 , and configure web applications, and contents are to be handled by 'school1app' web application pool that you already created. This is a similiar pattern of a virtual directory with a dedicated process in IIS6.

    By doing this, you can host multiple web sites with a dedicated application pool for the site, or an integrated web site with application pools for each school. This can be a architecture, can be supported by cloud service provider. Note that the name of application pool that you create in IIS manager, is a useful application process identifier, that can be checked in Windows Task Manager(User column), or 'appcmd list wp' command in a command prompt.

    hope this helps.

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Sunday, July 21, 2013 6:16 AM
  • User-1067017023 posted

    Application isolation is only one of my concerns. Looked at on the whole, the different schools my application needs to serve have mutually exclusive UIs, mutually exclusive business logic and also mutually exclusive database table structures.

    Thanks for your inputs on application isolation, I'll definitely factor it into my design. I am currently looking on how to implement a multi - tenant architecture. Looks like it is a good fit for this case. But I am open to receiving better ideas too!

    Thanks again!

    Monday, July 22, 2013 2:56 AM
  • User-1067017023 posted

    Hi Ringoo,

    it seems that your question is about 'Application Isolation Policy', because you want to make this single ASP.NET application in IIS.

    Hi Joon,

    Annyeong Haseyo!

    At the UI layer, I am going with your idea of application isolation. At the database layer, I think I'll use schemas to achieve separation between the data models of the different schools (though you can give me better ideas, if you know them)!

    I'm looking for a good way to achieve the equivalent of application isolation at the WCF, business objects and data access layers.

    But still, I don't know whether the separations alone will help me to achieve a multi - tenant architecture. I'm still seeking for good ideas on how to do that.

    Thanks for your idea on application isolation once more Joon, Kamsahamnida! :-)

    After finishing this application, I guess I'll spend some more time learning Korean! :-)

    Ringoo

    Monday, July 29, 2013 4:42 AM
  • User157745976 posted

     

    Hi Ringoo,

    I'm glad to hear that, thanks for your feedback, and don't forget my suggestion to be marked as the answer.
    maybe, your learning Korean plan is to communicate with someone else, isn't it? :)

    Good luck to you & tenants in your app. :)

    Monday, July 29, 2013 5:11 AM