Hi Isomorphic,
can you share your best practice / advice on this one?
We are making a SaaS based on SmartGWT. Right now, this means an (easy, because automated) build of ~30x 50 MB test and customers war files (takes 15min, only one run of gwtc needed) and upload of it (1,5 GB).
This works, but is a tedious and annoying task that does not scale.
So the idea is to move all the customers to 1 WAR. This means the following tasks:
Can you give you thoughts on 1/2/3? Do you see a problem here?
I'm sure that these two things would solve all potential issues:
Do you know of a customer / project doing a similar thing with the framework?
Thank you & Best regards
Blama
can you share your best practice / advice on this one?
We are making a SaaS based on SmartGWT. Right now, this means an (easy, because automated) build of ~30x 50 MB test and customers war files (takes 15min, only one run of gwtc needed) and upload of it (1,5 GB).
This works, but is a tedious and annoying task that does not scale.
So the idea is to move all the customers to 1 WAR. This means the following tasks:
- All customer specific code must come from the DB
- All customer specific "files" (e.g. HTML mail templates) must come from the DB
- All customer specific field names must come from the DB
- Application must use DB access that can access all data (before I used separate schemas), WHERE clause set in SQLDataSource
- Login must use DB access that can access all users (before I used separate schemas)
- Mail server must be dynamic per customer (see here, either by extension of the framework or by sending the mail oneself)
- Internal code changes for stuff that assumed to get back data for only one tenant
- Make sure Dynamic DataSources (same name, different result per customer), which might get cached, work as expected
- Make sure Dynamic field title (this feature sponsorship) works as expected (same DataSource name, different result per customer)
- Make sure the new feature you built in 12.0 caches only for one click of "upload" (strongly assume so)
Can you give you thoughts on 1/2/3? Do you see a problem here?
I'm sure that these two things would solve all potential issues:
- Disable pooling like described here in server.properties OR
- Make ALL DataSources dynamic and add them a suffix of "_xxx", where xxx is the customer number. Then only use this numbered access and rewrite all ID, foreignKey and includeFrom (more?) accordingly in the generator.
Do you know of a customer / project doing a similar thing with the framework?
Thank you & Best regards
Blama
Comment