Advice needed on how to setup a SAAS service for a php based application
I have worked with a certain php and mysql based crm application for a while as a developer and know it inside out. I have an idea to offer an on-demand saas based hosted version where the client and can purchase a plan based on the number of users. They will simply click a button and this will automatically spin up and deploy a brand knew instance of the application for them and they will then be able to log in and use the software but wont have any access to the actual web space apart the ability to download a dump of there data anytime they want. It will automatically assign a sub-domain and email them their login details when its ready. I basically want it to be as autonomous as possible.
I think I have three possible ways to go about this:
We'll use digital ocean as an example provider
- I could have one or multiple VM's or droplets and set up each user's software in a different virtualhost - this way I can host multiple instances of the software on each droplet lowering costs.
- Create a new droplet for each user - this provides additional flexibility and is easier to configure but is a bit more costly
- Use Docker and scalable cloud hosting to set up each users software in a different container.
Out of all 3, number 3 is the most appealing to me but the one I know least about.
But realistically what is the best way to go about this?
The application can be quite database heavy if it has lots of data and users. Ill also have to consider that the clients can install additional custom modules in the the application and that Ill need a way to upgrade the version on mass when bug fix releases come out etc.
Regarding option 1, does such a script or software already exist that will let me create virtual hosts and deploy a php application within it automatically at the click of a button?
I know option 2 could be done using a snapshot of a droplet and some custom scripts using the Digital ocean api.
Regarding Option 3 I'm all ears?
All advice welcome thanks?