Products

Solutions

Resources

Partners

Community

Blog

About

QA

Ideas Test

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

Welcome to the DNN Community Forums, your preferred source of online community support for all things related to DNN.
In order to participate you must be a registered DNNizen

HomeHomeOur CommunityOur CommunityGeneral Discuss...General Discuss...Scalability / Continuous Integration / Alternate Installation MethodsScalability / Continuous Integration / Alternate Installation Methods
Previous
 
Next
New Post
6/14/2007 9:56 AM
 

We are going to be using DNN for a large project, including 20-40 in-house built modules, and a large # of Web sites (in the hundreds).  So, we have some serious questions about scalability, the possibility of continuous integration (Cruise Control) in production, and alternate ways to install DNN for easier management.

We'd like to install a single copy of DNN and potentially use it for hundreds of Web sites for easier management of releases.  However, I have heard that using portals to accomplish this has its own set of problems stemming from the possibility of changes in one portal affecting other portals, which is unacceptable.  Is this true?  If so, this leads to some questions.

1. Is it possible to override core or create a provider that changes how DNN knows what DNN database to connect to?  Like I said, we'd like to have a single copy of code installed and possibly multiple sites in IIS and based on the domain name, DNN knows what DNN database to connect to (rather than using portals in the same database).

2. Why are physical files created when portals are created in the /Portals/ folder?  It seems that they are just placeholders, but would cause serious problems if we configured DNN like stated in #1 with one copy of the code and multiple IIS sites.

3. Are there any other file system modifications in the course of an install, upgrade, or running the application that would hamper the single code-base, multiple IIS site configuration?

4. Is load balancing at the OS level or with a LB appliance possible?

In the case of how we'd like to configure DNN, we would not be installing modules through the module interface.  We'd like to make them part of our continuous integration script so that modules are "already installed" when an update occurs rather than needing to log into DNN, upload the ZIP, and wait.  Is this even possible?

 

Michael

 
New Post
6/14/2007 11:59 AM
 

If these seperate websites have seperate business processes and are given the ability to have additional or enhancements to modules based on their needs then you do not want to have them all using the same code base.  In other words, if you have them all using the same code-base, you will have to upgrade all of them, even if only one needs an upgrade for some reason.

Pointing multiple IIS websites at a single code base will also cause problems with Scheduled jobs being ran multiple times. Each IIS site will have it's own background thread running for the scheduler.

There is not a way in DNN to configure each portal to look at a different DB.  The architecture is one code base = one web.config = one set of Database tables = one IIS application.  There are provisions for including multiple sets of tables in the same DB using objectQualifier and databaseOwner, but not the other way around.

The only reason for creating a physical folder and a small stub file in that folder is for "child" portals.  This is so they can be addressed in the url as a subfolder of the "parent".  Inside DNN they are all just portals with tabs assigened to them.

If the only reason you are thinking about seperate Databases and IIS websites is because of performance and scalability, then I don't think you will acheive that goal with an architecture like you described.

In order to scale both vertically and horizontally you should consider multiple code-bases pointing to their own Databases.  You could still use continuous integration to roll out your changes to all instances, but then you would have the freedom to reconfigure as needed for load, etc.


DotNetNuke Modules from Snapsis.com
 
New Post
6/14/2007 12:20 PM
 

John Mitchell wrote

If these seperate websites have seperate business processes and are given the ability to have additional or enhancements to modules based on their needs then you do not want to have them all using the same code base.  In other words, if you have them all using the same code-base, you will have to upgrade all of them, even if only one needs an upgrade for some reason.

Actually, no, we want to upgrade all clients at the same time as our model is more like SaaS.  Our other applications that we have built have one code base for many clients to make management of deployments easier.  It does make management of enhancements/feature requests/bug fixes more difficult up-front, since we need to take into consideration all clients, but this is the dilemma with the SaaS model that we have accepted.

John Mitchell wrote
Pointing multiple IIS websites at a single code base will also cause problems with Scheduled jobs being ran multiple times. Each IIS site will have it's own background thread running for the scheduler.

This issue I was unaware of.  Thanks!

John Mitchell wrote
There is not a way in DNN to configure each portal to look at a different DB.  The architecture is one code base = one web.config = one set of Database tables = one IIS application.  There are provisions for including multiple sets of tables in the same DB using objectQualifier and databaseOwner, but not the other way around.

The only reason for creating a physical folder and a small stub file in that folder is for "child" portals.  This is so they can be addressed in the url as a subfolder of the "parent".  Inside DNN they are all just portals with tabs assigened to them.

If the only reason you are thinking about seperate Databases and IIS websites is because of performance and scalability, then I don't think you will acheive that goal with an architecture like you described.

In order to scale both vertically and horizontally you should consider multiple code-bases pointing to their own Databases.  You could still use continuous integration to roll out your changes to all instances, but then you would have the freedom to reconfigure as needed for load, etc.

One code-base would make scalability easier as you only have to make a copy of the code-base once to the other load-balanced Web servers, rather than a copy for each client multiplied by the # of servers being load balanced.  For us, this will pose a problem as there will be hundreds of Web sites that need to be load balanced within a few months of implementation.  It's easier when using CruiseControl, even in this scenario, but I wanted to avoid it if possible.  The more clients, the longer it takes to perform a deployment of new code.

I guess it wouldn't be so bad if we were assured that portals will work for handling multiple clients rather than needing to perform a new DNN installation for every one just to make sure their settings do not affect other portals.

 
New Post
6/14/2007 12:58 PM
 

Frank said:
I guess it wouldn't be so bad if we were assured that portals will work for handling multiple clients rather than needing to perform a new DNN installation for every one just to make sure their settings do not affect other portals.

John Replies:

The individual portals within one instance are segmented very well as long as you consider them all one application and it appears that you are implementing it that way. 
A couple questions that I would ask to confim this are:

                   Will the different clients expect the data in their portal(s) to be theirs?  It will be really difficult to segment the clients at the database level.
                   Along those same lines, what if one clients needs a restore of their data? It will be very hard to do that without setting all clients back to that restore point.

                  Will any clients be able to upload their own Skins? If you allow this without then they will also be able to execute code on the server so it would be a security risk.

                 

The main thing to be aware of if you use a single code base is that all your clients will be sharing the same application space and the same database, and all of their data will be mixed in the individual tables.

 


DotNetNuke Modules from Snapsis.com
 
New Post
6/15/2007 10:50 AM
 

To John's point the other item to consider is the fact that usernames must be unique over ALL portals!


-Mitchel Sellers
Microsoft MVP, ASPInsider, DNN MVP
CEO/Director of Development - IowaComputerGurus Inc.
LinkedIn Profile

Visit mitchelsellers.com for my mostly DNN Blog and support forum.

Visit IowaComputerGurus.com for free DNN Modules, DNN Performance Tips, DNN Consulting Quotes, and DNN Technical Support Services
 
Previous
 
Next
HomeHomeOur CommunityOur CommunityGeneral Discuss...General Discuss...Scalability / Continuous Integration / Alternate Installation MethodsScalability / Continuous Integration / Alternate Installation Methods


These Forums are dedicated to discussion of DNN Platform and Evoq Solutions.

For the benefit of the community and to protect the integrity of the ecosystem, please observe the following posting guidelines:

  1. No Advertising. This includes promotion of commercial and non-commercial products or services which are not directly related to DNN.
  2. No vendor trolling / poaching. If someone posts about a vendor issue, allow the vendor or other customers to respond. Any post that looks like trolling / poaching will be removed.
  3. Discussion or promotion of DNN Platform product releases under a different brand name are strictly prohibited.
  4. No Flaming or Trolling.
  5. No Profanity, Racism, or Prejudice.
  6. Site Moderators have the final word on approving / removing a thread or post or comment.
  7. English language posting only, please.
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out