Monolithic web application design

Assuming that I have some sort of enterprise accounting software system(web application).

I have many individual companies/customers that use this system.

So each company when they use the system. They use it to perform those financial related transactions. E.g. keep track of who they make payment to, keep track who are their creditors and debtors etc.

Design #1:

I as the owner of this software system, is the ‘super admin’ of this entire web application.

The web application is designed in such a way that I as the super admin can use the user interface on the web app to adjust the settings and configuration for each of my customer using my system.

An example of the page I see when I login as the super admin is below:

enter image description here

I as the super admin can go in and adjust the configuration for each company.

I as the super admin can also access another kind of control panel which I adjust some settings which applies to multiple or all my customer at once.

The system is designed in such a way that each company can have their own ‘administrator’ who can modify the settings that affect only their own company and their own users.

The database design is generally a ‘monolithic structure’. 1 database with more than 50 plus tables which of course caters to roles and privileges of the different users in the entire web application.

I can appreciate the certain control the super admin has over all the companies. There is some level of convenience as he/she can maniupate the entire web app based on whatever the customers tell him/her.

Design #2

My question is what happens if I design a similar kind of accounting software system. But the way I do it is, I create a database of each company and there is no super admin user interface for me to maniuplate my customer’s system.

If I have 10 customers. I have 10 database, then each database will have a less complicated database design.

Then I use version control to control the source code and database design for my 10 unique customers.

I am curious what is general pros and cons of this 2 designs.

Is there a difference on how the web application can be ‘distributed’ across multiple application server/database server for these 2 different design?

I ask this question because I have only a limited understanding of how a software system can be ‘divided across multiple servers’ to make sure the system performance is good.

Thank you.

Go to Source
Author: jin cheng teo